2013-04-08 45 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

相關問題