注意
领域事件通常被用作一个有界上下文内领域模型中的单线程模式
什么是事件
事件就是代表某一行为发生后所产生的信息 , 具有代表问题域中重要事件的公共属性的不可变类(数据对象、C# POCO 、JAVA POJO) , 它也是一种设计模式 , 类似于发布-订阅 , 其中会触发事件而事件处理程序会处理它们
异步性
想要在有界上下文内具有异步、可靠的通信 , 像实现最终一致性聚合这样的场景 , 使用领域事件的解耦特性就能应付。需要注意的是 , 在触发异步流程的事件处理程序时 , 需要明白事物边界 , 如果一个事件更新了数据库 , 另一个事件发布一条消息 , 那么当其中一个失败时 , 你可能会希望这两个操作都回滚
优缺点
最明显的好处是能够解耦构造体之间的关联 , 让领域模型更加纯粹 , 不过从代码阅读上会有一定程度上的影响 , 对于经验较少的开发来说会需要一段时间的学习