緣起
在.Net行也目前工作5年,前年認識了老張的哲學
,也跟着一起學習了非常多的知識,非常感謝老張鼓勵我來做ABP這個系列的教程,我也努努力帶着我那小小的海漂夢(上海漂流)來搞起。
ABP vNext 簡要介紹
ABP vNext 框架是一個基於ASP.NET核心的完整基礎設施,通過遵循軟件開發最佳實踐和最新技術來創建現代web應用程序和API,不同於老的ABP框架新的 ABP vNext 框架核心庫更加精簡,因為將原有許多的組件從其核心庫抽離成獨立的組件。這樣開發人員可以更加靈活的選擇自己需要的功能進行集成,使項目遠離臃腫的庫,比起原有的 ABP 框架 ABP vNext 完全基於 ASP.NET Core 丟掉了歷史包袱,設計更加合理,更加細粒度的模塊化設計。
Abp vNext 官方文檔提供了非常全面的功能介紹,官方提供了啟動模板,模板遵循了領域驅動設計的最佳實踐來進行項目分層,引入了常用的功能模塊。
如果你有不錯的.Net基礎那么Abp你用起來會的心用手,使用過程中遇到的問題幾乎可以在官方文檔和Issues中找到並解決。
但如果你是一個 .Net 新手你不知道什么是依賴注入、模塊化、DDD 推薦先去 https://www.cnblogs.com/laozhang-is-phi/p/9495618.html#autoid-1-0-0
學習一下。
后續文章中出現的ABP都是指ABP vNext。
開篇簡介
Bcvp.Blog.Core
是基於老張的哲學
Blog.Core項目采用ABP vNext框架和DDD思想進行重構的項目,教程面向.Net Core初中級開發人員,從基礎項目搭建開始一步步學習使用ABP vNext框架並在開發中融入DDD思想。
整篇文章目前會分為3個階段分別是。
- 基礎篇(學習ABP vNext框架和DDD)。
- 中級篇(學習模塊化和部分源代碼)。
- 高級篇(ABP vNext微服務)。
組織地址:
https://github.com/BaseCoreVueProject
作者博客:
https://www.cnblogs.com/MrChuJiu/
框架功能
整體教程會設計的功能介紹如下,下圖為ABP官方商業版,我們只抽取部分功能進行實現。
前端框架目前采用Bcvp組織的:https://github.com/BaseCoreVueProject/angular-template 作為前端教程框架,暫時不推薦將該框架應用生產(不是技術問題),ABP官方的目前正在推行LeptonX應該會有新的進展
ABP 自帶功能
- Saas管理
- 組織管理
- 角色管理
- 審計日志
- 系統設置
業務功能
- 博客管理
- 文章管理
前端站點
- 發布文章
- 用戶登錄/注冊
- 文章評論
項目分層依賴關系
Domain.Shared 其他項⽬直接或間接引⽤,項⽬中定義的類型在所有項⽬中共享。
Domain 只引⽤ Domain.Shared ,⽐如:在 Domain.Shared 中定義的 IssuType 枚舉類型需要 在 Domain 項⽬中 Issue 實體中⽤到。
Application.Contracts 依賴 Domain.Shared ,這樣我們可以在 DTOs 中使⽤這些共享類型。 ⽐如: CreateIssueDto 中可以直接使⽤ IssueType 枚舉。
Application 依賴 Application.Contracts ,因為 Application 實現 Application.Contracts 中定義的服務接⼝和使⽤ DTO 對象。同時,引⽤ Domain 項⽬,在應 ⽤服務中使⽤倉儲接⼝或領域對象。
EntiryFrameworkCore 依賴 Domain ,映射 Domain 對象(實體和值類型)到數據庫表 (ORM)並實現在 Domain 中定義的倉儲接⼝。
HttpApi 依賴 Application.Contract ,在控制器在內部對 應⽤服務接⼝ 進⾏依賴注⼊。
HttpApi.Client 依賴 Application.Contract 消費應⽤服務 Web 依賴 HttpApi ,發布⾥⾯定義的 HTTP APIs 。另外,通過這種⽅式,它間接地依賴於 Application.Contracts 項⽬,可以在⻚⾯/組件中使⽤應⽤服務
結語
本節只是作為一個開篇講解希望各位持續關注
聯系作者:加群:867095512 @MrChuJiu