天天看點

一、Abp vNext 基礎篇丨介紹

緣起

在.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 vNext 基礎篇丨介紹

ABP 自帶功能

  • Saas管理
  • 組織管理
  • 角色管理
  • 審計日志
  • 系統設定

業務功能

  • 部落格管理
  • 文章管理

前端站點

  • 釋出文章
  • 使用者登入/注冊
  • 文章評論

項目分層依賴關系

一、Abp vNext 基礎篇丨介紹

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