.NET 8来了,那就开发一套基于.NET 8的快速开发框架吧,就叫Simple
??.NET 8來了,開發一套基于.NET 8的快速開發框架吧,就叫 Simple 點我?Star
?? 框架由來
為啥有了那么多開發框架,還得非要再搞個呢,大家都知道很多快速開發框架,啥ABP 啥水果啥的,怎么評價他們呢,就是一個字,叼!。
可是作為一個打工人,還不是公司用啥我用啥,公司不用ABP,你也不能老新建個項目就上ABP,上各種Orm吧,并且用ABP類的框架,還是需要些學習時間的,這些框架各種約定,各種快捷Api,各種一鍵生成了啥啥啥,好用吧,可是一但你公司不能用這些框架,你是不是抓瞎了,之前遇到個只用ABP的新同事,進公司要求只能用基于ASP.Net Core的框架和指定的一些類庫,要他開發個文件上傳的模塊,用于客戶服務器打開網頁上傳下數據庫備份之類的文件到公司備份服務器做異地備份,硬是邊看文檔邊搞了,干了2個周,說白了已經不知道ASP.Net Core是咋玩的了。
?? 框架特點
由此我萌發了寫個快速開發的框架,他需要有這些特點:
- 開發的框架基于 .NET 8 各種特性啥的盡量少,但是盡量方便點,比如實現自動注入
- 除非很需要,框架本身盡量少引用第三方庫,但是又要方便后期添加需要用到的第三方庫
- 需要有基本的授權、鑒權,免得每次都要去寫這些通用的東西
- 需要實現一套 CRUD 實現,讓大量curd解放,能快速生成,同時能方便使用代碼生成器生成這一套東西
- 需要實現一套后臺管理的前端,并實現基礎頁面,如登錄、系統管理相關頁面
? 規劃
根據以上構想,做了一些規劃:
- 使用 NLog 做日志庫
- 使用 Redis 庫 StackExchange.Redis
- 使用 Json 庫 Newtonsoft.Json
- 使用 LitDb 輕量數據庫做應用存儲庫
- 使用 MediatR 做應用內事件分發庫
- 使用 EF Core做默認 Orm
- 使用 FluentScheduler 做定時任務模塊
- 使用多Controller項目模塊,支持讓各自的api模塊使用獨立項目,比如AdminController使用一個項目,其他的又分別可以使用自己的項目
- 支持多數據庫結構,可以讓不同的業務范圍使用不同的數據庫,比如系統管理模塊使用MSSQL DB1,業務模塊 使用Mysql DB2
- 使用 Razor 做模板生成器引擎
??話不多說,上圖吧
添加基礎庫 Simple.Core 添加基礎庫 Simple.Core
基礎庫主要包含一些幫助類,用于方便開發的,和其他框架大同小異
Web項目擴展庫 Simple.Core.Web
主要實現:
?? 應用模塊基類 SimpleModule,繼承此模塊基類可分模塊開發,分模塊按需注冊、配置管道,配置模塊初始化
?? 自動注入,自動掃描標注了自動注入的任何類和實現,不包含一對多實現
?? 鑒權基類控制器 AppAuthController
?? Curd控制器 AppCurdController
?? 應用事件分發管理 AppDomainEventDispatcher
?? 簡單主機 SimpleHost ,該類用于一鍵啟動按默認配置好服務的 web主機、控制臺主機
?? 其他web類,jwt相關,異常和鑒權相關
?? 主機擴展類 HostServiceExtension 里面包含各種服務注冊、獲取,模塊注冊,權限自動生成的方法
EFCore 擴展庫 Simple.EntityFrameworkCore
主要實現:
?? DbContext基類 AppDbContext
?? Curd 實現類 BaseCurdService
?? Ef日志記錄 EFLoggerFactory
代碼生成器 Simple.Generator
基于Razor 模板引擎類RazorLight的封裝
定時任務 Simple.Job
基于 FluentScheduler 封裝的自動注冊任務,實現任務自動注冊,配置基類用于可使每個任務能單獨配置執行調度器
?? 以上就是整個框架的封裝,夠簡單吧,是不是感覺啥都沒有用,就這么點東西已經完成了我上面構想的支撐!
下面大家看下admin模塊和common模塊,分別都能實現自動注入、定時任務、自動生成各自的數據庫及數據初始化、領域事件處理,順帶說下,不管是控制臺應用的主機還是webapi的主機,里面的模塊都可使用構造函數注入哦
看admin控制器項目及主機啟動,后面加業務控制器啥的,直接新建項目就行,控制臺主機也自動支持了自動注入啥的,開發服務啊啥的都可以重復使用上面Applications下的任意實現
WebHost 主機項目
啟動 WebHost 主機
看控制臺項目
啟動控制臺主機
對了,注意配置文件的開發和發布隔離哦
好了,用最簡單的東西實現了大多數項目業務都能搞定的框架了吧,如果對你有用,記得 點我?Star 哦,初步版本已提交,有時間會持續優化,代碼生成器還有一丟丟沒搞玩,其他都差不多了,需要的看代碼去吧。
總結
以上是生活随笔為你收集整理的.NET 8来了,那就开发一套基于.NET 8的快速开发框架吧,就叫Simple的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 手撕Vue-Router-知识储备
- 下一篇: springboot在线人数统计