【ABP框架系列學習】N層架構(3)
目錄
客戶端應用程式(Client Applications)
表現層(Presentation Layer)
分散式服務層(Distributed Service Layer)
應用層(Application Layer)
3.使用ABP專案模版快速生成應用程式
0.前言
應用程式的分層是一種廣泛接受的技術, 可以降低複雜度和提高程式碼的可重用性。為了實現分層架構,ABP遵循領域驅動設計 (DDD) 原則。
1.DDD分層
領域驅動設計有四個基本的層:
- 表現層(Presentaiton Layer): 為使用者提供介面。使用應用層實現與使用者互動。
- 應用層(Application Layer): 表現層和領域層的中間者。協調業務物件以執行特定的應用程式任務。
- 領域層(Domain Layer): 包含業務物件和規則,是整個應用程式的核心。
- 基礎設施層: 提供支援上層通用的技術能力,大部分是藉助於第三方庫
2.ABP應用構架模型
除了DDD,現代的應用程式架構還包括邏輯和物理層等。如下圖是ABP建議並實施的模型,它不僅通過提供基類和服務來快速實現這個模型,而且還提供了啟動模板直接開始這個模型。
客戶端應用程式(Client Applications)
遠端客戶端通過HTTP APIs(API Controllers,OData Controllers,GraphQL終端)等將應用程式作為服務。遠端客戶端可以是SPA、移動APP、或第三方消費者等。該應用程式主要包括本地化和導航功能。
表現層(Presentation Layer)
ASP.NET [Core] MVC可以認為是表現層。它可以是物理層(通過HTTP APIs使用應用程式)或是邏輯層(直接注入和使用應用服務)。無論是哪一種情況,一般包括本地化(Location)、導航(Navigation)、物件對映(Object Mapping)、快取(Caching)、配置管理(Configuration Manager)、審計日誌(Audit Logging)等等。還包括授權(Authorization)、會話(Session)、功能(Features,對於多租戶應用程式)以及異常處理(Exception Handling)。
分散式服務層(Distributed Service Layer)
該層主要通過遠端APIs(如REST、OData、GraphQL等)服務於應用服務/領域功能。該層只是將HTTP請求轉換為領域互動,或可使用應用服務來委託操作,而並不包含業務邏輯。通常包括授權(Authorization)、快取(Caching)、審計日誌(Audit Logging)、物件對映(Object Mapping)、異常處理(Exception Handling)、會話(Session)等。
應用層(Application Layer)
應用層主要包括使用領域層和領域物件(領域服務、實體...)來執行應用程式功能請求的應用服務。應用層使用DTO(資料傳輸物件)從表現層或分散式服務層獲取或返回資料。包括授權(Authorization)、快取(Caching)、審計日誌(Audit Logging)、物件對映(Object Mapping)、會話(Session)等。
領域層
這是實現領域邏輯主要的層,包括執行業務/領域邏輯的實體(Entities)、值物件(Value Objects)、和領域服務(Domain Services)。它還包括規約(Specifications)和觸發領域事件(trigger Domain Events),並定義了用於從資料來源(通常是DBMS)讀取和持久化實體的倉儲介面(Repository Interfaces)。
基礎設施層
基礎設施層用於輔助其它層:包括實現倉儲介面(Repository Interfaces,如EF Core)實際操作資料庫。還可能包括與供應商(vendor)的整合,以便傳送電子郵件等。基礎設施層是最下、也是不嚴格的一層,實際上是通過實現它們的抽象概念來支援其他層。
3.使用ABP專案模版快速生成應用程式
1.開啟網址 ofollow,noindex" target="_blank">【Startup Templates】
2.依次選擇ASP.NET Core 2.x >> .NET CORE(Cross Plateform) >> Multi Page Web Application,輸入專案名稱:XXX.FirstABP、驗證碼,點選建立專案按鈕。
3.跳轉自動下載原始碼。
4.解壓並用Visual Studio 2017開啟,啟動程式後VS會自動還原專案所需要的包,wait for a minute......使用ABP專案模版生成的解決方案如下:
5.設定【XXX.FirstABP.Web.MVC】為啟動專案,開啟appsetting.json檔案修改連線字串,如下:
6.開啟【程式包管理控制檯】,預設專案選擇【XXX.FirstABP.EntityFrameworkCore】,在命令列依次輸入:Add-Migration "FirstABP"、Update-Database,wait for a minute...
7.執行步驟6的操作後,預設生成了ABP的資料。
8.回到Visual Studio 2017,按F5執行程式...有驚喜喲,登入介面出現了,輸入admin/123qwe,點選登入。
9.如圖,進入主介面。至此,利用ABP專案模板快速生成了應用程式,主要有租戶管理、使用者管理、角色管理等功能模組。