6

尋找如何解決這個問題的建議,並瞭解域驅動設計是否真的是最好的模式。企業規模的DDD?

我的客戶是在重新架構的工具和服務,其近過時棧的過程。客戶是一個迅速擴大的電子商家。它的核心產品是其大型電子商務網站。在這個網站的周圍,客戶有各種各樣的數據饋送給它的合作伙伴。大量的內部應用程序可以幫助營銷,銷售,報告等等一系列用戶支持和合作夥伴支持應用程序。大量的各種數據同步,ETL作業等......您可以獲得圖片。

數據存儲和數據提供者也很多。 NOSQL基於雲的大型可擴展存儲提供了公共網站上的大部分內容。具有多個數據庫的SQL服務器向內部應用程序提供數據。還有特殊的只搜索服務器可提供可擴展搜索功能,以及應用程序從各種第三方供應商處獲取的其他供稿。如果採用DDD,則計劃將具有從數據存儲特定的存儲庫基類繼承的各種存儲庫對象組

客戶已經進行了一項練習,他們已經將他們的大部分業務實體映射到「通用」級別:實體名稱和關係。除了「通用」級別之外,各種應用程序中各種具體對象的重用量還有相當大的數量,並且還有相當數量的實體會根據應用程序的不同實施。

例如:電子商務網站上訂購實體可能看起來像X,而對於處理支持電話像Y,進而有人做欺詐分析像Z.

我在尋找的建議的應用如何適應DDD或其他架構模式來處理這個巨大的混亂:有一個堅實的企業戰略,促進重用,並允許在必要時分離邏輯。在通常的(可擴展的,靈活的,適應性強,單元測試,簡單等)標準之上。

由於不同的數據存儲,DTO的結構看起來與數據存儲到數據存儲顯著不同。由於各種業務需求,各種應用程序需要不同版本的特定實體,並且由於公司正在迅速擴張,未來非常不穩定,靈活性至關重要。

我想我最大的問題是找到一種方法來分離的經營模式不同域,仍然保持它在一起時,有共享或重用高量,同時能夠採用高層次的變化。

謝謝您的所有建議

P.S.這家商店是一家微軟商店。 VS2010/.NET/SQL/Azure的

回答

4

考慮SOA + DDD

在它看起來像你應該考慮與領域驅動設計(DDD)以及面向服務的架構(SOA)的表面。沿着NServiceBus

烏迪大漢對DDD + NServiceBus可以在這裏找到一個偉大的視頻:

DDD是關於其核心隔離業務邏輯*

DDD被隔離您的應用程序和框架中的域邏輯,以便您可以確保正確地對業務邏輯進行建模。 DDD不適用於每個項目,但它確實不適用於維護DDD的成本高於您從中獲得的收益的小型企業應用程序。

在你的情況

你形容一個相當複雜的業務規則集以IMO將高度從DDD受益。然而,我也會讓你考慮一個SOA,它可以讓你使用通用消息系統將多種體系結構集成到1個企業級框架中。

使用SOA

NServiceBus是一個功能強大的輕型,開源的消息 設計分佈式.NET企業級系統架構。完整的 可插拔但易於使用,NServiceBus爲程序員提供了一個開始健壯,可擴展和可維護的 服務層和長期運行的業務流程的先行先機。

+0

+1「DDD是關於隔離您的業務邏輯」。 @Igorek,你看到的規模超出了這個範圍。 (但我想你已經在想) –

+1

@Igorek RE:「我想我最大的問題......」通過一切手段嘗試和「模型」(理解)更大的圖片,但我會非常猶豫要實際實施單一「模式」實施。儘量保持簡單,不要忘記舊的OO原則(如關注點分離),因爲它們仍然適用於宏觀層面。 –