民間, 道歉,如果這已被覆蓋在另一個線程,但我已經搜查ddd和mvc文章,並沒有找到一個直截了當的答案。關於DDD結構和分層。
我希望能夠將DDD方法應用於我的MVC項目的體系結構。請糾正我錯在哪裏。
所有涉及到域模型的MVC控制器操作最初都會打到 和應用程序服務層。 此處的應用程序服務層充當演示文稿和域之間的界面。 以後任何來自應用服務的明確涉及離散域聚合的請求將使用存儲庫對聚合根執行提取或修改操作。每個聚合根將擁有自己的存儲庫。
因此應用程序服務層必須注入域所需的任何/所有存儲庫。
如果一個操作可能涉及多個聚集或需要邏輯不適合整合到一個聚合中,那麼應用程序服務將調用一個域服務來跨聚合執行操作。
這看起來並不適合我。 我的困惑是,從DDD的角度來看,林不知道是否例如聚合根應該執行自己的持久性,即聚合獲取注入一個存儲庫,然後堅持/獲取本身或上面的應用程序服務層使用存儲庫行事或獲取聚合?
另外,如果應用程序服務層注入了所有的存儲庫,那麼應用程序服務層調用的域服務是否也需要注入存儲庫?
在這一點上我保持CQRS。我想先獲得分層和服務與聚合之間的關係。
感謝您的任何建議。
所以,我不應該打擾一個應用程序服務層,並將庫注入控制器。然後通過存儲庫注入控制器獲取和修改域對象?我現在關心的是控制器中有很多事情要做。試圖保持那些儘可能瘦的 – mikelus 2012-02-04 17:39:57
「控制器接收用戶輸入並通過*在模型對象*上進行調用來啓動響應」(來自wikipedia定義)。現在,如果您認爲控制器將承擔太多責任,則需要引入額外的層。另見http://stackoverflow.com/questions/3574992/mvc-ddd-is-it-ok-to-use-repositories-together-with-services-in-the-controller – guillaume31 2012-02-05 20:16:59
爲了完整,還有最近的Mark Seemann的博客文章強調了更多圖層的額外工作量,並質疑每種情況下都有很多圖層的相關性:http://blog.ploeh.dk/2012/02/09/IsLayeringWorthTheMapping.aspx – guillaume31 2012-02-12 00:22:07