【发布时间】:2018-06-04 19:39:29
【问题描述】:
我正在使用 CQRS 开发应用程序。我有一些我有点困惑的情况。
我有一个命令 CreateUser。现在我必须创建命令 ImportUsers。我想这些命令的目的很明确。所以有两种选择:
- 从 ImportUsers 命令调用 CreateUser 命令。
- 在 ImportUsers 命令中进行复制/粘贴以从头开始执行所有操作。
最佳做法是什么?先感谢您。
【问题讨论】:
-
虽然我没有 CQRS 的实践经验(不得不承认我什至不得不用谷歌搜索),但我肯定会说选项 1。“复制粘贴代码”通常意味着“难以维护”代码”。
-
您的架构中有一些不清楚的地方。
CreateUser命令将由单个聚合(用户聚合)处理。但是,ImportUsers命令不能由单个用户聚合处理(因为Users表示多个用户)。这表明这里还涉及另一种聚合类型。其他聚合类型是什么?ImportUsers命令的一致性要求是什么?它必须是原子的(所有用户都被导入或没有)?能否最终保持一致(最终导入所有用户)? -
感谢您的评论。我想如果你建议引入新的聚合,这意味着系统将具有完全一致,它就像我的第二个选项一样?如果最终一致 - 这是第一个选择。
-
满意后别忘了选择答案