ABP之N層架構

介紹

應用程序代碼庫的分層是一種普遍接受的技術,有助於下降複雜性並提升代碼的可重用性。 爲了實現分層體系結構,ASP.NET Boilerplate遵循領域驅動設計(DDD)的原則。數據庫

領域驅動設計(DDD)緩存

領域驅動設計有四個基本層架構

表現層:提供用戶界面,並使用應用層來進行用戶交互分佈式

應用層:至關於表現層和領域層的「中介」,處理業務對象以執行特定的應用程序任務設計

領域層:包含業務對象和他們的規則,是應用程序的核心日誌

基礎設施層:提供一些一般的技術功能,主要使用第三方庫來支持更高層的功能。對象

ASP.NET Boilerplate應用程序體系結構模型

除了DDD,應用程序架構中還有其餘一些邏輯層和物理層。下圖中的模型是在ABP應用程序中是實現的。ABP不只經過提供基類和服務來簡化此模型,還提供了直接開始此模型架構的啓動模板。blog

客戶端應用程序

這些是經過HTTP API(API控制器,OData控制器,甚至多是GraphQL端點)將應用程序用做服務的遠程客戶端。 遠程客戶端能夠是SPA(單頁面應用程序),移動應用程序或第三方消費者。 能夠在此應用程序內完成本地化(Localization)和導航(Navigation)。接口

 表現層

ASP.NET[CORE] MVC (Model-View-Controller) 能夠被任務是表現層。它能夠是物理層(經過HTTP API使用應用程序)或邏輯層(直接注入和使用應用程序服務)。不管在何種狀況下,它均可以包含本地化,導航,對象映射,配置關咯,審計日誌等等。它還會處理受權,會話,功能(用於多租戶應用程序)和異常處理。事件

分佈式服務層

該層用於經過REST,OData,GraphQL...遠程API提供應用程序/域功能。他們不包含業務邏輯,只是將HTTP請求轉換爲域交互,或者可使用應用程序服務來委派操做。該層一般包含受權,緩存,審計日誌,對象映射,異常處理,Session會話等。

應用程序層

應用程序層主要包括使用域層和域對象(域服務,實體...)來執行所請求的應用程序功能的應用程序服務。 它使用數據傳輸對象從表示或分佈式服務層獲取數據並將數據返回。 它還能夠處理受權,緩存,審計日誌,對象映射,會話等...

領域層

這是實現咱們的域邏輯的主要層。 它包括實體,值對象和域服務,以執行業務/域邏輯。 它還能夠包括規範而且能夠觸發域事件。 它定義了倉儲接口,以便從數據源(一般是DBMS)讀取和保留實體。

基礎設施層

基礎設施層就是幫助其餘層工做:它實現倉儲接口(例如使用EF Core)來使用真實的數據庫.它還可能包括給供應商發送電子郵件的集成等。這不是圖層下面的嚴格圖層,但其實是經過實現他們的抽象概念來支持其餘圖層。

相關文章
相關標籤/搜索