2014-09-01 100 views
0

說我有一個對象,對於兩個不同的應用程序,大部分都有必要的屬性等,因爲這兩個應用程序都需要使用它們。有可能10%的屬性不能在一個應用中使用。將該對象(以及聚合/有界上下文作爲共享內核?)共享還是複製存儲的屬性和數據更好?一個應用程序用於最終用戶/活動,另一個應用程序用於管理用戶/活動。DDD實體在兩個應用程序之間共享

回答

3

一個實體通常不在BC之間共享。你可能有另一個BC在玩。你應該有一個BC,這個實體的記錄系統。所有其他BC應該是下游,並且只包含數據的標識和相關位。通常,人們會使用事件驅動的體系結構來通知相關係統所涉實體狀態的任何相關變化。

這也可能是你試圖分裂一個單一的BC。也許關注事物的BC方面而不是技術/應用方面。

希望幫助:)

2

我們最近開發了涉及使用了很多常見的實體的幾個模塊的應用程序。當我們開發它們時,我們將這些公共實體移動到一個名爲common-domain的項目中,然後讓所有相關模塊使用它。事實證明,這是一場災難。

儘管我們最初發現了幾個常見的屬性,但我們發現我們如何爲某些模塊設計它們,而這些模塊如何用於其他模塊。改變共同域中的實體以適應一個模塊的需要有時會破壞它們爲其他模塊工作的方式。我們沒有使用測試驅動的方法,並找到了由此產生的錯誤。

從這個錯誤中學習,我們應該已經認識並確定了有界的上下文,並且在有界上下文中確定了實體及其相關屬性。 「共同」實體應該根據有限上下文定義,以及該上下文所需的任何共享。一些屬性一定會很常見,但由於它們是分開的有界上下文,所以它們必須在每個有界上下文的實體中聲明。

我會進一步提及一個項目可以共享的地方。有界上下文中的每個實體都有自己的存儲庫。 「共同」實體可能共享相同的底層數據庫表。每個BC的實體庫都有責任檢索相關列以返回適當的實體實例。

相關問題