簡體   English   中英

三層架構問題

[英]Three tier architecture question

我有一個具有三層體系結構的ASP.NET應用程序:

  • 表示層:ASP.NET

  • 業務層:C#庫。

  • 數據訪問層:具有以下功能的C#庫
    ADO.Net實體框架對象。

Bussiness層上的某些方法會返回ADO.NET實體對象,但是在Presentation層上看不到數據訪問層,我無法做到這一點。

我的問題是:在設計視圖上,在表示層中公開實體對象是否正確? 我想我只需要將數據層庫與ASP.NET應用程序鏈接。

謝謝!

絕對希望在表示層中可以使用和使用實體對象。 這就是所有工作的目的。

  • 將對象集合綁定到網格/列表視圖/下拉列表
  • 將單個對象(即客戶)飛濺到表單上以進行讀取/更新/刪除

到目前為止,這使您的生活更加輕松。 否則,您將不得不在表示層和業務層之間逐一傳遞字符串,然后再傳遞int字符串。

這些可能是實體對象,甚至是您自己的從實體對象中合並的POCO對象。

我什至可以說您的實體應該在與DAL分開的單獨組件中。

我認為不,不是,最好的方法是將數據類與行為分開,並僅在表示級別引用數據類。我認為使用WCF的好方法請參見此鏈接

我建議您研究一下“視圖對象...”或“數據傳輸對象”(DTO)的概念。 您可能會考慮使用類似AutoMapper或類似工具的工具,該工具將從您的實體中創建視圖特定的域對象。 通常,您的屏幕可能需要一個實體才能執行其工作。 但是,您經常需要傳遞幾個不同的實體。 在這種情況下,最好創建一個包含所有這些實體的DTO。 通過這樣做,您將在表示層和業務層之間添加一個隔離層。 通常,您的實體所擁有的功能比您可能希望展示在表示層上的功能更多。 反之亦然。 通常,您可能需要根據業務層中標記的某些驗證,將一些UI消息發送到表示層。 只能使用戶界面以DTO的形式傳遞,而不是使ui變得比所需的復雜(通過傳遞完整的實體)。 同樣,您的業務對象也無需關心表示層特有的任何內容。 我建議您不要將數據直接綁定到早於數據訪問層的任何內容。 從技術上講,您的表示層應該對您的業務層了解得最少。 在MVP或MVC的情況下,通過這種額外的分離方式來斷開前端和后端非常容易實現!

請參閱監督控制器被動視圖

如果您通過實體,那么您實際上就是監督控制器。 否則,您將成為被動視圖。

監督控制器工作量少,但可測試性差。 監督控制器還說數據綁定是可以的。 被動視圖是可以測試的,但是還有很多工作要做。 沒有數據綁定。 很多屬性。

通常,我堅持使用監督控制器。 通常,您不需要那種可測試性,並且不值得額外麻煩。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM