Mr.*_*ars 6 domain-driven-design terminology domain-events
领域事件在 DDD 中众所周知,可以在聚合根或领域服务中发布。我的问题是,域事件可以在应用程序服务/用例中发布吗?
例如,简化。我有一个名为 的应用程序服务UseCaseA
,它执行调用一些聚合根的各种操作。如果我想在该用例结束时引发一个事件,我可以UseCaseAFinished
在此应用程序服务中发布该事件吗?它是领域事件还是应该称为应用程序事件?DDD 中是否存在应用程序事件术语?
提前致谢。
领域事件可以在应用程序服务/用例中发布吗?
通常不是:领域信息属于领域模型,而不属于应用程序。
现在,业务对流程的进展/终止感兴趣是很正常的。但这只是一条线索,表明流程本身也应该在领域中建模。
“应用程序事件”更有可能致力于应用程序问题:想想“可观察性”。
小智 3
我认为你应该从另一个角度来看待这个问题。让我解释。
您想要引发的事件仍然应该是您所描述的域事件,而不是引发事件作为您的 UseCaseA 的结果来处理副作用(例如发送电子邮件)。
然后,在处理这个特定的领域事件时,您可以引发一个“应用程序事件”(我称之为集成事件),然后它将处理发送电子邮件、进行监视、日志记录的副作用。
此集成事件可以跨越多个 BC、服务甚至应用程序。
分步流程示例:
集成事件可以通过多种方式分派,但通常通过某种事件总线。