緣起
在.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應該會有新的進展
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5COvwVZy92Q0hXZuZ1ZvxmQvwlclR3ch12LcdXYy9CXkVmQldWYtl0LcdmbvRGavw1bp5iYldXbp5Cdpd2Lc9CX6MHc0RHaiojIsJye.png)
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