<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          .NET 8來了,開發(fā)一套基于.NET

          共 2530字,需瀏覽 6分鐘

           ·

          2024-04-11 00:35

          前言

          .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 做模板生成器引擎

          b3f8981337b8e10566f2cddb7523c5ae.webp

          話不多說,上圖吧

          添加基礎(chǔ)庫 Simple.Core 添加基礎(chǔ)庫 Simple.Core

          基礎(chǔ)庫主要包含一些幫助類,用于方便開發(fā)的,和其他框架大同小異

          02347fbfc63dee060597349b9f2ac814.webp

          Web項目擴展庫 Simple.Core.Web

          5cfc5b6c50179e8e520f2dd32dc7b8dc.webp

          主要實現(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

          22d1842bae9a4c89167227d9d5384f55.webp

          主要實現(xiàn):

          DbContext基類 AppDbContext

          Curd 實現(xiàn)類 BaseCurdService

          Ef日志記錄 EFLoggerFactory

          代碼生 成器 Simple.Generator

          基于Razor 模板引擎類RazorLight的封裝

          ff96d0ba5f8aa20663b2a90cfc5b5163.webp

          定時任務(wù) Simple.Job

          基于 FluentScheduler 封裝的自動注冊任務(wù),實現(xiàn)任務(wù)自動注冊,配置基類用于可使每個任務(wù)能單獨配置執(zhí)行調(diào)度器

          87659d9287bf0ca8a74413d1c82480d2.webp

          以上就是整個框架的封裝,夠簡單吧,是不是感覺啥都沒有用,就這么點東西已經(jīng)完成了我上面構(gòu)想的支撐!

          下面大家看下admin模塊和common模塊,分別都能實現(xiàn)自動注入、定時任務(wù)、自動生成各自的數(shù)據(jù)庫及數(shù)據(jù)初始化、領(lǐng)域事件處理,順帶說下,不管是控制臺應(yīng)用的主機還是webapi的主機,里面的模塊都可使用構(gòu)造函數(shù)注入哦

          073f0c6f02da76da7d3a664f52d2df10.webp

          看admin控制器項目及主機啟動,后面加業(yè)務(wù)控制器啥的,直接新建項目就行,控制臺主機也自動支持了自動注入啥的,開發(fā)服務(wù)啊啥的都可以重復(fù)使用上面Applications下的任意實現(xiàn)

          WebHost 主機項目

          5e06414e925c1f9437ea84b065618514.webp

          啟動 WebHost 主機

          786d8ec4364b838c81ff50f6d5288fcd.webp

          看控制臺項目

          a5aa7834d9bfd04b60a81b6b4c892eb4.webp

          啟動控制臺主機

          5b01907f784c6254567828deb3e38211.webp

          悄悄說下,還適配了一套基于vue2 elementui前端頁面,已完成登錄,菜單、角色、角色授權(quán)、用于管理哦

          87d93ffce6fe094a91e748a046cca026.webp

          對了,注意配置文件的開發(fā)和發(fā)布隔離哦

          500d75a922f519e4aefead1254487362.webp 1ebba0f788f219466886069141c04999.webp

          好了,用最簡單的東西實現(xiàn)了大多數(shù)項目業(yè)務(wù)都能搞定的框架了吧,如果對你有用,記得  點我Star  哦,初步版本已提交,有時間會持續(xù)優(yōu)化,代碼生成器還有一丟丟沒搞玩,其他都差不多了,需要的看代碼去吧。

          轉(zhuǎn)自:VictorStar

          鏈接:cnblogs.com/Start201505/p/17841087.html

          7ff68cf57e38ab91643ac11ea036c031.webp

              

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

          瀏覽 18
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  丰满的大屁股一区二区 | 黄色。****yor | 97超碰人人操人人 | 操逼视频免费看 | 操屄的网站 |