Domain driven design 如何在使用DDD的CQRS体系结构中使用sagas?
我正在使用DDD设计一个CQRS应用程序,我想知道如何实现以下场景:Domain driven design 如何在使用DDD的CQRS体系结构中使用sagas?,domain-driven-design,cqrs,nservicebus-sagas,Domain Driven Design,Cqrs,Nservicebus Sagas,我正在使用DDD设计一个CQRS应用程序,我想知道如何实现以下场景: 一个参与者聚合可以被多个参与者内容聚合引用 向命令端发出一个addparticipantfocommand,其中包含Participant的所有信息和一个participantinetry(类似于一个Order和一个OrderLineItem) 应该在何处实现逻辑来检查参与者是否已经存在,如果不存在,则创建参与者 是否应该在先检查域模型中是否存在参与者,如果没有找到,则发出AddParticipantCommand,然后
- 一个
聚合可以被多个参与者
聚合引用参与者内容
- 向命令端发出一个
,其中包含addparticipantfocommand
的所有信息和一个Participant
(类似于一个participantinetry
和一个Order
)OrderLineItem
- 是否应该在先检查域模型中是否存在
,如果没有找到,则发出参与者
,然后发出AddParticipantCommand
命令,其中包含addparticipantry
参与者ID
- 这应该完全由域模型本身中的AggregateRoot完成吗
(注意:关于“saga”的定义存在相当大的混淆;NServiceBus社区对该术语的理解方式与.kellabyte的调查中最初描述的稍有不同。)处理这种情况不一定需要saga。请看我的博客文章,其中介绍了为什么不创建聚合根,以及如何取而代之:
处理这种情况不一定需要传奇故事。请看我的博客文章,其中介绍了为什么不创建聚合根,以及如何取而代之:
“一个参与者聚合可以与多个参与者聚合关联”-你的意思是什么?它们是如何关联的?凭身份证?什么代表这种“关联”?如果在
较短的时间段内添加重复参与者,会发生什么情况?对业务的影响是什么?人工重试或取消命令是可以接受的?一个参与者可以被多个Participatentry聚合引用(就像一个订单有多个OrderItems)。我编辑了这篇文章。你能告诉我更多关于这个域名的信息吗Participatentry
和Participatent
在域业务方面似乎没有关联。“一个参与者聚合可以与多个Participatentry聚合关联”-你的意思是什么?它们是如何关联的?凭身份证?什么代表这种“关联”?如果在较短的时间段内添加重复参与者,会发生什么情况?对业务的影响是什么?人工重试或取消命令是可以接受的?一个参与者可以被多个Participatentry聚合引用(就像一个订单有多个OrderItems)。我编辑了这篇文章。你能告诉我更多关于这个域名的信息吗Participatentry
和Participatent
似乎与域业务无关。因此,实际上,应该创建依赖实体的是域模型本身,而不是命令处理程序(或博客文章中所述的服务层)。谢谢你给我指明了正确的方向!因此,实际上,应该是域模型本身创建依赖实体,而不是命令处理程序(或博客文章中所述的服务层)。谢谢你给我指明了正确的方向!