ABP總體介紹
- ABP是ASP.NET Boilerplate Project裙戏,ASP.NET樣板項目矛渴。
- ABP框架定位于快速開發(fā)
- ABP是一個用于最快實踐和流行開發(fā)現(xiàn)代Web應(yīng)用程序的新起點柳畔,旨在成為一個通用的Web應(yīng)用程序框架和項目模板并扇。
- ABP基于DDD的經(jīng)典分層架構(gòu)思想象泵,實現(xiàn)了眾多DDD的概念。
官方文檔:https://aspnetboilerplate.com/Pages/Documents
什么是ABP呢瑰枫?
服務(wù)端
- ASP.NET MVC和Web API
- 實現(xiàn)領(lǐng)域驅(qū)動設(shè)計DDD踱葛,包括實體、存儲庫光坝、領(lǐng)域服務(wù)尸诽、應(yīng)用程序服務(wù)、DTO盯另、UnitOfWork...
- 實現(xiàn)分層架構(gòu):領(lǐng)域?qū)友纺薄?yīng)用程序、表示層土铺、基礎(chǔ)結(jié)構(gòu)層
- 提供基礎(chǔ)設(shè)施,為大型項目開發(fā)可重用和可組合的模塊板鬓,使其依賴注入(使用Castle Windsor作為DI容器)悲敷。
- 提供嚴格的模型和基類,輕松使用對象關(guān)系映射ORM(直接支持EF)俭令。
- 支持并實現(xiàn)數(shù)據(jù)庫遷移Migration
- 包括簡單靈活的本地化系統(tǒng)后德,多語言。
- 包含服務(wù)端全局領(lǐng)域事件和EventBus
- 管理異常處理和驗證
- 為應(yīng)用程序服務(wù)創(chuàng)建動態(tài)WebApi層
- 提供基本和輔助類實現(xiàn)常見任務(wù)
- 使用約定優(yōu)于配置的原則
客戶端
- 提供項目模板為單頁應(yīng)用程序SPA和多頁應(yīng)用程序MPA抄腔,模板基于Bootstrap瓢湃。
- 常用jQuery和AngularJS庫
- 創(chuàng)建動態(tài)JS代理以輕松調(diào)用應(yīng)用程序服務(wù)理张,使用動態(tài)WebAPI層。
- 包含獨特的任務(wù)API
ABP功能特性
基礎(chǔ)設(shè)施層
- 依賴注入DI
- Session管理
- 緩存機制
- 日志管理
- 鍵值管理
- 時間管理
領(lǐng)域?qū)?/p>
- 實體
- 值對象
- 倉儲
- 領(lǐng)域服務(wù)
- 規(guī)約管理
- 工作單元
- 領(lǐng)域事件
- 數(shù)據(jù)過濾
應(yīng)用層(動態(tài)WebApi)
- 應(yīng)用服務(wù)
- 數(shù)據(jù)傳輸對象DTO
- 驗證數(shù)據(jù)傳輸對象
- 授權(quán)
- 功能管理
- 審計日志
展現(xiàn)層
- ASP.NET MVC
- 本地化
- 菜單導(dǎo)航
- 嵌入資源
- JS API
- CSRF/XSRF保護
WebApi
- WebApi控制器
- 動態(tài)WebAPI
- Odata集成
- SwaggerUI集成
ORM
- EntityFramework集成
- EntityFramework Core集成
- NHibernate集成
后臺服務(wù)
- 后臺作業(yè)
- Hangfire集成
- Quartz集成
實時服務(wù)
- 通知系統(tǒng)
- Signal集成
ModuleZero
ABP框架是可以獨立服務(wù)于其他任何數(shù)據(jù)庫的绵患,并盡可能使用他們能夠通用雾叭。因此,有也就沒有實行有關(guān)存儲數(shù)據(jù)的功能落蝙。如審計日志织狐、Session管理、授權(quán)...
ModuleZero實現(xiàn)了ABP框架的所有基礎(chǔ)概念筏勒,如租戶管理(多租戶)移迫、角色管理、用戶管理管行、Session厨埋、授權(quán)(權(quán)限)管理、設(shè)置管理捐顷、語言管理荡陷、審計日志等。
Microsoft ASP.NET Identifity框架
ASP基礎(chǔ)框架組建功能
- 基礎(chǔ)框架組件獨立套菜、通用亲善,可用于多個不同項目,類似于daxnet的Apworks框架逗柴。
- 對項目實現(xiàn)模塊化提供了支持蛹头,每個模塊有獨立的EF DbContext,可單獨指定數(shù)據(jù)庫戏溺。
- 對DDD的技術(shù)實現(xiàn)進行了封裝渣蜗,讓項目以及其精簡的代碼,專注于業(yè)務(wù)領(lǐng)域旷祸。
- 多租戶支持耕拷,每個租戶的數(shù)據(jù)自動隔離,業(yè)務(wù)模塊開發(fā)者無需手動操作TenantID托享。
- 集成ASP.NET Identifity骚烧,實現(xiàn)登錄認證、功能權(quán)限授權(quán)或驗證闰围、角色和用戶管理赃绊。
- 集成Log4Net實現(xiàn)日志記錄
- 集成AutoMapper實現(xiàn)DTO類與實體類的雙向自動轉(zhuǎn)換
- 實現(xiàn)ApplicationService的方法自動建立相應(yīng)的WebApi方法,AJAX可直接調(diào)用羡榴,無需寫ApiController和Action碧查。
- 調(diào)用ApplicationService的方法時,自動驗證權(quán)限和參數(shù)有效性,使用相應(yīng)的Attribute標(biāo)注忠售。
- 繼承自FullAuditeEntity基類的領(lǐng)域?qū)嶓w传惠,會自動實現(xiàn)軟刪除,在數(shù)據(jù)庫用lsDelete字段進行標(biāo)注稻扬。
- 實現(xiàn)一系列擴展方法簡化編碼
基于DDD的分層結(jié)構(gòu)
- 領(lǐng)域驅(qū)動設(shè)計(Domain-driven Design)
- DDD是一種模型驅(qū)動的軟件設(shè)計方式
用戶界面(展現(xiàn)層)
負責(zé)向用戶展現(xiàn)信息以及解釋用戶命令
- 請求應(yīng)用層以獲取用戶所需展現(xiàn)的數(shù)據(jù)
- 發(fā)送命令給應(yīng)用層要求其執(zhí)行某個命令
應(yīng)用層
很薄的一層卦方,定義軟件要完成的所有任務(wù)。對外為展現(xiàn)層提供各種應(yīng)用功能腐螟,包括查詢或命令愿汰,對內(nèi)調(diào)用領(lǐng)域?qū)樱I(lǐng)域?qū)ο蠡蝾I(lǐng)域服務(wù))各種業(yè)務(wù)邏輯,應(yīng)用層不包含業(yè)務(wù)邏輯乐纸。
領(lǐng)域?qū)?/p>
負責(zé)表達業(yè)務(wù)概念衬廷,業(yè)務(wù)狀態(tài)信息以及業(yè)務(wù)規(guī)則,領(lǐng)域模型處于此層汽绢,是業(yè)務(wù)軟件的核心吗跋。
基礎(chǔ)設(shè)施層
基礎(chǔ)設(shè)施層為其他層提供通用的技術(shù)能力,提供層間的通信宁昭,為領(lǐng)域?qū)訉崿F(xiàn)持久化機制跌宛。總之积仗,基礎(chǔ)設(shè)施層可以通過架構(gòu)或框架來支持其他層的技術(shù)需求疆拘。
ABP目錄結(jié)構(gòu)
- Core 領(lǐng)域?qū)樱娣艠I(yè)務(wù)實體和倉儲接口寂曹。
- Application 應(yīng)用服務(wù)層
- EntityFramework 基礎(chǔ)設(shè)施層哎迄,存放實體映射文件和倉儲實現(xiàn)類等。
- Web 展現(xiàn)層隆圆,使用ASP.NET MVC漱挚。
- WebApi 展現(xiàn)層,使用ASP.NET WebAPI渺氧。
數(shù)據(jù)庫設(shè)置
<connectionStrings>
<add name="Default" connectionString="Server=.; Database=MPA; User ID=sa; Password=sa" providerName="System.Data.SqlClient" />
</connectionStrings>
未能加載文件或程序集“Castle.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc”或它的某一個依賴項旨涝。找到的程序集清單定義與程序集引用不匹配。 (異常來自 HRESULT:0x80131040)
數(shù)據(jù)庫中已存在名為 'AbpAuditLogs' 的對象
解決方案:注釋201807270535111_Updated_ABP.cs內(nèi)的相同表代碼
PM> Update-Database
Specify the '-Verbose' flag to view the SQL statements being applied to the target database.
Applying explicit migrations: [201707261347311_Initial_Migration, 201710131316266_UpgradedTo_ABP_3.1, 201801311121458_Modified_Authorization_Entities, 201803261403237_Upgraded_To_Abp_v3_5, 201807270535111_Updated_ABP, 201807271154374_Upgraded_ABP_3.8.1].
Applying explicit migration: 201707261347311_Initial_Migration.
Applying explicit migration: 201710131316266_UpgradedTo_ABP_3.1.
Applying explicit migration: 201801311121458_Modified_Authorization_Entities.
Applying explicit migration: 201803261403237_Upgraded_To_Abp_v3_5.
Applying explicit migration: 201807270535111_Updated_ABP.
Applying explicit migration: 201807271154374_Upgraded_ABP_3.8.1.
Running Seed method.
登陸賬戶:admin
賬戶密碼:123qwe
https://v.qq.com/x/page/m0391qcwhyv.html
ABP代碼生成器
ABP Code Generator