點這裡進入ABP開發手記目錄 介紹 應用程式代碼庫的分層是一種廣泛接受的技術,可幫助降低複雜性並提高代碼可重用性。為了實現分層體繫結構,ASP.NET Boilerplate遵循域驅動設計的原理。 DDD分層體系架構 領域驅動設計(DDD:Domain-Driven Design)有四個基本層: 展 ...
介紹
應用程式代碼庫的分層是一種廣泛接受的技術,可幫助降低複雜性並提高代碼可重用性。為了實現分層體繫結構,ASP.NET Boilerplate遵循域驅動設計的原理。
DDD分層體系架構
領域驅動設計(DDD:Domain-Driven Design)有四個基本層:
- 展示層:為用戶提供界面。使用應用程式層來實現用戶交互。
- 應用層:在表示層和域層之間進行中介。編排業務對象以執行特定的應用程式任務。
- 領域層:包括業務對象及其規則。這是應用程式的核心。
- 基礎設施層:提供通用技術功能,這些功能主要使用第三方庫來支持更高的層。
ABP分層體系架構
除了DDD外,現代架構應用程式中還包含其他邏輯和物理層。建議併為ABP應用程式實現以下模型。ABP不僅通過提供基類和服務使實現此模型更加容易,而且還提供了直接從該模型開始的啟動模板。
客戶應用
這些是遠程客戶端,它們通過HTTP API(API控制器,OData控制器,甚至是GraphQL端點)將應用程式用作服務。遠程客戶端可以是SPA(單頁面應用程式),移動應用程式或第三方用戶。本地化和 導航可以在此應用程式內完成。
展示層
ASP.NET Core MVC(模型-視圖-控制器)可以視為展示層。它可以是物理層(通過HTTP API使用應用程式)或邏輯層(直接註入和使用應用程式服務)。無論哪種情況,它都可以包括 本地化,導航,對象映射, 緩存,配置管理,審計日誌等。它還處理 授權,會話, 功能(用於 多租戶應用程式)和異常處理。
分散式服務層
該層用於通過REST,OData,GraphQL等遠程API來提供應用程式/域功能...它們不包含業務邏輯,而僅將HTTP請求轉換為域交互,或者可以使用應用程式服務來委托操作。該層通常包括授權,緩存, 審核日誌記錄,對象映射,異常處理,會話等。
應用層
應用層主要包括應用服務的使用領域層和領域對象(領域服務, 實體 ...)來執行請求的應用程式的功能。它使用數據傳輸對象從表示層或分散式服務層獲取數據並將數據返回到表示層或分散式服務層。它還可以處理 授權,緩存,審核日誌記錄,對象映射,會話等。
領域層
這是實現我們的領域邏輯的主要層。它包括 實體,值對象和領域服務以執行業務/領域邏輯。它還可以包括規範和觸發領域事件。它定義了存儲庫介面以從數據源(通常是DBMS)讀取和保留實體。
基礎設施層
基礎設施層使其他層起作用:它實現存儲庫介面(例如,使用Entity Framework Core)以實際使用實際資料庫。它還可能包括與供應商的集成,以發送電子郵件等。這不是所有層下的嚴格層,但實際上通過實現抽象層來支持其他層。