ABP(現代ASP.NET樣板開發框架)系列之一、ABP整體介紹

點這裏進入ABP系列文章總目錄html

 

基於DDD的現代ASP.NET開發框架--ABP系列之一、ABP整體介紹git

 

ABP是「ASP.NET Boilerplate Project (ASP.NET樣板項目)」的簡稱。github

ASP.NET Boilerplate是一個用最佳實踐和流行技術開發現代WEB應用程序的新起點,它旨在成爲一個通用的WEB應用程序框架和項目模板。ajax

ASP.NET Boilerplate 基於DDD的經典分層架構思想,實現了衆多DDD的概念(但沒有實現全部DDD的概念)。數據庫

ABP的官方網站http://www.aspnetboilerplate.comjson

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 五、Web API 二、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組件。app

個人前篇文章中有介紹:新思想、新技術、新架構——更好更快的開發現代ASP.NET應用程序(續1)


我但願更多國內的架構師能關注到ABP這個項目,也許這其中有能幫助到您的地方,也許有您的參與,這個項目能夠發展得更好。
今天只是做了一個大概介紹,但願有更多的朋友能去閱讀源代碼,而後參與討論。


ABP適用的場景:中小規模WEB應用開發。(處理高併發並非ABP的強項。須要很是高併發的DDD框架,建議去研究netfocus的ENode。)

 

歡迎加QQ羣:

ABP架構設計交流羣:134710707 ABP架構設計交流羣      ABP架構設計交流2羣: 579765441ABP架構設計交流羣2

 

點這裏進入ABP系列文章總目錄

相關文章
相關標籤/搜索