[英]In CQRS pattern, should work go in domain services or command handlers
域服務是否應該注入其他域服務並在彼此之間工作,並使命令處理程序變得愚蠢。 或者,域服務應該是愚蠢的(僅用於連接存儲庫障礙),而大部分工作都在命令處理程序中完成? 什么是最佳做法...
我想說的是,將所有業務邏輯添加到域對象(如果功能不適合對象,還可以添加域服務),並對以下內容使用命令處理程序:
您可以檢查一下洋蔥體系結構 ,我想您的域服務在域模型中,而命令處理程序在應用程序服務中。
CommandHandlers可以看作是應用程序的用例,因此,它們的功能是協調對存儲庫,域服務和域模型的訪問。
如果您開始在彼此內部注入域服務,那么您將開始將它們耦合在一起,並失去彼此的單一責任。
我的答案是讓commandHandler處理用例中所需的域服務和模型的執行,這樣,您就可以自由地編寫任何新命令,而不必處理充滿用例邏輯的域服務。 ,並且不完全屬於域本身。
如果您的1個服務依賴於其他服務,則表明您犯了一些設計錯誤。 在這種情況下,您只想共享的代碼就是其他共享類庫,以便兩個服務都可以使用它們而彼此之間沒有任何依賴性
我不建議將所有邏輯都注入命令處理程序中,無法從域類之外設置域的許多部分,所以我建議僅在命令處理程序中編寫工作遵循和業務邏輯(而不是核心)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.