1.1、ABP是什么?


ABP是ASP.NET Boilerplate的簡稱,從英文字面上理解它是一個關於ASP.NET的模板,在github上已經有5.7k的star(截止2018年11月21日)。官方的解釋:ABP是一個開源且文檔友好的應用程序框架。ABP不僅僅是一個框架,它還提供了一個最徍實踐的基於領域驅動設計(DDD)的體系結構模型

 

ABP與最新的ASP.NET CORE和EF CORE版本保持同步,同樣也支持ASP.NET MVC 5.x和EF6.x。

 

1、一個簡單的例子:

 

2、優點:

依賴注入(Dependency Injection):ABP使用並提供了傳統的DI基礎設施。上述TaskAppService類是一個應用服務(繼承自ApplicationService),所以它按照慣例以短暫(每次請求創建一次)的形式自動注冊到DI容器中。同樣的,也可以簡單地注入其他依賴(如事例中的IRepository<Task>)。

 

部分源碼分析:TaskAppService類繼承自ApplicationService,IApplicaitonServcie又繼承自ITransientDependency接口,在ABP框架中已經將ITransientDependency接口注入到DI容器中,所有繼承自ITransientDependency接口的類或接口都會默認注入。

 

//空接口

public interface ITransientDependency

{  }

   

//應用服務接口

public interface IApplicationService : ITransientDependency

{  }

 

//倉儲接口

public interface IRepository : ITransientDependency

{ }

 

倉儲(Repository):ABP可以為每一個實體創建一個默認的倉儲(如事例中的IRepository<Task>)。默認的倉儲提供了很多有用的方法,如事例中的FirstOrDefault方法。當然,也可以根據需求擴展默認的倉儲。倉儲抽象了DBMS和ORMs,並簡化了數據訪問邏輯。

 

授權(Authorization):ABP可以通過聲明的方式檢查權限。如果當前用戶沒有【update task】的權限或沒有登錄,則會阻止訪問UpdateTask方法。ABP不僅提供了聲明屬性的方式授權,而且還可以通過其它的方式。

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM