ABP是一個開源且文檔友好的應用程序框架。ABP不只僅是一個框架,它還提供了一個最徍實踐的基於領域驅動設計(DDD)的體系結構模型,能夠支持 .net framework和 .net core兩種技術流派。前端
先後端分離的思想,不只僅能夠應用在Web的B/S開發,同時適用於C/S開發web
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框架應用就是這個基礎上擴展本身的業務項目。這個部分,咱們能夠根據官網上進行必定的選項配置,而後下載使用。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
下載.net core 項目後,其中後端部分的項目視圖以下所示框架
咱們從這個項目裏面能夠看到,它主要是分爲下面幾個項目分層。前後端分離
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 的內存數據庫,不影響實際數據庫內容。