lokad-iddd-sample代码实现了 Vaughn Vernon 书中讨论的 cqrs+es 写入端。不幸的是,读取模型方面不完整。有谁知道类似的代码(最好基于 Vaughn Vernon 的书)实现了读取模型端的工作版本?
最佳答案
问题是几乎所有使用 cqrs+es 的开源代码库要么基于极其琐碎的示例。因此,它们仅展示基础知识,而无法展示复杂情况的良好示例。 在我看来,让它们对所有人来说都是无用的,除了感受这些概念之外。
因此,以“工作版本”为例,取决于您如何定义它。如果您正在寻找简单的东西,有大量的 OSS 项目示例,其中包含读取模型的“工作示例”。只需使用谷歌即可。
实现读取模型可以说是 ES/CQRS 最简单的方面。当与 ES 结合使用时,您的聚合根会发出事件,并且您可以订阅这些事件。
使用这些事件可以让您构建您的读取模型,一次一小部分。如何根据实体定义您的读取模型取决于您。这里没有对错之分。这完全取决于您想要解决什么样的问题。
例如:当接收到 OrganizationCreated 事件时,我是否创建一个可以直接检索的单一organizationEntity?当然,如果您有需要这种表示的详细 View ,为什么不呢。
但是,除了那个单一实体之外,您是否还保留一个包含所有已知组织的单独列表实体,或者只是对organizationEntity执行查询(如果愿意,请选择*)并构建我的结果?再说一遍,这一切都取决于您的要求。
使用 ES 最好的部分是你可以更改你的读取模型,或者简单地引入新实体,而不会出现太多问题。您始终可以从 ES 重建您的读取模型。
关于domain-driven-design - 阅读 Vaughn Vernon 的 cqrs+es 的模型面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24209070/