1. 程式人生 > >ABP官方文件(一)【入門介紹】

ABP官方文件(一)【入門介紹】

1.1 ABP總體介紹 - 入門介紹

ABP是“ASP.NET Boilerplate Project (ASP.NET樣板專案)”的簡稱。

ASP.NET Boilerplate是一個用最佳實踐和流行技術開發現代WEB應用程式的新起點,它旨在成為一個通用的WEB應用程式基礎框架和專案模板。

ASP.NET Boilerplate 基於DDD的經典分層架構思想,實現了眾多DDD的概念(但沒有實現所有DDD的概念)。

ABP框架於2014年5月4日首次在Github開源,截止到2015年5月25日,總共進行了1271次程式碼提交,49次版本釋出,現在的版本號是0.6.1.1。

1.1.1 ABP採用了以下技術

伺服器端:

  • 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

1.1.2 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、訊息框、通知元件、忙狀態的遮罩層

“Zero”的模組,實現了以下功能:

  • 身份驗證與授權管理(通過ASP.NET Identity實現的)
  • 使用者&角色管理
  • 系統設定存取管理(系統級、租戶級、使用者級,作用範圍自動管理)
  • 審計日誌(自動記錄每一次介面的呼叫者和引數)

在其他專案中的很多優秀設計,在ABP專案中也已存在,而且可能實現得更好。ABP框架的程式碼,都通過xUnit進行了單元測試。作者一直在用ABP框架開發他們的實際專案,從Github和他官方論壇上的資訊可以看到,有很多國外的開發者在將ABP用作生產專案的基礎框架。如果需要直接使用ABP元件,可以通過Nuget安裝(在VS的Nuget包管理介面搜尋ABP)。

為了更好地將ABP適用於自己的專案,我對ABP的原始碼做了一些修改後使用的,沒有直接使用ABP元件。

我希望更多國內的架構師能關注ABP這個專案,也許這其中有能幫助到你的地方,也許有你的參與,這個專案可以發展得更好。

今天只是作了一個大概介紹,希望有更多的朋友能去閱讀原始碼,然後參與討論。

1.1.3 ABP適用的場景

中小規模WEB應用開發,可直接使用ABP框架。 較大型專案可以在ABP框架的原始碼基礎上進行擴充套件,以實現分散式架構。

注:處理高併發並不是ABP的強項。需要非常高併發的DDD框架,建議去研究netfocus的ENode。