领域驱动设计实现疑难解答:如何发布领域事件.docxVIP

  • 6
  • 0
  • 约2.58万字
  • 约 50页
  • 2022-03-21 发布于浙江
  • 举报

领域驱动设计实现疑难解答:如何发布领域事件.docx

? ? 领域驱动设计实现疑难解答 如何发布领域事件 ? ? 事件驱动可能是客观世界的运作方式,当你点击鼠标、敲击键盘或者插上U盘时,计算机便以中断的形式处理各种外部事件。可见,“事件”这个概念一直在计算机科学领域中扮演着重要的角色。 考虑实际应用,我们经常发现一个用例需要修改多个聚合根的情况,并且不同的聚合根还处于不同的限界上下文中。比如,当你在电商网站上买了东西之后,你的积分会相应增加。这里的购买行为可能被建模为一个订单(Order)对象,而积分可以建模成账户(Account)对象的某个属性,订单和账户均为聚合根,并且分别属于订单系统和账户系统。显然,我们需要在订单和积分之间维护数据一致性,通常的做法是在同一个事务中同时更新两者,意味着要调用不同包里的应用,这会存在不同系统中的耦合性问题。 为遵循原则,一个业务用例对应一个事务,一个事务对应一个聚合根,也即在一次事务中,只能对一个聚合根进行操作。通过引入领域事件,我们可以很好地解决上述问题。 这时候的解决方法,称为基于事件的最终一致性。 注意:不能同时更新多个聚合根,并不是不能同时更新多个数据表。 一、如何定义领域事件? (一)找出事件 可以通过事件风暴活动找出领域事件,领域事件是用来捕获领域中发生的具有业务价值的一些事情,是领域专家所关心的(需要跟踪的、希望被通知的、会引起其他模型对象改变状态的)发生在领域中的一些事情,

文档评论(0)

1亿VIP精品文档

相关文档