領域驅動設計 [ Domain-Driven Design ] 從這裏開始

商業級 ASP.NET MVC 樣式Ⅹ架構實務 》 第五章 領域驅動設計與進階分層架構 》領域驅動設計

應用系統是為了解決真實世界中特定領域的問題而發展的軟體,「領域驅動設計(Domain-Driven Design)」主張針對特問題封裝獨立的實體,並在需要的時候透過整合個別實體以解決領域問題,這些實體一般我們將其視為領域實體(Domain Entity),實務上,領域實體透過類別定義封裝實體行為、以及所要處理的資料內容,定義程式功能,形成領域模型。

在 MVC 架構中,領域模型是最重要的核心,控制器與檢視透過與其互動,支援應用程式的運作,大型架構則進一步將領域模型抽離,集中於領域層作處理,獨立於其它程式元件,提供所需的功能支援。

領域驅動設計以領域問題為核心,逐步建構系統架構,透過四個概念層切割應用軟體架構,同性質的功能元件配置在同一個概念層中,隔離其他層的元件,同層元件可以彼此溝通,跨層溝通則有一定的限制,並經由特定的機制執行。

- 展現層UI(presentation Layer)

提供視覺化的使用者操作介面,支援資訊呈現以及使用者的互動。

- 應用層(Application Layer)

負責應用程式的流程協調以及跨層運作,除此之外不包含其它商業邏輯以及領域模型等元素,因此必須相對單純。

- 領域層(Domain Layer)

四層中最重要的核心,所有的商業邏輯都會集中在這一層處理,也是我們配置領域模型的地方,同時支援狀態維護。

- 基礎架構層(Infrastructure Layer)

支援應用程式運作的基礎架構,提供所需的技術支援,例如領域模型對應的底層實體資料來源存取,跨模型聯繫等相關機制。

分層設計,讓應用程式專案以更乾淨的架構呈現,每一層負責特定的任務,應付不同的需求,這讓大型商業軟體的開發架構更有邏輯性,同時有效的降低複雜度,變得更為簡單容易,在未來的開發與擴充上變得更為容易。

實作領域驅動設計若以視為多種樣式理論群的整合,必須具備足夠的前置知識,到目前為止,本書討論的議題除了物件導向設計原則,同時亦觸及了數種商業軟體常見的樣式理論實作,我們已經建立必要的基礎知識,特別是領域層與基礎架構層的部份,這一章接下來的部份,除了「展現層」的部份,將持續完善架構其它三層所需的知識,「展現層」由於具備視覺化處理與使用者互動,留置於後續最後一章進行討論。

沒有留言: