domain-driven-design - 阅读 Vaughn Vernon 的 cqrs+es 的模型面

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

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/

相关文章:

caching - 在 DDD 应用程序中,我应该在哪一层实现从数据库中查找数据的缓存?

node.js - 如何使用cqrs模块在nestjs中进行查询?

cqrs - 验证服务描述符“ServiceType : MediatR. IRequestHandler”时出错

java - 顺序数据的并行性和故障转移

events - 每个微服务的 CQRS 事件源和自己的数据库

domain-driven-design - 如何使用事件溯源更新大量数据

java - 如何准确定义域服务

repository - 如何保存和加载值对象?

domain-driven-design - 领域驱动设计 : Avoiding anemic domains and modelling real world roles

domain-driven-design - CQRS/ES 去规范化器