2011-03-27 47 views
4

我有一個DDD應用服務的問題。例如,我有一條規則,當用戶確認註冊時,發生以下操作:域驅動設計應用服務

  1. 用戶的帳戶已更新,以便他可以登錄到系統。
  2. 初始化用戶餘額。
  3. 用戶收到確認信,確認註冊。

由於應用服務SecurityAppService,可它可以包含在調用它的方法ConfirmRegistration()以下工作流程:

  1. 呼叫域SecurityService更新用戶的帳戶。
  2. 調用域AccountingService來初始化用戶的餘額。
  3. 呼叫基礎設施EmailService向用戶發送電子郵件。

問題是以下幾點。從SecurityAppService調用AccountingService是否合法?或者我應該將其包含在對SecurityService的調用中?

回答

2

恕我直言,答案是肯定的,這是合法的。 服務在適當時被允許調用其他服務。在特定的例子中,這絕對是你想要做的事情。真正的問題是你如何管理依賴。使用DI,以便可以分離兩個實現之間的直接關係。

+0

您的意思是從應用程序服務中調用所有3個服務。我的理解正確嗎? – Markus 2011-03-27 12:04:18

+0

是的,我指的是上面列出的所有服務。 – 2011-03-27 12:16:59

3

您可以使用CQRS模式。

UserManager有註冊(用戶用戶)方法。他將添加用戶並引發AddUserEvent。 AccountService和EmailService通過EventHandlerArgument實現EventHandlers並接收User對象。

因此,SecurityService不知道其他服務,所有這些服務都是獨立的。