3

情况:

为了处理领域事件,Jimmy Bogart提出了一种在聚合中存储事件的方法。

在我看来,这是一种非常方便的方法。但是,域服务中出现域事件的情况呢?

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

问题:

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

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

1 回答 1

4

注意:那篇文章是大约五年前写的。您可能想查看他最近的(和更详细的):分布式事务之外的生活:背道者的实现

域服务不应该有状态

是的 - 由于这个原因,您希望为域服务中的域事件分配责任是非常可疑的。

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

于 2019-04-01T22:46:04.680 回答