Dot-Net
我應該在 DDD .NET 中為有界上下文使用單獨的項目嗎?
我們正在討論如何實現領域驅動設計。
為每個有界上下文使用單獨的項目是否有任何直接的缺點?
歡迎對我們的方法提出任何想法和建議。
所以它看起來像:
- ProjectA.dll (User Context Web Service) - References - ProjectB.dll - ProjectB.dll (User Context Domain) - ProjectC (Web App) - References - ProjectD.dll - REST calls to ProjectA for User stuff - ProjectD.dll (Product Context Domain) - ProjectE.dll (Some Other Context) - Domain - Service - IService.cs - DTO - DTO A.cs - Entity - Entity A.cs - Entity B.cs - Repository - Repo.edmx我們正在考慮使一些有界上下文只能通過 Web 服務訪問,以允許可能獲得大量流量的區域的可擴展性。
這個問題的答案並不像最初看起來那樣直截了當。這是因為集成 BC 有不同的方法。
這個問題(和答案)很好地總結了這個問題:
一種方法是將整個應用程序視為 BC,另一種方法是僅將域邏輯視為 BC。
要回答您的問題,我們顯然必須區分兩者。
案例1:BC表現為整個應用程序
在這種情況下,您通常每個應用程序都有一個開發團隊(以及擴展的 BC)。因此,合適的 VS 解決方案和項目設置是為每個應用程序創建一個解決方案,並根據邏輯分層建構項目。
案例 2:BC 表現為領域邏輯庫
在這裡,如果整個應用程序不是太大,將所有內容放在一個解決方案中可能是有意義的。否則,根據需要將支持 BC 提取到他們自己的解決方案中。這通常是由團隊組織驅動的。
將此應用於您的案例,我認為您的建議是一個很好的起點。如果解決方案變得太大,您可以稍後將使用者內容取出並將其移動到專用解決方案中。這裡重要的是要有明確定義的 BC 邊界和介面。有了它,以後移動東西就更容易了。