我有幾個與業務相關的域,如Purchase
,Marketing
和Economy
。將模型安排到每個域的名稱空間*將會很好,但是有一些實體跨越域,如Item
。如何組織這些交叉對象?跨域域(DDD)實體的命名空間
* =和C#/ Java/Python命名空間一樣。
我有幾個與業務相關的域,如Purchase
,Marketing
和Economy
。將模型安排到每個域的名稱空間*將會很好,但是有一些實體跨越域,如Item
。如何組織這些交叉對象?跨域域(DDD)實體的命名空間
* =和C#/ Java/Python命名空間一樣。
由於您擁有Bounded Context的概念,因此您不應該在名稱空間之間共享域。實際上,每個需要它的名稱空間都應該有一個Item,並且每個Item都應該包含它自己的字段,如所包含的上下文所要求的。
正如埃裏克埃文斯所說,爲了永遠不會在上下文之間共享同一個域,而只是數據,複製數據並不是一件大事。
確定您是否擁有正確的設計將需要一些域的經驗,所以你應該檢查你的域專家。
您可能非常需要共享內核的交叉類。你必須小心,不要在那裏放置太多的泛型/邏輯類來濫用共享內核。
要添加到@ rafaels88已回答的問題,您可能需要創建一個BC特定的域構造,其中存在某個邏輯實體。例如,BC中的User
將是Author
,但在另一個BC中可能是Supervisor
。
你也可以重複一個BC中的AR作爲另一個VO。 A Customer
CRM BC可能是客戶的記錄系統,因此包含更多信息。然而,在訂單BC中,一個Customer
V0可能僅包含Id
,Name
,或許(例如)Address
。
所以你需要評估你有什麼類型的對象,然後再決定把它放在哪裏。