ABP總體介紹,abp總體
ABP是“ASP.NET Boilerplate Project (ASP.NET樣板項目)”的簡稱。
ASP.NET Boilerplate是一個用最佳實踐和流行技術開發現代WEB應用程序的新起點,它旨在成為一個通用的WEB應用程序框架和項目模板。
ASP.NET Boilerplate 基於DDD的經典分層架構思想,實現了眾多DDD的概念(但沒有實現所有DDD的概念)。
ABP的官方網站:http://www.aspnetboilerplate.com
ABP在Github上的開源項目:https://github.com/aspnetboilerplate
ABP框架於2014年5月4日首次在Github開源,截止到2015年5月25日,總共進行了1271次代碼提交,49次版本發布,現在的版本號是0.6.1.1。
ASP.NET Boilerplate采用了以下技術:
服務器端:
- ASP.NET MVC 5、Web API 2、C# 5.0
- DDD領域驅動設計 (Entities、Repositories、Domain Services、Domain Events、Application Services、DTOs等)
- Castle windsor (依賴注入容器)
- Entity Framework 6 \ NHibernate,數據遷移
- Log4Net(日志記錄)
- AutoMapper(實現Dto類與實體類的雙向自動轉換)
客戶端:
- Bootstrap
- Less
- AngularJs
- jQuery
- Modernizr
- 其他JS庫: jQuery.validate、jQuery.form、jQuery.blockUI、json2
ABP框架已實現了以下特性:
- 多語言/本地化支持
- 多租戶支持(每個租戶的數據自動隔離,業務模塊開發者不需要在保存和查詢數據時寫相應代碼)
- 軟刪除支持(繼承相應的基類或實現相應接口,會自動實現軟刪除)
- 統一的異常處理(應用層幾乎不需要處理自己寫異常處理代碼)
- 數據有效性驗證(Asp.NET MVC只能做到Action方法的參數驗證,ABP實現了Application層方法的參數有效性驗證)
- 日志記錄(自動記錄程序異常)
- 模塊化開發(每個模塊有獨立的EF DbContext,可單獨指定數據庫)
- Repository倉儲模式(已實現了Entity Framework、NHibernate、MangoDB、內存數據庫)
- Unit Of Work工作單元模式(為應用層和倉儲層的方法自動實現數據庫事務)
- EventBus實現領域事件(Domain Events)
- DLL嵌入資源管理
- 通過Application Services自動創建Web Api層(不需要寫ApiController層了)
- 自動創建Javascript 的代理層來更方便使用Web Api
- 封裝一些Javascript 函數,更方便地使用ajax、消息框、通知組件、忙狀態的遮罩層等等
除ABP框架項目以外,還開發了名叫“Zero”的模塊,實現了以下功能:
- 身份驗證與授權管理(通過ASP.NET Identity實現的)
- 用戶&角色管理
- 系統設置存取管理(系統級、租戶級、用戶級,作用范圍自動管理)
- 審計日志(自動記錄每一次接口的調用者和參數)
我在其他項目中看到的很多優秀設計,在ABP項目中也已存在,而且可能實現得更好。ABP框架的代碼,都通過xUnit進行了單元測試。作者一直在用ABP框架開發他們的實際項目,從Github和他官方論壇上的信息可以看到,有很多國外的開發者在將ABP用作生產項目的基礎框架。如果需要直接使用ABP組件,可以通過Nuget安裝(在VS的Nuget包管理界面搜索Abp)。
為了更好地將ABP適用於自己的項目,我對ABP的源碼做了一些修改,而沒有直接使用ABP組件。
我的前篇文章中有介紹:新思想、新技術、新架構——更好更快的開發現代ASP.NET應用程序(續1)
我希望更多國內的架構師能關注到ABP這個項目,也許這其中有能幫助到您的地方,也許有您的參與,這個項目可以發展得更好。
今天只是作了一個大概介紹,希望有更多的朋友能去閱讀源代碼,然後參與討論。
ABP適用的場景:中小規模WEB應用開發。(處理高並發並不是ABP的強項。需要非常高並發的DDD框架,建議去研究netfocus的ENode。)
原文地址:http://www.cnblogs.com/Leo_wl/p/4537392.html