?.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 哦,初步版本已提交,有時間會持續最佳化,程式碼生成器還有一丟丟沒搞玩,其他都差不多了,需要的看程式碼去吧。