Dot-Net

我應該在 DDD .NET 中為有界上下文使用單獨的項目嗎?

  • February 9, 2016

我們正在討論如何實現領域驅動設計。

為每個有界上下文使用單獨的項目是否有任何直接的缺點?

歡迎對我們的方法提出任何想法和建議。

所以它看起來像:

- 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 邊界和介面。有了它,以後移動東西就更容易了。

引用自:https://stackoverflow.com/questions/35235712