[英]3-Tier - Models reusing?
我正在創建一個具有這三個不同項目的應用程序:
ApiService (Web API 2)
BusinessLogic (Class Library)
DataAccess (Class Library)
ApiService
有對BusinessLogic
的引用BusinessLogic
引用了DataAccess
DataAccess
使用具有代碼優先方法的實體框架,因此它包含數據庫表的模型。
我的問題是,關於業務和服務項目模型的最佳方法或最佳實踐是什么?
我已經讀到 Service 項目不應該使用DataAccess
項目的模型,那么我應該在 Service 還是 Business 中創建該模型?
提前致謝。
始終將BL(Business logic)/Presentation layer
模型與DAL(Data access layer)
模型分開。
加入他們之間多了一個層,它會做的映射,使用Automapper或somethogn定制。 因此,當您將數據傳遞給DAL
模型時,將映射到實體模型,而當BL
從DAL
獲取數據時,將實體模型映射到BL
模型,
為什么?
您在數據庫中持久保存數據的方式可能與您將其呈現給用戶的方式大不相同。 數據可能必須從多個實體中獲取,通過關系連接,在運行時通過從其他表連接再次構建等。您將如何將其呈現給用戶可能會被簡化並且與持久化不同,因此您可以隱藏數據庫所需的復雜性。
我不知道這是否是最佳實踐,但我制作了許多項目,其中包含許多 Windows 服務、Web API 等之間的共享邏輯和功能。它們都遵循類似的內容:
包裝器 - 包含接口、模型和代碼,使從另一個 .NET 項目調用 WebAPI 更容易。 根本沒有對其他項目的引用
核心 - 包含所有豐富的業務邏輯。 服務層、數據訪問層、輔助類等。引用 Wrapper 和任何其他功能所需的東西
WebAPI - 僅包含圍繞模型/接口的Core References Wrapper 和業務邏輯的 Core 中的服務層函數創建 WebAPI 所需的代碼
其他使用 Core 的項目與 WebAPI 類似。 例如用於計划任務的控制台應用程序、用於持續數據處理的 Windows 服務等。
這導致我看到有些人稱之為“大型解決方案”或類似的東西,但只要您將代碼保留在一個域中,您就不會造成混亂。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.