日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

从明面上学习ASP.NET Core

發(fā)布時(shí)間:2023/12/4 59 豆豆
生活随笔 收集整理的這篇文章主要介紹了 从明面上学习ASP.NET Core 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、前言

? ??這篇文章就是從能看到地方去學(xué)習(xí)Core,沒有很深?yuàn)W,也沒有很難懂,現(xiàn)在我們開始吧。

二、構(gòu)建項(xiàng)目,引發(fā)思考

? ??創(chuàng)建項(xiàng)目的步驟真的很簡(jiǎn)單,你要是不會(huì),我真也沒法了,我這是創(chuàng)建的MVC的項(xiàng)目。

? ??

? ??

? ? 接下來我們開始找不同,這個(gè)小學(xué)生也會(huì)的東西,我相信也難不到大家,這里我們主要說重點(diǎn)的不同:

? ? 1. 少了Content和Scripts文件夾,多了wwwroot;

? ? 2.少了配置文件web.config,多了appsettings.json;

? ? 3.少了App_Start文件夾,多了Program.cs和Startup.cs;

? ?后面確實(shí),實(shí)現(xiàn)了前面的功能,接下來引發(fā)下我們的思考,帶著這些問題我們來學(xué)習(xí)Core:

? ? 配置文件:

? ? 1.為什么appsettings.json能默認(rèn)成為配置文件?

? ? 2.怎么讀取配置文件?

? ? 3.Global.asax如何在core中體現(xiàn);

? ?DI:

? ?1.為什么全部能按照接口的方式進(jìn)行注入?

? ?2.怎么替換掉內(nèi)置的DI?

? ?MVC:

? ?1.Core的請(qǐng)求和MVC的請(qǐng)求有什么不同?

? ?2.Core的認(rèn)證和授權(quán)怎么處理?

? ?懷著這些問題我們來簡(jiǎn)單結(jié)合源碼分析下,另外最后我們?cè)谏蟼饕粋€(gè)簡(jiǎn)單的增刪改查項(xiàng)目完成我們項(xiàng)目結(jié)束。

三、配置文件

? ?GitHub地址:https://github.com/aspnet/MetaPackages/tree/dev/src/Microsoft.AspNetCore

? ?1.為什么appsettings.json能默認(rèn)成為配置文件?

? ?這個(gè)問題看下主要部分在這個(gè)地址下面:https://github.com/aspnet/MetaPackages/blob/dev/src/Microsoft.AspNetCore/WebHost.cs,我截取下主要代碼;

??2.怎么讀取配置文件?

? ?我主要提供了2種方式,這里前提是引入Microsoft.AspNetCore.All這個(gè)dll,這個(gè)里面很多我們需要的東西

? ?從appsettings.json增加配置讀取,有兩種一個(gè)是更改配置以后立即生效,一種是重啟以后才生效,具體看下代碼:

? 從外部引入配置文件,這個(gè)時(shí)候我們要做一件事情,將你新建的配置文件的屬性設(shè)置為始終復(fù)制,至于這個(gè)原理是啥我不懂,有大神可以指點(diǎn)下,剩下的具體看代碼吧;

3.Global.asax如何在core中體現(xiàn);

? IApplicationLifetime這個(gè)實(shí)現(xiàn)替代在傳統(tǒng)應(yīng)用中Application中生命周期的位置,這個(gè)我在上面的代碼中已有體現(xiàn),使用命令的方式運(yùn)行在控制臺(tái)就可以看到;

四、DI

?針對(duì)這個(gè)問題,我只能這么說為了為了提高大家,給大家實(shí)現(xiàn)一個(gè)容器,讓大家玩的開心一下,讓DI和IOC的思想深入內(nèi)心,這點(diǎn)有點(diǎn)類似Java操作了,其實(shí)早就該這樣了,已經(jīng)讓我們變大太懶了,哈哈,借用下蔣神的話,ASP.NET Core的核心是通過一個(gè)Server和若干注冊(cè)的Middleware構(gòu)成的管道,不論是管道自身的構(gòu)建,還是ServerMiddleware自身的實(shí)現(xiàn),以及構(gòu)建在這個(gè)管道的應(yīng)用,都需要相應(yīng)的服務(wù)提供支持,ASP.NET Core自身提供了一個(gè)DI容器來實(shí)現(xiàn)針對(duì)服務(wù)的注冊(cè)和消費(fèi)。換句話說,不只是ASP.NET Core底層框架使用的服務(wù)是由這個(gè)DI容器來注冊(cè)和提供,應(yīng)用級(jí)別的服務(wù)的注冊(cè)和提供也需要以來這個(gè)DI容器,所以正如本文標(biāo)題所說的——學(xué)習(xí)ASP.NET Core,你必須了解無處不在的依賴注入

?附上大神的地址:https://www.cnblogs.com/artech/p/dependency-injection-in-asp-net-core.html

?不懂DIIOC的我也附上騰飛大神的地址:https://www.cnblogs.com/jesse2013/p/di-in-aspnetcore.html,

?騰飛大神博客里面已經(jīng)將我想要的說2個(gè)問題說的很明白了,我這里還是在稍稍說一下吧。

?生命周期問題:

? ?Transient:?每一次GetService都會(huì)創(chuàng)建一個(gè)新的實(shí)例

? ?Scoped每次Http請(qǐng)求只會(huì)產(chǎn)生一個(gè)實(shí)例;

? ?Singleton整個(gè)應(yīng)用程序生命周期以內(nèi)只創(chuàng)建一個(gè)實(shí)例?

? ?這個(gè)大神博客里面也有介紹,官方也有介紹,大家可以看下https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/dependency-injection?view=aspnetcore-2.1

? ?容器的替換:

五、MVC

? ?1.Core的請(qǐng)求和MVC的請(qǐng)求有什么不同?

? ?看圖說話,主要設(shè)計(jì)不同主要體現(xiàn)在蔣神說的那句話,Core按照中間件的形式設(shè)計(jì),最后全部注入到DI,這個(gè)時(shí)候我們考慮一個(gè)問題,我們想替換任何一個(gè)都將變得很容易,但是同樣我們又會(huì)衍生另外一個(gè)問題,當(dāng)我們服務(wù)之間存在依賴的時(shí)候,就需要按照順序進(jìn)行注入,這個(gè)問題需要重視一下,當(dāng)然微軟在設(shè)計(jì)上也考慮到這點(diǎn),這里也是簡(jiǎn)單寫個(gè)小demo,當(dāng)你訪問網(wǎng)站的時(shí)候就會(huì)發(fā)現(xiàn)網(wǎng)站按照順序輸出來了。MVC還是在IHttpMoudle和IHttpHandle上面做擴(kuò)展或解耦,整體上本質(zhì)是不變得,對(duì)這塊不了解的可以推薦幾篇博客給大家看看;推薦大龍龍MVC系列:http://www.cnblogs.com/edisonchou/p/3911558.html

? ??

? ??

?六、結(jié)束

? ??下一篇我們?cè)僬f,Demo還沒時(shí)間做好,另外強(qiáng)烈推薦大家去看官方文檔:https://docs.microsoft.com/zh-cn/aspnet/core/migration/http-modules?view=aspnetcore-2.1,真的比什么都管用!!!

原文地址:https://www.cnblogs.com/wtzbk/p/9196185.html

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

總結(jié)

以上是生活随笔為你收集整理的从明面上学习ASP.NET Core的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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