日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

.NET Core实战项目之CMS 第十章 设计篇-系统开发框架设计

發(fā)布時(shí)間:2023/12/4 windows 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .NET Core实战项目之CMS 第十章 设计篇-系统开发框架设计 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

這兩天比較忙,周末也在加班,所以更新的就慢了一點(diǎn),不過沒關(guān)系,今天我們就進(jìn)行千呼萬喚的系統(tǒng)開發(fā)框架的設(shè)計(jì)。不知道上篇關(guān)于架構(gòu)設(shè)計(jì)的文章大家有沒有閱讀,如果閱讀后相信一定對架構(gòu)設(shè)計(jì)有了更近一部的理解,如果你沒有閱讀也希望大家能好好閱讀一下!其實(shí)說白了,架構(gòu)是為了應(yīng)對軟件系統(tǒng)復(fù)雜度而提出的一個(gè)解決方案,架構(gòu)設(shè)計(jì)的最終目的也就是為了讓復(fù)雜的問題簡單化!今天我們就結(jié)合架構(gòu)設(shè)計(jì)的思想來進(jìn)行我們的CMS實(shí)戰(zhàn)項(xiàng)目的架構(gòu)設(shè)計(jì),接著再設(shè)計(jì)下開發(fā)框架吧。如果你有其他看法或者見解歡迎加入我們的實(shí)戰(zhàn)項(xiàng)目交流群637326624 跟大伙共同交流!

本文已收錄至《.NET Core實(shí)戰(zhàn)項(xiàng)目之CMS 第一章 入門篇-開篇及總體規(guī)劃》

作者:依樂祝

原文地址:

寫在前面

仔細(xì)想想我們的這個(gè)極簡CMS系統(tǒng),可以說很簡單,簡單到都無須進(jìn)行特殊的架構(gòu)設(shè)計(jì),只需按照你所熟悉的編碼方式直接進(jìn)行快速的編碼實(shí)現(xiàn)即可,如果做得好的話,訪問量上來了你再加一個(gè)緩存處理完全能夠支撐一定的并發(fā)!如下圖所示:我們前期先進(jìn)行單體架構(gòu)的實(shí)現(xiàn),等后期分布式系列實(shí)戰(zhàn)課程的時(shí)候再講解如何進(jìn)行分布式微服務(wù)架構(gòu)的實(shí)現(xiàn)。

看到?jīng)]有,標(biāo)準(zhǔn)的單體架構(gòu),只是在數(shù)據(jù)庫層之前加了一個(gè)緩存的設(shè)計(jì)來應(yīng)對一些并發(fā)的情況!既然架構(gòu)設(shè)計(jì)確定了,那么我們就進(jìn)行開發(fā)框架的搭建吧!如果架構(gòu)的復(fù)雜點(diǎn)的話,可能涉及到數(shù)據(jù)庫集群,站點(diǎn)集群及負(fù)載均衡,可是我們完全沒必要那樣玩!一個(gè)階段設(shè)計(jì)一個(gè)階段的架構(gòu),要知道天貓也不是剛開始就架構(gòu)的這么完善支持這么高的并發(fā)的!而是經(jīng)過這么多次雙十一的考驗(yàn)之后慢慢完成到今天這個(gè)能夠支持每秒這么次并發(fā)的!說白了,架構(gòu)是一個(gè)演變的過程,而并非設(shè)計(jì)的越復(fù)雜,越完善就表示架構(gòu)設(shè)計(jì)的就越好的(有點(diǎn)拗口,自己理解下),而要結(jié)合實(shí)際,讓需求來驅(qū)動(dòng)架構(gòu)。在分析設(shè)計(jì)階段,需要考慮一定的人力與時(shí)間去"跳出代碼,總攬全局",為業(yè)務(wù)和IT技術(shù)之間搭建一座"橋梁"。

CMS系統(tǒng)開發(fā)框架

話不多數(shù),先看下我的項(xiàng)目結(jié)構(gòu)截圖吧!

本來想進(jìn)行很復(fù)雜的框架的實(shí)現(xiàn)的,仿照DDD的思想進(jìn)行開發(fā)框架的搭建,后來想想何必呢,這么簡單的系統(tǒng)搞得那么復(fù)雜,嚴(yán)重影響開發(fā)效率,反而得不嘗試。后來經(jīng)過深思熟慮后精簡精簡再精簡,斟酌斟酌再斟酌后就有了上面這樣的項(xiàng)目結(jié)構(gòu)。乍一看10個(gè)項(xiàng)目,是不是嚇得馬上就要關(guān)閉網(wǎng)頁了呢?下面我會(huì)給你詳細(xì)講解每一個(gè)項(xiàng)目的作用以及所要實(shí)現(xiàn)的功能。

其實(shí)明眼人一看這個(gè)結(jié)構(gòu)就已經(jīng)知道了每個(gè)模塊所要實(shí)現(xiàn)的功能了,這樣的分層設(shè)計(jì)可謂簡單的都不需要我過多介紹,你都能明白每一個(gè)項(xiàng)目是用來干什么的(明白人也可以進(jìn)行項(xiàng)目的再度融合,甚至簡單粗暴的合并到一個(gè)項(xiàng)目里面,不過本人更喜歡這種分層的設(shè)計(jì)感覺結(jié)構(gòu)更清晰)。可是我這里還是要啰嗦兩句給你介紹下:

既然微軟已經(jīng)在前兩天將正式版的.NET Core SDK升級(jí)到了2.2的版本,那么我們的CMS系統(tǒng)就用.NET Core2.2進(jìn)行搭建吧!當(dāng)然,你在練習(xí)的時(shí)候也可以使用2.1進(jìn)行,沒有強(qiáng)制要求。

注意:ASP.NET Core2.2對VisualStudio有一定的要求必須是2017的高版本才能用。其目前的版本是15.8.4 總之盡量不要低于我這個(gè)版本,我正準(zhǔn)備升級(jí)呢!

  • UI

    用戶UI層:這個(gè)就是我們CMS系統(tǒng)所要呈現(xiàn)的用戶界面,而我們得CMS系統(tǒng)又包含后臺(tái)管理模塊以及前臺(tái)網(wǎng)站模塊,因此這個(gè)解決方案文件夾下面有兩個(gè)ASP.NET Core網(wǎng)站項(xiàng)目,留個(gè)思考題給你吧,猜猜看哪個(gè)項(xiàng)目是后臺(tái)管理模塊,哪個(gè)項(xiàng)目是前臺(tái)網(wǎng)站模塊呢?把你的答案寫在留言區(qū)或者加群跟大伙討論下吧!

  • Application

    應(yīng)用層:這個(gè)層提供對用戶界面的接口訪問,用戶界面層的兩個(gè)模塊如果想跟數(shù)據(jù)庫交互都需要通過這個(gè)層來進(jìn)行。這個(gè)應(yīng)用層起到用戶界面跟數(shù)據(jù)庫操作進(jìn)行解耦的作用。

  • Repositonry

    倉儲(chǔ)層:這個(gè)層主要就是跟數(shù)據(jù)庫的交互了,任何跟數(shù)據(jù)庫有關(guān)的操作都在這層來進(jìn)行實(shí)現(xiàn),看了上面的圖相信你已經(jīng)猜到了,前期我只是實(shí)現(xiàn)SqlServer的倉儲(chǔ)實(shí)現(xiàn),至于其他數(shù)據(jù)庫的實(shí)現(xiàn)你只需要再建一個(gè)Czar.Cms.Repository.數(shù)據(jù)庫名 的倉儲(chǔ)實(shí)現(xiàn)就可以了!這里我們也是采用依賴抽象而不依賴具體實(shí)現(xiàn)所以方便后期的擴(kuò)展。

  • Entity

    實(shí)體對象層:這個(gè)層感覺有點(diǎn)多余,完全可以把這個(gè)界面融合到其他層,但是我并沒有這樣做,目的也是讓結(jié)構(gòu)更清晰,更容易理解。這里有兩個(gè)項(xiàng)目,相信一路看教程過來的朋友一定還記得我的第二篇文章《.NET Core實(shí)戰(zhàn)項(xiàng)目之CMS 第二章 入門篇-快速入門ASP.NET Core看這篇就夠了?》中用的是ViewModel而不是直接用實(shí)體對象了!因?yàn)閷?shí)際引用中可能我們頁面中需要的數(shù)據(jù)跟我們數(shù)據(jù)庫中的數(shù)據(jù)并不完全一樣的,而且,有時(shí)候我們頁面中可能包含了更多地信息,這時(shí)候我們怎么往視圖中傳遞數(shù)據(jù)呢?這時(shí)候我們就有了ViewModel的概念。比方說:我們的有一個(gè)訂單詳細(xì)頁要同時(shí)顯示訂單的信息,以及訂單對應(yīng)的商品列表,這時(shí)候怎么辦呢?我們用一個(gè)ViewModel包含了訂單實(shí)體,并且包含了商品的列表就可以更方便的把數(shù)據(jù)傳遞到視圖里面了!

  • Infrastructure

    基礎(chǔ)設(shè)施層:這個(gè)層也是我們代碼的核心層了,我們會(huì)在這里實(shí)現(xiàn)很多我們通用的方法,比方說幫助類,對字符串String進(jìn)行一些擴(kuò)展,序列化與反序列化,HTTP請求,過濾器,日志功能,中間件的擴(kuò)展等等。總之這個(gè)里面包含了Czar.Cms的所有核心。

  • Test

    測試層:這個(gè)層不用多說了吧,就是對系統(tǒng)進(jìn)行測試的!里面包含單元測試以及集成測試!

  • 相信通過我上面的介紹你一定會(huì)感覺到這個(gè)CMS系統(tǒng)的開發(fā)框架的層次非常清晰了吧!其實(shí)作為新手時(shí)期的我也是,看到項(xiàng)目太多的話就從心里面害怕,其實(shí)大伙大可不必,看到讓你害怕的事情就要勇敢的面對它,戰(zhàn)勝它,一定要跳出自己的舒適區(qū)。

    GitHub與碼云上的項(xiàng)目開源地址

    今天我們搭建的這個(gè)項(xiàng)目的結(jié)構(gòu)我已經(jīng)同步更新到Github以及碼云上了,有興趣的朋友可以下載查看!覺得不錯(cuò)的歡迎Star
    GitHub:https://github.com/yilezhu/Czar.Cms
    碼云:https://gitee.com/yilezhu/Czar.Cms
    如果你覺得這個(gè)系列對您有所幫助的話,歡迎以各種方式進(jìn)行支持,最簡單有效的就是博客園給個(gè)推薦,GitHub給個(gè)Star。同時(shí)今天我申請了一個(gè)DotNetCore實(shí)戰(zhàn)的訂閱號(hào),有興趣的朋友可以微信關(guān)注下:

    總結(jié)

    本文我首先帶著大家理解了一下架構(gòu)設(shè)計(jì)的目的,以及架構(gòu)設(shè)計(jì)的演變性。接著對我們這個(gè)ASP.NET Core的CMS實(shí)戰(zhàn)項(xiàng)目進(jìn)行了開發(fā)框架的設(shè)計(jì)。并對每個(gè)項(xiàng)目的所要實(shí)現(xiàn)的功能以及各自的職責(zé)進(jìn)行了相關(guān)的介紹!相信你已經(jīng)能夠清楚的明白了這個(gè)架構(gòu)的思想!到此,設(shè)計(jì)篇已經(jīng)結(jié)束,接下來就讓我們進(jìn)行真正的項(xiàng)目開發(fā)吧即開發(fā)篇的開始!

    相關(guān)文章:

    • .NET Core實(shí)戰(zhàn)項(xiàng)目之CMS 第一章 入門篇-開篇及總體規(guī)劃

    • .NET Core實(shí)戰(zhàn)項(xiàng)目之CMS 第二章 入門篇-快速入門ASP.NET Core看這篇就夠了

    • .NET Core實(shí)戰(zhàn)項(xiàng)目之CMS 第三章 入門篇-源碼解析配置文件及依賴注入

    • .NET Core實(shí)戰(zhàn)項(xiàng)目之CMS 第四章 入門篇-Git的快速入門及實(shí)戰(zhàn)演練

    • .NET Core實(shí)戰(zhàn)項(xiàng)目之CMS 第五章 入門篇-Dapper的快速入門看這篇就夠了

    • .NET Core實(shí)戰(zhàn)項(xiàng)目之CMS 第六章 入門篇-Vue的快速入門及其使用

    • .NET Core實(shí)戰(zhàn)項(xiàng)目之CMS 第七章 設(shè)計(jì)篇-用戶權(quán)限極簡設(shè)計(jì)全過程

    • .NET Core實(shí)戰(zhàn)項(xiàng)目之CMS 第八章 設(shè)計(jì)篇-內(nèi)容管理極簡設(shè)計(jì)全過程

    • .NET Core實(shí)戰(zhàn)項(xiàng)目之CMS 第九章 設(shè)計(jì)篇-白話架構(gòu)設(shè)計(jì)

    原文地址:https://www.cnblogs.com/yilezhu/p/10094357.html

    .NET社區(qū)新聞,深度好文,歡迎訪問公眾號(hào)文章匯總 http://www.csharpkit.com

    總結(jié)

    以上是生活随笔為你收集整理的.NET Core实战项目之CMS 第十章 设计篇-系统开发框架设计的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。