我开始使用 CQRS,我发现我的 Event 类定义与我的 Command 定义几乎 1 比 1 匹配。除了明显的代码重复之外,我试图找出我做错了什么。当然,在某些情况下,事件与命令不匹配......但并不多。
以简单的 CUD 场景为例:
命令类:
- 创建邮局
- 更新帖子
- 删除帖子
事件类:
- 已创建帖子
- 更新后的帖子
- 已删除的帖子
对此有何建议?
我正在使用事件存储,如果这有什么不同的话。
谢谢。
我开始使用 CQRS,我发现我的 Event 类定义与我的 Command 定义几乎 1 比 1 匹配。除了明显的代码重复之外,我试图找出我做错了什么。当然,在某些情况下,事件与命令不匹配......但并不多。
以简单的 CUD 场景为例:
命令类:
事件类:
对此有何建议?
我正在使用事件存储,如果这有什么不同的话。
谢谢。
您通常不会将 CQRS 用于 CRUD 场景。有更简单的工具和模式来创建 CRUDy 应用程序。
CQRS 为行为丰富的场景带来了许多优势,其中动词不是Create、Read、Update、Delete,而是类似于真实行为。像PromoteEmployee或BlacklistVendor。
一旦开始对行为丰富的域进行建模,可能仍然有许多相关的命令/事件——这不是一件坏事——但你也会发现命令和结果事件的大小可能会有很大的不同(包含的数据) 和数字。
为了给 Dennis Traub 的回答添加一点内容,CQRS 超越了您将代码构建到规范领域的方式,即 UI 的工作方式。并不是所有的 UI 都对 CQRS 友好;你想要更多类似于基于任务的 UI 而不是 CRUD-y UI 的东西。
从 CRUD-y UI 开始,您可能会在应用 CQRS 时感到沮丧。