2012-07-24 152 views
3

我正在設計域模型,但有些東西似乎並不確定。域驅動設計和聚合引用

我從一個主聚合開始。它引用了其他聚合體,其他聚合體也引用了更多聚合體。我可以從主聚合體開始穿越洞域模型。

我看到的問題是我將在內存中保存聚集的所有實例。

這是一個很好的設計嗎?我可以通過延遲加載來解決內存問題,但我認爲我有一個更深的問題。

我有關於聚合引用的另一個問題。我應該加載引用到其他聚合懶惰?如果是這種情況,我幾乎不會使用他們的存儲庫。這可以嗎?

回答

4

在聚合根(AR)之間直接引用會導致無法通過延遲加載解決的問題。此外,它強制所有連接的AR位於相同的數據庫中,並且使得更難以推斷和執行作爲AR首要目的的不變量。最好限制或消除AR之間的直接引用。瞭解總體設計的一個很好的資源是series of articlesVaughn Vernon。其基本思想是讓您的AR精益求精,同時牢記他們的職能 - 強化業務約束並圍繞根實體建立邊界。如果AR需要來自另一AR的數據來執行其工作,則可以通過存儲庫的應用服務將該數據提供給它。此外,如果只需要引用來滿足用戶界面要求,則可以考慮使用read-model pattern