在進入具體實例之前,我們有必要回顧並深入理解分層架構。「層」是一種架構模式,也是軟體從業者最廣泛、最靈活運用的模式之一。雖然許多開發者知道「三層架構」即表現層、業務邏輯層與資料存取層,但真正理解如何正確分層、各層職責邊界在哪裡,卻非易事。
領域驅動設計(DDD)同樣建立在分層模式基礎上,但它更強調領域架構與技術架構的分離,這是與傳統分層架構的本質區別。
最常見的分層方式是「表現層、業務邏輯層、資料存取層」,架構示意如下:

圖中虛線框出的「基礎設施層」在實踐中常包含 SQLHelper、TextUtility 等工具類,可被各層呼叫。依分層原則,表現層僅與業務邏輯層交互,業務邏輯層透過資料存取層進行持久化操作,表現層對資料存取層一無所知。
從 DDD 視角看,這種分層存在明顯弊端:
DDD 將系統劃分為四層:基礎設施層、領域層、應用層、表現層。資料存取層不再獨立,而是下沉至基礎設施層。

表現層與應用層透過資料傳輸對象(DTO)交互。DTO 是無行為的 POCO 對象,僅用於封裝領域對象數據、實現層間數據傳遞。不可直接使用領域對象傳輸,原因有二:
下一章將以簡單的銷售系統為例,示範 Entity Framework 下領域驅動設計的具體應用。