1

我正在尝试使用 DDD 和 CQRS。

我得到了这两个解决方案:

  • 将 AggregateId 添加到我的命令/事件中。很好,我可以使用我的命令作为我的 Web 服务的参数,我也可以将我的命令的一些实例返回到我的表单中,以表示“你可以执行这个命令,他的一个和这个”

  • 将我的完整聚合添加到我的命令/事件中。这很好,因为我确信如果有很多事件发生,我不会加载我的聚合 100 次,我只会传递我的引用(例如,我不会将它加载到我的命令的验证器和我的命令处理程序)。但我会添加为每个只有 id 的命令创建一个参数类。

现在我在命令中有 id,在事件中有完整模型(我相信我的工作单元可以缓存 Load(aggregateId),所以我不会为 1 个命令执行相同的请求 100)。

有没有正确/更好的方法?

4

1 回答 1

8

是的,您当前的方法是正确的 - 使用命令上的标识值引用聚合。命令旨在被序列化并跨进程边界发送。此外,命令通常由可能没有足够信息来创建整个聚合实例的客户端构建。这也是为什么应该使用身份的原因。是的,如果需要,您的工作单元应该负责在工作单元期间缓存聚合。

于 2013-04-08T15:19:30.613 回答