ASP.NET樣板項目ABP架構的特性總結_基礎應用

來源:互聯網
上載者:User

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
ASP.NET Boilerplate採用了以下技術:

  • 多語言/本地化支援
  • 多租戶支援(每個租戶的資料自動隔離,業務模組開發人員不需要在儲存和查詢資料時寫相應代碼)
  • 虛刪除支援(繼承相應的基類或實現相應介面,會自動實現虛刪除)
  • 統一的異常處理(應用程式層幾乎不需要處理自己寫異常處理代碼)
  • 資料有效性驗證(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是什嗎?
ABP是為新的現代Web應用程式使用最佳實務和使用最流行工具的一個起點。可作為一般用途的應用程式的基礎架構或項目模板。它的功能包括:

伺服器端:

  • 基於最新的.NET技術 (目前是ASP.NET MVC 5、Web API 2、C# 5.0,在ASP.NET 5正式發布後會升級)
  • 實現領域驅動設計(實體、倉儲、領網域服務、領域事件、應用服務、資料轉送對象,工作單元等等)
  • 實現分層體繫結構(領域層,應用程式層,展現層和基礎設施層)
  • 提供了一個基礎架構來開發可重用可配置的模組
  • 整合一些最流行的開源架構/庫,也許有些是你正在使用的。
  • 提供了一個基礎架構讓我們很方便地使用依賴注入(使用Castle Windsor作為依賴注入的容器)
  • 提供Repository倉儲模式支援不同的ORM(已實現Entity Framework 、NHibernate、MangoDb和記憶體資料庫)
  • 支援並實現資料庫遷移(EF 的 Code first)
  • 模組化開發(每個模組有獨立的EF DbContext,可單獨指定資料庫)
  • 包括一個簡單的和靈活的多語言/本地化系統
  • 包括一個 EventBus來實現伺服器端全域的領域事件
  • 統一的異常處理(應用程式層幾乎不需要處理自己寫異常處理代碼)
  • 資料有效性驗證(Asp.NET MVC只能做到Action方法的參數驗證,ABP實現了Application層方法的參數有效性驗證)
  • 通過Application Services自動建立Web Api層(不需要寫ApiController層了)
  • 提供基類和協助類讓我們方便地實現一些常見的任務
  • 使用“約定優於配置原則”

用戶端:

  • Bootstrap、Less、AngularJs、jQuery、Modernizr和其他JS庫: jQuery.validate、jQuery.form、jQuery.blockUI、json2等
  • 為單頁面應用程式(AngularJs、Durandaljs)和多頁面應用程式(Bootstrap+Jquery)提供了項目模板。
  • 自動建立Javascript 的代理層來更方便使用Web Api
  • 封裝一些Javascript 函數,更方便地使用ajax、訊息框、通知群組件、忙狀態的遮罩層等等

 

 

ABP不是什嗎?
ABP 提供了一個應用程式開發模型用於最佳實務。它擁有基礎類、介面和工具使我們容易建立起可維護的大規模的應用程式。

然而:

  • 它不是RAD工具之一,RAD工具的目的是無需編碼建立應用程式。相反,ABP提供了一種編碼的最佳實務。
  • 它不是一個代碼產生工具。在運行時雖然它有一些特性構建動態代碼,但它不能產生代碼。
  • 它不是一個一體化的架構。相反,它使用流行的工具/庫來完成特定的任務(例如用EF做ORM,用Log4Net做日誌記錄,使得Castle Windsor作為賴注入容器, AngularJs 用於SPA 架構)。

 就我使用了ABP幾個月的經驗來看,雖然ABP不是RAD,但是用它開發項目絕對比傳統三層架構要快很多。

雖然ABP不是代碼產生工具,但因為有了它,使我們項目的代碼更簡潔規範,這有利於使用代碼產生工具。

我自己使用VS2013的Scaffolder+T4開發的代碼產生器,可根據領域對象的UML類圖自動產生全部前後端代碼和資料庫,簡單的CURD模組幾乎不需要編寫代碼,有複雜商務邏輯的模組主要補充領域層代碼即可。這樣就能把時間多花在領域模型的設計上,減少寫代碼的時間。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.