1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        .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 啥水果啥的,怎么評價(jià)他們呢,就是一個字,叼!。

        可是作為一個打工人,還不是公司用啥我用啥,公司不用ABP,你也不能老新建個項(xiàng)目就上ABP,上各種Orm吧,并且用ABP類的框架,還是需要些學(xué)習(xí)時(shí)間的,這些框架各種約定,各種快捷Api,各種一鍵生成了啥啥啥,好用吧,可是一但你公司不能用這些框架,你是不是抓瞎了,之前遇到個只用ABP的新同事,進(jìn)公司要求只能用基于ASP.Net Core的框架和指定的一些類庫,要他開發(fā)個文件上傳的模塊,用于客戶服務(wù)器打開網(wǎng)頁上傳下數(shù)據(jù)庫備份之類的文件到公司備份服務(wù)器做異地備份,硬是邊看文檔邊搞了,干了2個周,說白了已經(jīng)不知道ASP.Net Core是咋玩的了。

        框架特點(diǎn)

        由此我萌發(fā)了寫個快速開發(fā)的框架,他需要有這些特點(diǎn):

        1、開發(fā)的框架基于 .NET 8 各種特性啥的盡量少,但是盡量方便點(diǎn),比如實(shí)現(xiàn)自動注入

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

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

        4、需要實(shí)現(xiàn)一套 CRUD 實(shí)現(xiàn),讓大量curd解放,能快速生成,同時(shí)能方便使用代碼生成器生成這一套東西

        5、需要實(shí)現(xiàn)一套后臺管理的前端,并實(shí)現(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做默認(rèn) Orm

        7、使用 FluentScheduler 做定時(shí)任務(wù)模塊

        8、使用多Controller項(xiàng)目模塊,支持讓各自的api模塊使用獨(dú)立項(xiàng)目,比如AdminController使用一個項(xiàng)目,其他的又分別可以使用自己的項(xiàng)目

        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項(xiàng)目擴(kuò)展庫 Simple.Core.Web

        5cfc5b6c50179e8e520f2dd32dc7b8dc.webp

        主要實(shí)現(xiàn):

        應(yīng)用模塊基類 SimpleModule,繼承此模塊基類可分模塊開發(fā),分模塊按需注冊、配置管道,配置模塊初始化 自動注入,自動掃描標(biāo)注了自動注入的任何類和實(shí)現(xiàn),不包含一對多實(shí)現(xiàn)

        鑒權(quán)基類控制器 AppAuthController

        Curd控制器 AppCurdController

        應(yīng)用事件分發(fā)管理 AppDomainEventDispatcher

        簡單主機(jī) SimpleHost ,該類用于一鍵啟動按默認(rèn)配置好服務(wù)的 web主機(jī)、控制臺主機(jī)

        其他web類,jwt相關(guān),異常和鑒權(quán)相關(guān)

        主機(jī)擴(kuò)展類 HostServiceExtension 里面包含各種服務(wù)注冊、獲取,模塊注冊,權(quán)限自動生成的方法

        EFCore 擴(kuò)展庫 Simple.EntityFrameworkCore

        22d1842bae9a4c89167227d9d5384f55.webp

        主要實(shí)現(xiàn):

        DbContext基類 AppDbContext

        Curd 實(shí)現(xiàn)類 BaseCurdService

        Ef日志記錄 EFLoggerFactory

        代碼生 成器 Simple.Generator

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

        ff96d0ba5f8aa20663b2a90cfc5b5163.webp

        定時(shí)任務(wù) Simple.Job

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

        87659d9287bf0ca8a74413d1c82480d2.webp

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

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

        073f0c6f02da76da7d3a664f52d2df10.webp

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

        WebHost 主機(jī)項(xiàng)目

        5e06414e925c1f9437ea84b065618514.webp

        啟動 WebHost 主機(jī)

        786d8ec4364b838c81ff50f6d5288fcd.webp

        看控制臺項(xiàng)目

        a5aa7834d9bfd04b60a81b6b4c892eb4.webp

        啟動控制臺主機(jī)

        5b01907f784c6254567828deb3e38211.webp

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

        87d93ffce6fe094a91e748a046cca026.webp

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

        500d75a922f519e4aefead1254487362.webp 1ebba0f788f219466886069141c04999.webp

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

        轉(zhuǎn)自:VictorStar

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

        7ff68cf57e38ab91643ac11ea036c031.webp

            

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

        瀏覽 18
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評論
        圖片
        表情
        推薦
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            色三区| 色欲无码婬片A片视频 | 免费一级婬A片久久久爽死你网站 | 欧洲亚洲免费视频 | 强开小嫩苞一区二区电影 | 欧美国产XXX视频 | 早川濑里奈av | 男人扒开女人的腿 | 哦美操逼亚洲很爱 | 黃色A片一级一级一级久别的草原 |