DDD,域服务和事件

时间:2019-04-01 21:24:05

标签: events event-handling domain-driven-design ddd-service

情况:

要处理域事件,吉米·鲍格(Jimmy Bogart)proposed 一种用于将事件存储在聚合中的方法。

从我的角度来看,这是一种非常方便的方法。但是,在域服务中发生域事件的情况如何?

域服务不应具有状态(无状态)。从理论上讲,在这种情况下,必须将IDispatcher事件分发程序注入此类服务的构造函数中。

问题:

为避免引入事件调度程序的域服务,建议的替代方法是正确的:

  1. 保存上一次操作的事件的域服务。但是,这将违反域服务的无状态原则。
  2. 根据服务方法从服务方法返回事件列表 操作的结果(以return方法或其他方式, 取决于编程语言的功能。

1 个答案:

答案 0 :(得分:1)

注意:该帖子大约写于五年前。您可能想要查看他的最新(和更详细):Life Beyond Distributed Transactions: An Apostate's Implementation

  

域名服务不应具有状态

正确-出于这个原因,您非常想为域服务中的域事件分配责任。

您可以使用域服务来为聚合计算事件,但是存储仍将属于聚合结构本身。因此,它看起来可能像一个函数(或者,如果愿意的话,是域服务上的方法),它接受聚合提供的一些参数并返回事件。