因此,我們可能將域驅動設計應用於多個項目,但可能存在相同領域模型的交集。使用領域驅動設計時,針對不同項目共享模型的最佳做法是什麼?
在這種情況下,如何(第一次使用ORM,模型,生成數據庫架構)應用領域驅動設計?用很多相同的表創建多個數據庫?或者如何分享數據?使用同義詞?解決共享模式(包括數據)的可能策略是什麼?
任何建議是值得歡迎的。提前致謝!
因此,我們可能將域驅動設計應用於多個項目,但可能存在相同領域模型的交集。使用領域驅動設計時,針對不同項目共享模型的最佳做法是什麼?
在這種情況下,如何(第一次使用ORM,模型,生成數據庫架構)應用領域驅動設計?用很多相同的表創建多個數據庫?或者如何分享數據?使用同義詞?解決共享模式(包括數據)的可能策略是什麼?
任何建議是值得歡迎的。提前致謝!
你可能想(重新)讀取的戰略設計模式在blue book。
在我以前的項目中,我們有很多關於有幾種型號有一些共享的部件冗餘信息的討論。
我們發現有趣的是,我們認爲幾個項目(不C#凸出,但真正的大型開發項目),或稱之爲系統很少分享如何使用模型完全相同的觀點。我們認爲,在跨越多個應用程序/系統/項目的較大的域中,您可以發現多個核心,您不希望核心在每個應用程序中被複制。
這一切都結束了一個域,其中幾臺機器上分發。我們有GUID鍵將它們綁定在數據庫中。但是,由於我們是這樣做的「模式第一」,子域互相看着彼此,像基礎設施相關的服務,通過域事件到達。
複雜嗎?不是真的。這裏有一個例子: 領域1(薪酬審查系統) - 我們有一個薪酬審查統計系統,對員工的工資進行評估,以及他們如何與他們的經驗,年齡和表現相關。核心是問卷形式,工作評估,問卷答案,評分。工資修改建議等
域兩(僱員制) - 在這裏你管理你的員工,註冊新員工,辦理康復,也許個人發展,薪酬,勞動合同,員工福利等
域名三(績效管理) - 在此處理員工經驗,目標,成就以及老闆和員工之間關於個人發展,評分和績效等級的協議歷史。
正如你看到的每個域的核心是不同的,但是他們分享一些擔憂。根據部署,基礎設施和要求他們應該相互關聯/相互應對的緊密程度 - 技術部門如何解決這個問題可能會有所不同。
我喜歡做這個獨立的技術。我們使用NServiceBus通過域事件(Udi Dahn的域事件模式)來同步域。例如,一旦我們完成了一名員工的工資審查,並且應該告知老闆今年的薪水將增加200 - 500美元。
對實體聚合根員工的方法ApplySalaryReview不僅節省了審查結果,這也觸發域事件NotifySalaryReviewSubscribers這觸發應用層的事件處理程序HandleNotifySalaryReviewSubscribersEvent,需要一個基礎設施服務的構造函數。該服務將結果放入消息隊列中,所有需要此信息的系統都可以訂閱此消息。 在我們的案例中,它是域二(員工系統)。員工系統導入結果並通知員工的上司,他爲即將到來的與該特定員工進行薪資談話獲得新信息。
我希望我可以在這樣做的一種方式上放一些燈。還有很多其他的方法......
請評論或討論關於此主題的更多信息。我準備好了...... :-)因爲這是一種常見的情況,請在您的域中繪製有界的上下文。 –
你可能想提一下哪一章是特定的 – zsong
嗯,我認爲你只能閱讀第四部分(他們討論的所有相關章節後才能做出明智的決定所有可用的選項)。如果我要根據你的6行描述來告訴你閱讀哪一章,那將是一種肆意冒犯的行爲。 –