.NET 8來了,開發(fā)一套基于.NET
前言
.NET 8來了,開發(fā)一套基于.NET 8的快速開發(fā)框架吧,就叫Simple:https://gitee.com/VCodeWork/simple-framework
框架由來
為啥有了那么多開發(fā)框架,還得非要再搞個呢,大家都知道很多快速開發(fā)框架,啥ABP 啥水果啥的,怎么評價他們呢,就是一個字,叼!。
可是作為一個打工人,還不是公司用啥我用啥,公司不用ABP,你也不能老新建個項目就上ABP,上各種Orm吧,并且用ABP類的框架,還是需要些學(xué)習(xí)時間的,這些框架各種約定,各種快捷Api,各種一鍵生成了啥啥啥,好用吧,可是一但你公司不能用這些框架,你是不是抓瞎了,之前遇到個只用ABP的新同事,進公司要求只能用基于ASP.Net Core的框架和指定的一些類庫,要他開發(fā)個文件上傳的模塊,用于客戶服務(wù)器打開網(wǎng)頁上傳下數(shù)據(jù)庫備份之類的文件到公司備份服務(wù)器做異地備份,硬是邊看文檔邊搞了,干了2個周,說白了已經(jīng)不知道ASP.Net Core是咋玩的了。
框架特點
由此我萌發(fā)了寫個快速開發(fā)的框架,他需要有這些特點:
1、開發(fā)的框架基于 .NET 8 各種特性啥的盡量少,但是盡量方便點,比如實現(xiàn)自動注入
2、除非很需要,框架本身盡量少引用第三方庫,但是又要方便后期添加需要用到的第三方庫
3、需要有基本的授權(quán)、鑒權(quán),免得每次都要去寫這些通用的東西
4、需要實現(xiàn)一套 CRUD 實現(xiàn),讓大量curd解放,能快速生成,同時能方便使用代碼生成器生成這一套東西
5、需要實現(xiàn)一套后臺管理的前端,并實現(xiàn)基礎(chǔ)頁面,如登錄、系統(tǒng)管理相關(guān)頁面
規(guī)劃
根據(jù)以上構(gòu)想,做了一些規(guī)劃:
1、使用 NLog 做日志庫
2、使用 Redis 庫 StackExchange.Redis
3、使用 Json 庫 Newtonsoft.Json
4、使用 LitDb 輕量數(shù)據(jù)庫做應(yīng)用存儲庫
5、使用 MediatR 做應(yīng)用內(nèi)事件分發(fā)庫
6、使用 EF Core做默認 Orm
7、使用 FluentScheduler 做定時任務(wù)模塊
8、使用多Controller項目模塊,支持讓各自的api模塊使用獨立項目,比如AdminController使用一個項目,其他的又分別可以使用自己的項目
9、支持多數(shù)據(jù)庫結(jié)構(gòu),可以讓不同的業(yè)務(wù)范圍使用不同的數(shù)據(jù)庫,比如系統(tǒng)管理模塊使用MSSQL DB1,業(yè)務(wù)模塊 使用Mysql DB2
10、使用 Razor 做模板生成器引擎
話不多說,上圖吧
添加基礎(chǔ)庫 Simple.Core 添加基礎(chǔ)庫 Simple.Core
基礎(chǔ)庫主要包含一些幫助類,用于方便開發(fā)的,和其他框架大同小異
Web項目擴展庫 Simple.Core.Web
主要實現(xiàn):
應(yīng)用模塊基類 SimpleModule,繼承此模塊基類可分模塊開發(fā),分模塊按需注冊、配置管道,配置模塊初始化 自動注入,自動掃描標(biāo)注了自動注入的任何類和實現(xiàn),不包含一對多實現(xiàn)
鑒權(quán)基類控制器 AppAuthController
Curd控制器 AppCurdController
應(yīng)用事件分發(fā)管理 AppDomainEventDispatcher
簡單主機 SimpleHost ,該類用于一鍵啟動按默認配置好服務(wù)的 web主機、控制臺主機
其他web類,jwt相關(guān),異常和鑒權(quán)相關(guān)
主機擴展類 HostServiceExtension 里面包含各種服務(wù)注冊、獲取,模塊注冊,權(quán)限自動生成的方法
EFCore 擴展庫 Simple.EntityFrameworkCore
主要實現(xiàn):
DbContext基類 AppDbContext
Curd 實現(xiàn)類 BaseCurdService
Ef日志記錄 EFLoggerFactory
代碼生 成器 Simple.Generator
基于Razor 模板引擎類RazorLight的封裝
定時任務(wù) Simple.Job
基于 FluentScheduler 封裝的自動注冊任務(wù),實現(xiàn)任務(wù)自動注冊,配置基類用于可使每個任務(wù)能單獨配置執(zhí)行調(diào)度器
以上就是整個框架的封裝,夠簡單吧,是不是感覺啥都沒有用,就這么點東西已經(jīng)完成了我上面構(gòu)想的支撐!
下面大家看下admin模塊和common模塊,分別都能實現(xiàn)自動注入、定時任務(wù)、自動生成各自的數(shù)據(jù)庫及數(shù)據(jù)初始化、領(lǐng)域事件處理,順帶說下,不管是控制臺應(yīng)用的主機還是webapi的主機,里面的模塊都可使用構(gòu)造函數(shù)注入哦
看admin控制器項目及主機啟動,后面加業(yè)務(wù)控制器啥的,直接新建項目就行,控制臺主機也自動支持了自動注入啥的,開發(fā)服務(wù)啊啥的都可以重復(fù)使用上面Applications下的任意實現(xiàn)
WebHost 主機項目
啟動 WebHost 主機
看控制臺項目
啟動控制臺主機
悄悄說下,還適配了一套基于vue2 elementui前端頁面,已完成登錄,菜單、角色、角色授權(quán)、用于管理哦
對了,注意配置文件的開發(fā)和發(fā)布隔離哦
好了,用最簡單的東西實現(xiàn)了大多數(shù)項目業(yè)務(wù)都能搞定的框架了吧,如果對你有用,記得 點我Star 哦,初步版本已提交,有時間會持續(xù)優(yōu)化,代碼生成器還有一丟丟沒搞玩,其他都差不多了,需要的看代碼去吧。
轉(zhuǎn)自:VictorStar
鏈接:cnblogs.com/Start201505/p/17841087.html

關(guān)注公眾號↑↑↑:DotNet開發(fā)跳槽?
