加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在DDD中,谁应该负责处理域事件?

发布时间:2020-12-13 20:12:04 所属栏目:百科 来源:网络整理
导读:谁应该负责处理域名事件?应用服务,域服务或实体本身? 让我们用这个问题的简单例子. 假设我们在商店应用程序上工作,我们有一个专门用于订单操作的应用程序服务.在此应用程序中,订单是聚合根和遵循规则,我们只能在单个事务中使用一个聚合.下订单后,它将保留
谁应该负责处理域名事件?应用服务,域服务或实体本身?

让我们用这个问题的简单例子.

假设我们在商店应用程序上工作,我们有一个专门用于订单操作的应用程序服务.在此应用程序中,订单是聚合根和遵循规则,我们只能在单个事务中使用一个聚合.下订单后,它将保留在数据库中.但还有更多工作要做.首先,我们需要更改清单中可用的项目数量,然后通知系统的其他部分(可能是另一个有界的上下文),应该启动该特定订单的运输程序.因为,如前所述,我们只能修改事务中的一个聚合,我想发布将由单独事务中的某些组件处理的OrderPlacedEvent.

问题出现了:哪些组件应该处理这类事件?

我想:

1)如果事件触发在同一有界上下文中修改另一个Aggregate,则为应用层.

2)如果事件触发某些基础结构服务,则为应用层.

例如电子邮件将发送给客户.因此,需要一个应用程序服务来加载邮件内容和邮件的订单,然后调用基础结构服务来发送邮件.

3)如果事件在另一个有界上下文中触发某些操作,我个人更喜欢域服务.

例如运输或计费,域服务的基础结构实施负责集成其他有界上下文.

4)如果事件需要拆分为多个消费者,则为基础设施层.消费者转到1),2)或3).

对我来说,如果事件导致对您的有界上下文进行单独的验收测试,则结论是应用层.

那么,您的基础设施是什么来确保您的活动的持久性?您是否在交易中包含事件发布?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读