-->

CQRS传奇 - 我才明白他们的权利?(CQRS sagas - did I understand

2019-07-04 01:02发布

我想了解的传奇故事 ,同时我有他们的思维具体的方式-但我不知道我是否上心权利。 因此,我想阐述和让别人告诉我,无论是对还是错。

在我的理解,传奇是如何长时间运行流程建模问题的解决方案。 长时间运行是指:涉及多个命令,多个事件以及可能有多个聚集。 这个过程里面不参与聚集的一个蓝本,以避免它们之间的依赖关系。

基本上,佐贺是罢了但在内部和外部命令/事件作出反应的命令/事件处理程序 。 它不包含其自身的逻辑,它只是一个(有限)状态机,并为此提供的任务,例如当事件发生X,发送命令年

传奇被保存到事件存储以及聚集体,是相关于特定的聚合实例,并且因此当使用这种特定的聚合(或一组聚集体)被重新加载。

这是正确的吗?

Answer 1:

有实施传奇故事的不同手段。 从发布命令,携带所有国家,基本上是域的聚集自己所有的方式无国籍事件处理程序深远。 乌迪大汉曾经写过关于传奇故事是一个唯一的聚集(在他的具体情况)正确建模系统的文章。 我会看它,并更新这个答案。

还有基于文档的传奇故事的概念。



Answer 2:

你的传奇故事的定义听起来适合我,我也将定义他们。

在你的描述唯一的变化我想提出的是一个传奇仅供事件(S)和事件处理(不是命令)的基础上接收事件和它的内部状态构造一个命令,并sents它的CommandBus执行。

通常有一个传奇只有一个单一的事件从(StartByEvent)和多个事件开始(TransitionByEvent)转换到下一个状态,并多发事件,由(EndByEvent)结束。

在MSDN他们定义为萨加斯ProcessManager的。



Answer 3:

术语佐贺在CQRS的讨论通常用来指一段代码,用于协调和有界的上下文和骨料之间的路由消息。 然而,对于本指南的目的,我们更喜欢使用术语进程管理器来指代这种类型的代码神器。 有两个方面的原因:有是有,从总体上了解有关CQRS的一个具有不同含义的术语传奇的一个众所周知的,预先存在的定义。 术语进程管理器是这种类型的伪代码执行的角色的更好的描述。 尽管术语佐贺在CQRS图案的上下文中经常使用的,它有一个预先存在的定义。 我们选择使用本指导中,进程管理器,以避免与此预存定义混乱。 术语传奇,关于分布式系统,最初是在纸“传奇故事”,由赫克托·加西亚 - 莫利纳和肯尼思·萨利姆定义。 本文提出了它称之为传奇,以替代使用分布式事务管理长时间运行的业务流程的机制。 纸张识别业务流程通常包括多个步骤,其中的每一个包含一个事务,而整体的一致性可以通过分组这些个别交易到分布式交易来实现。 然而,在长时间运行的业务流程,使用分布式事务可以在系统的性能和并发性的影响,因为必须对分布式事务处理期间的锁。

参考: http://msdn.microsoft.com/en-us/library/jj591569.aspx



文章来源: CQRS sagas - did I understand them right?