日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

以Blog.Core的方式来打开Abp.vNext

發布時間:2023/12/4 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 以Blog.Core的方式来打开Abp.vNext 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

(發現Abp這個logo真像佐助寫輪眼)

最近自己的框架已經基本的成型了,當然還有很多質疑的地方,比如這些人是這么說的,基本都是原文:

你的教程太亂了,和框架代碼都不一樣(???)

文章還行,代碼規范要改善(???)

為啥要分那么多層,看著不舒服(???)

給我講講SqlSugar的優勢在哪里(???)

多庫,讀寫分離沒看出來有啥意義(???)

我也沒辦法,只能用問號來表示我的看法了,其實一直以來我都是希望通過文章的形式讓大家如何去學習,后來雖然框架的越推越廣,導致很多人都是直接通過框架來學習知識點了,所以沖突就慢慢出來了,既然本末倒置了,那索性我也倒過來,不去修改文章了,精修代碼吧,因此我也打算趁著上班之余,看看傳說中的最厲害,最豐富,最難懂的框架 —— Abp vNext,看看他們是如何運營的吧。

群主的安排是什么?

我的計劃:很多小伙伴會說,會不會開系列教程,這個應該會有,目前我還在學習階段,我的想法通過博客和視頻的形式,來一個三步走,先了解這個框架,再使用框架搭建自己項目,最后分析下他的運行原理。

你的計劃:當然這個教程肯定有范圍的,初學者不建議學,建議剛入門的還是看我的教程和代碼吧,然后按照這個順序學,先掌握ASP.NET Core,然后簡單了解前后端分離,再學習下DDD領域驅動設計的思想,接著簡單了解下IdentityServer4的內容,至少要了解認證和授權的部分內容,我的教程目錄,設計模式是輔助:

(老張的哲學,博客園系列教程)

大概就是這樣,今天呢,特別簡單,不會說這個框架的由來,官網地址,如何下載,如何說這個框架是多么多么厲害,大家能看到這里,證明都是知道的,今天畢竟是一個嘗鮮,是先讓大家初見下Abp的框架布局情況,而且是通過Blog.Core框架的形式來了解,前提是你正在使用或者研究Blog.Core。

1、兩個框架的對比

既然要對比呢,我就簡單的做了一個圖,當然,我也不是真心的要和Abp比較,因為完全沒有對比性,只是想說明一下,Abp這個框架的好處:

(Blog.Core與Abp框架對比圖)


我自己簡單的總結了下,Abp各個方面都很領先,是毋庸置疑的好框架,當然為了體現文章的意義,我也列舉了不足之處,就是對新手的不太友好,很多初學者是看不懂的,這也就是為什么我在文章開頭說的,如果想要學好Abp,可以先看看我的框架或者系列文章。

那我接下來就帶著大家看看,如何通過Blog.Core來入門Abp vNext框架。

2、整體分層情況

(很巧,都是標準的十層結構)

當然,這是開玩笑的。不過總體上來看,似乎兩個框架關聯性并不是很大,

Blog.Core采用的是,{服務-倉儲-接口}的開發模式;

Abp采用的是,{應用-領域-基礎設施}的DDD開發模式;

很多人都說Blog.Core就是一個簡單的三層架構,其實我當時這么寫,就是為了引出后邊的DDD領域驅動設計教程,不然為啥不直接叫DAL層和BLL層,還不能抬杠,抬杠我就會被問區別,我也是懶得解釋。

這么看其實關聯性不大,但是接下來我會拆分來講,你就會發現,其實很多都是一樣的。

3、Web層對比分析

因為默認創建的Abp框架,用的是MVC Page模式(當然它封裝了api,這個以后再說),所以我們簡單看一下Startup.cs就行:

Blog.Core在依賴注入中,采用的是服務模塊化注冊,然后配置Autofac進行服務層的依賴注入自動化,然后配套進行動態代理AOP。

Abp也是采用的模塊化的注冊方式,當然他這個封裝的更徹底,更好吧,然后他自己也將Autofac容器給封裝了,反正就是全部封裝了。

4、服務層設計分析

服務層,也可以叫做應用層,主要是用來向上對展示層提供服務的,向下嘛,可以是領域層或者倉儲層:

在Blog.Core中,采用的是Service和IService的形式,分了兩個層,分別是

.Services?和?.IServices

我們可以定義多個服務和服務接口,來實現不同業務模塊的聯系,然后將IService給暴漏出給展示層。

