阅读Vaughn Vernon的cqrs + es的模型方面

时间:2014-06-13 15:34:37

标签: domain-driven-design cqrs event-sourcing lokad-cqrs

lokad-iddd-sample代码实现了Vaughn Vernon的书中讨论的cqrs + es写入方面。不幸的是,阅读模型方面是不完整的。有没有人知道类似的代码(理想情况是基于Vaughn Vernon的书),它实现了阅读模型方面的工作版本?

1 个答案:

答案 0 :(得分:4)

问题是几乎所有使用cqrs + es的开源代码库都是基于无可救药的微不足道的例子。因此,他们只展示基础知识,并剥夺您展示复杂情况的良好范例。 制作它们,imo,对所有人都毫无用处,但要感受这些概念。

所以获得一个"工作版本"例如,取决于您如何定义它。如果您正在寻找简单的东西,那么有很多OSS项目的例子都有一个"工作示例"一个readmodel。只需使用谷歌。

实现readmodel可以说是ES / CQRS最简单的方面。当与ES结合使用时,您的aggregateroot会发出事件,并且您订阅这些事件。

使用这些事件可以让你一次构建一个小块的readmodel。您的readmodel如何根据enitities进行定义取决于您。这里没有对错。这一切都取决于你想要解决的问题。

例如:当收到OrganisationCreated事件时,我是否可以直接检索创建一个单一的organisationEntity?当然,如果您有需要这种表示的详细视图,为什么不呢。

但是,除了那个单一的实体之外,你是否保留一个包含所有已知组织的单独列表实体,或者只是在organisationEntity上执行查询(select * from,如果你愿意)并构建我的结果?再一次,这一切都取决于您的要求。

使用ES的最佳部分是您可以更改您的readmodel,或者只是简单地引入新实体而没有太多问题。您始终可以从ES重建您的readmodel。