2016-07-27 95 views
0

我無法識別我創建的服務是域1還是應用程序。從書中我讀到了「PHP中的域驅動設計」,據說應用程序服務就像是「用戶註冊請求」,訪問存儲庫並驗證用戶是否存在。但是,他們採用相同的示例將其作爲域服務來實現,因此我無法區分兩者。ddd - 我的服務是域名服務還是應用服務?

我的情況如下:我正在創建一個動態頁面構建器。頁數儘可能多的塊,它們都是基本塊的子類。 Base Block的每個子類都有其自己的業務規則,以允許用戶定製其設計(基本上它應該返回一個表單,對於每個Block不同)。

我以用例開始「用戶想要添加一個[特定塊]到頁面」。

我想知道這是一個域服務還是應用服務。任何幫助都將不勝感激

+1

可能重複「採取同樣的例子來實現它作爲一個域服務」 *?我不確定一本自尊的DDD書可能無法解釋這種根本性差異。你確定你讀得對嗎?關於DDD服務的好文章:http://gorodinski.com/blog/2012/04/14/services-in-domain-driven-design-ddd/ – guillaume31

+0

這本書採用完全相同的例子:「用戶想要註冊「並首先將其作爲應用程序服務實施,然後作爲域服務實施。但是,似乎我誤解了它。您的文章非常有幫助,謝謝! – Lucio

+0

也許應用程序服務在書中調用域服務? – guillaume31

回答

3

您的應用程序服務通常負責編排用例,並執行諸如從持久性加載/保存聚合的操作。

即是這樣的:

public void SomeUseCase() 
{ 
    var aggregate = _repository.Load(someId); 
    aggregate.ApplySomeBehaviour(someDomainService); 
    _repository.Save(aggregate); 
} 

而域名服務將更加域行爲的具體,例如RateCalculator - 一些對象不適合總結概念,但包含需要捕捉行爲你的域名。那你究竟由*平均Domain Driven Design: Domain Service, Application Service

+0

這使得它更清晰,謝謝! – Lucio

相關問題