背景
在開發這個架構之前,前前後後看過好幾款子產品化的架構,最後在一段時間内對ABP VNext痛下狠心,研究一段時間後,不得不說 ABP VNext的代碼層面很規範,也都是一些最佳實踐,開發出一個子產品效率也很高。但不得不說,于我而言太重了。還看過一些其他子產品化的架構,就不說了,學習成本于我而言太高了,主要是自己懶。
于是,我在想有沒有一款上手簡單,比較經濟實用的子產品化架構,隻要會.net core 基本就可以上手呢,于是,将ABP VNext的子產品化核心代碼抽出來(在這裡要特别感謝土牛了),結合asp.net core很完美,我本身的需求就是做到業務邏輯代碼能夠複用,不用經常一些已經寫過好幾遍的簡直難受到要吐的重複代碼,這于我而言就足夠了。
架構簡介
一款基于Asp.net core3.1的子產品化開發架構,提取了ABP VNext的子產品核心,适合中小型項目快速開發,取名為神牛(ShenNius),意為大神大牛多提意見,一起參與,神牛雲集,為dotnet社群貢獻一份自己的力量。追求“簡單”,“高效”,“實用”,總之秉承大道至簡的原則開發,堅持業務子產品最低複雜度複用,隻要會C#,再會點Asp.NetCore基礎知識,極易上手。适合小白入門進階,更适用(實用)老手上路幹活。
所有的業務代碼可以按照類庫劃分,使用宿主托管。所有的代碼堅持" Don't repeat yourself "。堅決反對" 簡單的事情複雜幹 "," 大量代碼在應用層過度層層封裝 ",反對" 過度設計 "的原則下進行開發。如果你有這個習慣,并且也想找一款迷你型、上手快,不用學習太多東西的架構,那麼它就适合你,隻要你會dotnet core,幾乎沒有學習成本,除了ABP VNext的子產品化核心代碼。另外、順手做了個簡單的背景權限管理做為入門例子。采用LayuiMini+Asp.Net Core Razor Page,本來是想用Blazor,我前後看了幾款UI架構,目前都不是很成熟,需要踩坑。而我由于時間比較緊迫關系,隻有自己一個人,先使用Layui,後期有時間我還是想上Blazor的,目前整個前後端互動基本都是分離的,後面想要切換到Blazor,也很好對接。
注:權限背景管理有部分樣式之類的有借鑒“ FytSoaCms”這個開源項目。
軟體架構
API架構:dotNetCore
ORM:SqlSugarCore
緩存:MemoryCache(後期會上redis,看項目業務需求)
日志管理:Nlog
工具類:Aes加密、Md5加密、RSA加密、Des加密
token:Json Web Token
實體驗證:FluentValidation
實體映射:AutoMapper
使用說明
ShenNius.ModuleCore是子產品化的核心代碼
ShenNius.Swagger是封裝的API Doc
ShenNius.Share.Infrastructure 基礎設施、裡面包含常用的擴充方法、靜态類
ShenNius.Share.Models 實體層、裡面包括Dto驗證、配置類
ShenNius.Share.Service 服務層、業務邏輯基本都在這個裡面、裡面包含了資料通路操作。
ShenNius.Sys.API 基于RBAC的權限API。
ShenNius.Cms.API 基于Cms的API (待完成)
ShenNius.Shop.API 基于Cms的API (待完成)
ShenNius.API.Hosting API的宿主,所有API目前都放在這個裡面托管,這也是魅力所在,可以Sys和Cms API各自托管使用獨立的宿主,主要看業務量。拆合很容易。
ShenNius.Layui.Admin 基于layui的背景管理。
安裝教程
git clone
https://gitee.com/shenniu_code_group/shen-nius.-modularity.git多項啟動ShenNius.API.Hosting 和ShenNius.Layui.Admin
ShenNius.API.Hosting 可以配置你要啟動的API項目
效果圖

最後說明
這個架構,我一直會更新下去,不斷的去調整架構,關于Asp.Net Core Api如何配置swagger,FluentValidation等技術文章我近期也會更新文章出來,隻要業務需要,我會将一些技術點慢慢地融入到架構中來。盡量做到務實,盡量不在應用層封裝自己大量的東西,增加學習成本。我本人真的不喜歡在應用層封裝大量東西的架構,包了一層又一層,沒任何意義。
另外,近期我會把一些權限管理的前端bug修複下,前端技術我是個半桶水,真的很發愁,如果有人願意一起做開源,為社群貢獻一份力量,那就盡情的聯系我吧。以前自己也做了大量的個人項目,但都沒有開源出來。這次基本也是從小白做起,一起學習如何做好一個開源項目。
對了,近期我也會把CMS子產品盡快完善起來,商城子產品後面逐漸排期更新。
最後,如果有什麼問題,我也自建了"dotnet根據地"這樣一個微信群,可以識别下面的二維碼加入,一起交流溝通,如果群二維碼過期了也可以識别下面二維碼加我微信,邀請你加入微信群。
源碼位址
碼雲:
https://gitee.com/shenniu_code_group/shen-nius.-modularitygithub:
https://github.com/realyrare/ShenNiusFramework