而在Abp中呢,我們的Service層變成了應用層.Application,IServices層變成了應用契約層

.Application.Contracts,契約也就是接口,主要是對展示層進行服務封裝的,然后由應用層進行實現。

除了這個服務接口呢,還有一個實體映射,也就是Dto:

在Blog.Core項目中,我設計到了Web層,當然這個也是可以的:

不過Abp倒是分開了兩個部分,他在Abp和應用層都有,不過基本都是在應用層來設計的:

PS:Abp分層名字寫的還是挺好的,把這兩個層并列在一起了,不像我的,因為名字排序的問題,距離比較遠。

5、倉儲層設計解析

倉儲層其實屬于基礎設施層的一部分,基礎設施層分兩部分,一個是對持久化的處理,另一個就是對公共層的封裝,那現在咱們先說下第一部分,持久化:

在Blog.Core中,我單獨建立了兩個層,倉儲和倉儲接口,這個和服務層與服務接口層似乎有些雷同,很多人表示不解,為啥要分開,這里不多說,詳細如果你看過DDD,明白了應用層和基礎設施層的設計應該就明白了。

但是在Abp框架中,有一些不太一樣了,你似乎看不到他定義Repository和IRepository的相關存在,他因為用到了EFCore,所以把EFCore當成了倉儲了。

其實不是的,如果你看他的源碼,就可以發現,他還是有倉儲的影子的,只不過是封裝了:

剛剛我們在應用層中定義的服務,其實是集成了倉儲接口的,只不過是基類,而且命名空間還是Domain領域層:

public class BookAppService :CrudAppService<Book, BookDto, Guid, PagedAndSortedResultRequestDto,CreateUpdateBookDto, CreateUpdateBookDto>,IBookAppService{private readonly IRepository<Book, Guid> _repository;public BookAppService(IRepository<Book, Guid> repository): base(repository){_repository = repository;}}

從這里我們可以看出來,領域層中定義了倉儲接口,然后再在.EntityFrameworkCore層中設計我們的持久化操作。

這里就引出了第一個重要知識點,領域層中到底是什么?—— 一切包含領域行為的類,都應該封裝到領域層中,目前的第一個,倉儲接口。那是不是還有其他的呢?

6、實體層的設計解析

實體層這個顧名思義,我們要持久化,肯定要定義實體,或者用DDD中的屬于,可以叫聚合。

在Blog.Core中,我用Model層,來封裝了實體層,這個是沒問題的,但是有一個問題就是,這層不應該在定義ViewModels層了,這個不應該寫到這里,應該寫到應用契約層,畢竟我們知道契約就是為了用戶的。

在Abp框架中,設計的就比較合理了,詳細你也應該能看的懂,這里不多說了。

這里要重點說的就是,領域層第二塊內容——實體,剛剛我們說了第一個是倉儲接口,這兩個其實都是擁有領域行為的類。

7、公共層設計解析

公共層其實這個最容易理解,就是平時我們整個項目中,都會遇到的以下模塊,比如錯誤碼,本地化,枚舉,常量等等,這些統一定義好后,可以貫穿到我們整個項目中。

在Blog.Core中,我就直接叫做Common層了,言簡意賅。

而在Abp中,他把這些數據放到了.Domain.Shared層了,從名字可以看懂,就是分享的意思,再加上Abp是一個DDD領域驅動的框架,所以就基于領域層下的分享層了。

8、其他層設計分析

至于其他層就很簡單了,Abp中,剩下的就是遷移層了:

.DbMigrator其實是一個控制臺層,配置好數據庫連接字符串,就可以直接生成項目了。

.EntityFrameworkCore.DbMigrations是一個類庫,存放我們的遷移記錄。

Blog.Core中的兩個:

.FrameWork是一個T4模板,生成整個框架文件;

.Tasks是一個任務調度層,目前用的是Quartz.Net;

當然,如果你還沒用過Abp,這里我列舉了十步走,你可以試試。

9、Abp開發十步走

其實說了這么多,已經基本的說完了,從上邊的解析中,我們可以看到,如果你學會了Blog.Core,其實很好入門Abp的,至少我只看了半個小時就知道如何開發了,這里我還列舉了Abp開發十步走:

好啦,說了這么多,詳細你肯定已經會使用Abp了吧,至少寫個增刪改查是沒問題的。

總結

以上是生活随笔為你收集整理的以Blog.Core的方式来打开Abp.vNext的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。