當前位置: 妍妍網 > 碼農

.NET 8來了,開發一套基於.NET 8的快速開發框架吧,就叫Simple

2024-02-02碼農

前言

.NET 8來了,開發一套基於.NET 8的快速開發框架吧,就叫Simple:https://gitee.com/VCodeWork/simple-framework

框架由來

為啥有了那麽多開發框架,還得非要再搞個呢,大家都知道很多快速開發框架,啥ABP 啥水果啥的,怎麽評價他們呢,就是一個字,叼!。

可是作為一個打工人,還不是公司用啥我用啥,公司不用ABP,你也不能老新建個計畫就上ABP,上各種Orm吧,並且用ABP類的框架,還是需要些學習時間的,這些框架各種約定,各種快捷Api,各種一鍵生成了啥啥啥,好用吧,可是一但你公司不能用這些框架,你是不是抓瞎了,之前遇到個只用ABP的新同事,進公司要求只能用基於ASP.Net Core的框架和指定的一些類別庫,要他開發個檔上傳的模組,用於客戶伺服器開啟網頁上傳下資料庫備份之類的檔到公司備份伺服器做異地備份,硬是邊看文件邊搞了,幹了2個周,說白了已經不知道ASP.Net Core是咋玩的了。

框架特點

由此我萌發了寫個快速開發的框架,他需要有這些特點:

1、開發的框架基於 .NET 8 各種特性啥的盡量少,但是盡量方便點,比如實作自動註入

2、除非很需要,框架本身盡量少參照第三方庫,但是又要方便後期添加需要用到的第三方庫

3、需要有基本的授權、鑒權,免得每次都要去寫這些通用的東西

4、需要實作一套 CRUD 實作,讓大量curd解放,能快速生成,同時能方便使用程式碼生成器生成這一套東西

5、需要實作一套後台管理的前端,並實作基礎頁面,如登入、系統管理相關頁面

規劃

根據以上構想,做了一些規劃:

1、使用 NLog 做日誌庫

2、使用 Redis 庫 StackExchange.Redis

3、使用 Json 庫 Newtonsoft.Json

4、使用 LitDb 輕量資料庫做套用儲存庫

5、使用 MediatR 做套用內事件分發庫

6、使用 EF Core做預設 Orm

7、使用 FluentScheduler 做定時任務模組

8、使用多Controller計畫模組,支持讓各自的api模組使用獨立計畫,比如AdminController使用一個計畫,其他的又分別可以使用自己的計畫

9、支持多資料庫結構,可以讓不同的業務範圍使用不同的資料庫,比如系統管理模組使用MSSQL DB1,業務模組 使用Mysql DB2

10、使用 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 主機

看控制台計畫

啟動控制台主機

悄悄說下,還適配了一套基於vue2 elementui前端頁面,已完成登入,選單、角色、角色授權、用於管理哦

對了,註意配置檔的開發和釋出隔離哦

好了,用最簡單的東西實作了大多數計畫業務都能搞定的框架了吧,如果對你有用,記得 點我Star 哦,初步版本已送出,有時間會持續最佳化,程式碼生成器還有一丟丟沒搞玩,其他都差不多了,需要的看程式碼去吧。

轉自:VictorStar

連結:cnblogs.com/Start201505/p/17841087.html

- EOF -

技術群: 添加小編微信並備註進群

小編微信:mm1552923

公眾號:dotNet編程大全