目錄
介紹
在應用程序設計中,分層架構是一種被廣泛使用的技術,它助於降低復雜度和提高代碼的可重用性。在ABP框架中,使用了DDD(領域驅動設計)的原則來實現分層架構.
DDD分層架構
在DDD(領域驅動設計)架構模型中,有四個基礎層。
- 表現層: 用戶訪問接口。使用應用層來實現與用戶交互。
- 應用層: 應用層是表現層和領域層之間的媒介,它負責組織和編排業務對象來執行特定的應用任務。,
- 領域層:定義業務對象、邏輯和規則,它是整個應用的核心。
- 基礎設施層:為上層提供通用的技術支持,大多數情況會使用第三方庫。
ABP架構模型
在一個現代化的架構應用中,除了DDD模型的4個基礎層(表現層、應用層、領域層、基礎設施層)以外, 通常還有其他的一些邏輯層和物理層。下面的架構模型圖是ABP建議使用並且已經實現的結構模型。ABP框架不僅提供了基類和服務來非常容易的實現此架構模型,並且已經提供了模板程序(參見ABP框架 - 我的第一個WEB API)來讓我們直接在此架構模型上開始開發。
客戶端
遠程客戶端是應用服務的消費者,通過HTTP API的方式來調用應用服務。客戶端可以是一個單頁應用程序(SPA),一個移動APP,也可以是一個第三方的消費者。本地化和導航可以在客戶端中實現。
展現層
ASP.NET (Core) MVC可以被認為是展現層。展現層可以是物理層(通過HTTP API來調用應用服務),也可以是一個邏輯層(直接注入並使用應用服務)。展現層一般提供本地化、導航、對象映射、緩存、配置管理、審計日志等這些功能。也可以處理授權、會話和異常。
分布式服務層
分布式服務層通過API(例如REST、OData、GraphQL)來為遠程客戶端提供應用服務功能。它不包含任務業務邏輯,僅僅是接收HTTP請求,然后調用相應的應用/領域服務來完成特定功能。分布式服務層一般包括授權、緩存、審計日志、對象映射、異常處理和會話等。
應用層
應用層主要包含應用服務,應用服務從展示層/分布式服務層接收輸入DTO對象,然后調用領域層的特定操作,組合編排領域對象,並根據需要返回輸出DTO給展示層/分布式服務層。應用層通常也會包括授權、緩存、審計日志、對象映射、會話等。
領域層
領域層主要用來實現業務邏輯,它包括領域實體、值對象、領域服務並執行業務邏輯。它也規約和領域事件。領域層定義了數據倉儲接口來讀取和持久化實體到數據源,但是領域層並不實現數據倉儲。
基礎設施層
領域層定義了數據倉儲接口,基礎設施層則通過Entity Framework(Core)/NHibernate與實際數據庫交互來實現數據倉儲接口。基礎設施層並沒有嚴格的定義,它里面實現的功能通常是提供給其他層使用的公共功能,比如發送郵件功能,就可以定義在基礎設施層。