领域驱动设计应用服务

4
我有一个关于DDD中应用服务的问题。例如,我有一个规则,当用户确认注册时,将执行以下操作:
  1. 更新用户账户,以便他可以登录系统。
  2. 初始化用户余额。
  3. 向用户发送确认注册的确认信。
给定一个应用程序服务SecurityAppService,它在调用其方法ConfirmRegistration()时可以包含以下工作流程:
  1. 调用域SecurityService来更新用户帐户。
  2. 调用域AccountingService来初始化用户余额。
  3. 调用基础设施EmailService向用户发送电子邮件。
问题是:从SecurityAppService调用AccountingService是否合法?还是我应该将其包含在对SecurityService的调用中?
2个回答

3

您可以使用CQRS模式。

UserManager有Register(User user)方法。他将添加用户并引发AddUserEvent事件。 AccountService和EmailService实现了EventHandlers,并通过EventHandlerArgument接收User对象。

因此,SecurityService对其他服务一无所知,所有这些服务都是独立的。


2

我认为,答案是肯定的,这是合法的。当一个服务调用另一个服务时,是被允许的。在这个特定的例子中,这绝对是你想要做的事情。真正的问题是如何管理依赖。使用 DI(依赖注入)使得你可以解耦两个实现之间的直接关系。


你的意思是从应用服务中调用所有三个服务。我理解你的回答是这样的吗? - Markus
是的,我指的是您列出的所有服务。 - Fadrian Sudaman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接