ABP 框架

ABP 框架基礎知識

ABP是一個開源且文檔友好的應用程序框架。ABP不只僅是一個框架,它還提供了一個最徍實踐的基於領域驅動設計(DDD)的體系結構模型,能夠支持 .net framework和 .net core兩種技術流派。前端

ABP 框架特色

  • 依賴注入,這個部分使用 Castle windsor (依賴注入容器)來實現依賴注入,這個也是咱們常用IOC來處理的方式;
  • Repository倉儲模式,已實現了Entity Framework、NHibernate、MangoDB、內存數據庫等,倉儲模式能夠快速實現對數據接口的調用;
  • 身份驗證與受權管理,可使用聲明特性的方式對用戶是否登陸,或者接口的權限進行驗證,能夠經過一個很細粒度的方式,對各個接口的調用權限進行設置;
  • 數據有效性驗證,ABP自動對接口的輸入參數對象進行非空判斷,而且能夠根據屬性的申請信息對屬性的有效性進行校驗;
  • 審計日誌記錄,也就是記錄咱們對每一個接口的調用記錄,以及對記錄的建立、修改、刪除人員進行記錄等處理;
  • Unit Of Work工做單元模式,爲應用層和倉儲層的方法自動實現數據庫事務,默認全部應用服務層的接口,都是以工做單元方式運行,即便它們調用了不一樣的存儲對象處理,都是處於一個事務的邏輯裏面;
  • 異常處理,ABP框架提供了一整套比較完善的流程處理操做,能夠很方便的對異常進行進行記錄和傳遞;
  • 日誌記錄,我麼能夠利用Log4Net進行常規的日誌記錄,方便咱們跟蹤程序處理信息和錯誤信息;
  • 多語言/本地化支持,ABP框架對多語言的處理也是比較友好的,提供了對XML、JSON語言信息的配置處理;
  • Auto Mapping自動映射,這個是ABP的很重要的對象隔離概念,經過使用AutoMaper來實現域對象和DTO對象的屬性映射,能夠隔離二者的邏輯關係,可是又能輕鬆實現屬性信息的賦值;
  • 動態Web API層,利用這個動態處理,能夠把Application Service 直接發佈爲Web API層,而不須要在累贅的爲每一個業務對象手工建立一個Web API的控制器,很是方便;
  • 動態JavaScript的AJax代理處理,能夠自動建立Javascript 的代理層來更方便使用Web Api,這個在Web層使用。

ABP 框架特別的功能

  • 多租戶支持(每一個租戶的數據自動隔離,業務模塊開發者不須要在保存和查詢數據時寫相應代碼;
  • 軟刪除支持(繼承相應的基類或實現相應接口,會自動實現軟刪除)
  • 系統設置存取管理(系統級、租戶級、用戶級,做用範圍自動管理)
  • EventBus實現領域事件(Domain Events)
  • 模塊以及模塊的依賴關係實現插件化的模塊處理等等

ABP框架分層架構圖

ABPLayer

先後端分離的思想,不只僅能夠應用在Web的B/S開發,同時適用於C/S開發web

  • 前端Web端可使用Ant-Design(React)、IView(VUE)、Angular等不一樣的前端技術來承載界面呈現層
  • 前端Client 桌面端可使用MaterialDesign 設計規範,按照Prism或者MVMMLight 的MVMVM框架結合應用起來

WEB API 優先的架構

ABP 框架的核心主要以.NET的後端技術棧爲主線,雖然ASP.NET CORE MVC和 Web API 分紅了兩部分,可是他的動態發佈爲Web API有限的架構提供了更好的便利。數據庫

在當今流行的展示層中,愈來愈不依賴於後端的技術實現,而側重於Web API標準化的對接,基於JSON數據的交互處理。不論是以Ant-Design(React)、IView(VUE)、Angular等技術應用的Web前端,咱們能夠看到這些架構很容易實現對Web API的標準接口對接,在我較早提供的Winform混合框架裏面,也是以Web API優先的策略進行雲端應用的部署後端

ABP 框架的項目結構

ABP 框架包含了兩個部分,一個基礎的ABP框架,一個ABP基礎框架上的擴展應用。提供了人員人員、角色、權限、會話、身份驗證、多租戶、日誌記錄等等內容,咱們通常指的ABP框架應用就是這個基礎上擴展本身的業務項目。這個部分,咱們能夠根據官網上進行必定的選項配置,而後下載使用。api

基礎結構組成部分架構

Package Status
Abp NuGet version
Abp.AspNetCore NuGet version
Abp.Web.Common NuGet version
Abp.Web NuGet version
Abp.Web.Mvc NuGet version
Abp.Web.Api NuGet version
Abp.Web.Api.OData NuGet version
Abp.Web.Resources NuGet version
Abp.Web.SignalR NuGet version
Abp.Owin NuGet version
Abp.EntityFramework.Common NuGet version
Abp.EntityFramework NuGet version
Abp.EntityFramework.GraphDiff NuGet version
Abp.EntityFrameworkCore NuGet version
Abp.NHibernate NuGet version
Abp.Dapper NuGet version
Abp.FluentMigrator NuGet version
Abp.AspNetCore NuGet version
Abp.AspNetCore.SignalR NuGet version
Abp.AutoMapper NuGet version
Abp.HangFire NuGet version
Abp.HangFire.AspNetCore NuGet version
Abp.Castle.Log4Net NuGet version
Abp.RedisCache NuGet version
Abp.RedisCache.ProtoBuf NuGet version
Abp.MailKit NuGet version
Abp.Quartz NuGet version
Abp.TestBase NuGet version
Abp.AspNetCore.TestBase NuGet version

擴展應用模板樣式以下,需到官網下載app

ABP 模板地址

下載.net core 項目後,其中後端部分的項目視圖以下所示框架

ABP 擴展模板地址

咱們從這個項目裏面能夠看到,它主要是分爲下面幾個項目分層。前後端分離

  • Application應用層:應用層提供一些應用服務(Application Services)方法供展示層調用。一個應用服務方法接收一個DTO(數據傳輸對象)做爲輸入參數,使用這個輸入參數執行特定的領域層操做,並根據須要可返回另外一個DTO。單元測試

  • Core領域核心層,領域層就是業務層,是一個項目的核心,全部業務規則都應該在領域層實現。這個項目裏面,除了定義所需的領域實體類外,其實能夠定義咱們本身的自定義的倉儲對象(相似DAL/IDAL),以及定義本身的業務邏輯層(相似BLL/IBLL),以及基於AutoMapper映射規則等內容。

  • EntityFrameworkCore 實體框架核心層,這個項目不須要修改太多內容,只須要在DbContext裏面加入對應領域對象的倉儲對象便可。

  • Migrator數據遷移層,這個是一個輔助建立的控制檯程序項目,若是基於DB First,咱們能夠利用它來建立咱們項目的初始化數據庫。

  • Web.Core Web核心層,基於Web或者Web API的核心層,提供了對身份登錄驗證的基礎處理,沒有其餘內容。

  • Web.Core.Host Web API的宿主層,也是動態發佈Web API的核心內容,另外在Web API裏面整合了Swagger,使得咱們能夠方便對Web API的接口進行調試。

  • Tests 單元測試層,這個提供了一些應用層對象的模擬測試,其中測試的數據庫使用的是Entity Framework 的內存數據庫,不影響實際數據庫內容。

相關文章
相關標籤/搜索