[英]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.