2013-04-08 42 views
1

我想玩DDD和CQRS。命令/句柄应该保存完整的聚合还是只保存其ID?

而且我得到了这两种解决方案:

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

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

现在我必须在命令ID和事件(我相信我的工作单位来缓存负载(aggregateId),所以我不会为1级的命令执行相同的请求100全模型)。

有没有更好的方法?

回答

8

是的,您当前的方法是正确的 - 在命令中引用具有标识值的聚合。命令旨在被串行化并跨过进程边界发送。而且,一个命令通常由客户建立,客户可能没有足够的信息来创建整个聚合实例。这也是为什么应该使用身份的原因。是的,如果需要的话,你的工作单位应该考虑在工作单位期间缓存总计。

+0

我喜欢这种类型的答案,我只是让这个问题打开了一下,看看有没有其他的想法 – 2013-04-08 15:24:20

+0

+1,没什么可添加的 – 2013-04-08 18:57:53

+0

没有什么可补充的,eulerfx的答案很好,很简单。 – 2013-04-09 12:02:14

相关问题