背景
在開發這個框架之前,前前后后看過好幾款模塊化的框架,最后在一段時間內對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.-modularity
github:https://github.com/realyrare/ShenNiusFramework