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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > asp.net >内容正文

asp.net

中间件是什么?在.NET Core中的工作原理又是怎样的呢?

發(fā)布時(shí)間:2023/12/4 asp.net 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 中间件是什么?在.NET Core中的工作原理又是怎样的呢? 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.



本文出自《從零開(kāi)始學(xué)ASP.NET CORE MVC》
推薦文章:ASP.NET Core appsettings.json文件

ASP.NET Core 中的中間件(Middleware)


在這個(gè)視頻中,我們將了解,ASP.NET?Core?中的中間件是?什么?中間件很重要,尤其是在你想當(dāng)架構(gòu)師這一條路上。

ASP.NET?Core?中的中間件是?什么?


在ASP.NET?Core中,中間件(Middleware)是一個(gè)可以處理HTTP請(qǐng)求或響應(yīng)的軟件管道。
ASP.NET?Core中給中間件組件的定位是具有非常特定的用途。例如,我們可能有需要一個(gè)中間件組件驗(yàn)證用戶,另一個(gè)中間件來(lái)處理錯(cuò)誤,另一個(gè)中間件來(lái)提供靜態(tài)文件,如JavaScript文件,CSS文件,圖片等等。

我們使用這些中間件組件在ASP.NET?Core中設(shè)置請(qǐng)求處理管道。而正式這管道決定了如何處理請(qǐng)求。
而請(qǐng)求管道是由Startup.cs文件中的Configure()方法進(jìn)行配置,它也是應(yīng)用程序啟動(dòng)的一個(gè)重要部分。
以下是Configure()方法中的代碼。

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}

app.Run(async (context) =>
{
await context.Response.WriteAsync("Hello?World!");
});
}

如您所見(jiàn), 由空項(xiàng)目模板生成的Configure()方法中的代碼中,一個(gè)非常簡(jiǎn)單的請(qǐng)求處理管道中,只有兩個(gè)中間件。

UseDeveloperExceptionPage是一個(gè)中間件,第二個(gè)中間件是使用Run()方法設(shè)置的。
現(xiàn)在,通過(guò)這個(gè)非常簡(jiǎn)單的請(qǐng)求處理管道,我們所有的應(yīng)用程序都可以將消息寫(xiě)入,然后在由瀏覽器顯示出來(lái)。

我們將在下一個(gè)視頻中詳細(xì)介紹此方法中的代碼。

現(xiàn)在讓我們了解什么是中間件以及它在asp.net?Core?中的工作原理。


下圖幫助我們了解中間件組件以及它們?nèi)绾芜m應(yīng)請(qǐng)求處理管道

中間件處理流程


在ASP.NET Core中,中間件組件可以同時(shí)訪問(wèn) -?傳入請(qǐng)求和傳出響應(yīng)
因此,中間件組件可以處理傳入請(qǐng)求并將該請(qǐng)求,傳遞給管道中的下一個(gè)中間件以進(jìn)行進(jìn)一步處理。
例如,如果您有一個(gè)日志記錄中間件,它可能只是記錄請(qǐng)求的時(shí)間,它處理完畢后將請(qǐng)求傳遞給下一個(gè)中間件以進(jìn)行進(jìn)一步處理。

中間件組件可以處理請(qǐng)求, 并決定不調(diào)用管道中的下一個(gè)中間件,從而使管道短路,官方微軟給了一個(gè)英文的名字叫“terminal middleware ”,翻譯為“終端中間件”。短路通常是被允許的,因?yàn)樗梢员苊庖恍┎槐匾墓ぷ鳌?br />例如,?如果請(qǐng)求的是像圖像或?css?文件這樣的靜態(tài)文件,?則?StaticFiles?中間件可以處理和服務(wù)該請(qǐng)求并使管道中的其余部分短路。這個(gè)意思就是說(shuō),在我們的示例中,?如果請(qǐng)求是針對(duì)靜態(tài)文件,?則?Staticile?中間件不會(huì)調(diào)用?MVC?中間件,避免一些無(wú)謂的操作。

中間件組件可以通過(guò)傳入的HTTP請(qǐng)求來(lái)響應(yīng)HTTP請(qǐng)求。例如,管道中的mvcmiddleware處理對(duì)URL /students的請(qǐng)求并返回學(xué)生列表信息。
隨著我們?cè)诒菊n程中的進(jìn)展,在我們即將推出的視頻中,我們將演示mvcmiddleware在管道中如何進(jìn)行請(qǐng)求和響應(yīng)的。

中間件組件還可以處理傳出響應(yīng)。例如,日志記錄中間件組件可以記錄響應(yīng)發(fā)送的時(shí)間。此外,它還可以通過(guò)計(jì)算接收請(qǐng)求和響應(yīng)發(fā)送時(shí)間之間的差異來(lái)計(jì)算處理請(qǐng)求所花費(fèi)的所有時(shí)間。

如果你使用過(guò)ABP框架,它的審計(jì)日志功能是怎么設(shè)計(jì)的,是否有了一些提示呢。

中間件組件是按照添加到管道的順序進(jìn)行執(zhí)行的。所以我們要注意以正確的順序添加中間件,否則應(yīng)用程序可能無(wú)法按預(yù)期運(yùn)行,哪怕編譯成功,但是程序還是會(huì)出錯(cuò)。

在我們即將發(fā)布的視頻中,我們將通過(guò)一個(gè)示例,討論如果中間件組件未按正確順序添加到處理管道中會(huì)發(fā)生什么。

中間件組件應(yīng)該用NuGet包的形式提供。由NuGet處理更新,盡量將中間件拆的足夠小,提供每個(gè)中間件獨(dú)立更新的能力。

ABPVNext?就是這樣設(shè)計(jì)的,同樣,很多人吼的微服務(wù)就是在干這個(gè)事情,另外變向說(shuō)明了,我們很多的架構(gòu)組就是在開(kāi)發(fā)中間件而已。這些只是我的吐槽,如果你不懂ABP和ABPVnext,也不要緊。以后慢慢學(xué)。

根據(jù)您的程序要求,您可以向請(qǐng)求處理管道添加盡可能多的中間件組件。例如,如果您正在使用一些靜態(tài)HTML頁(yè)面和圖像,開(kāi)發(fā)簡(jiǎn)單的Web應(yīng)用程序,那么您的請(qǐng)求處理管道可能只包含“StaticFiles”中間件。?這個(gè)就是模塊化設(shè)計(jì)帶來(lái)的好處,讓每個(gè)人都像玩積木一樣。
另一方面,如果您正在開(kāi)發(fā)一個(gè)安全的數(shù)據(jù)驅(qū)動(dòng)設(shè)計(jì)的Web應(yīng)用程序,那么您可能需要幾個(gè)中間件組件,如StaticFiles中間件,身份驗(yàn)證中間件,授權(quán)中間件,MVC中間件等。?數(shù)據(jù)驅(qū)動(dòng)設(shè)計(jì),可以簡(jiǎn)單理解為復(fù)雜項(xiàng)目。

我想指出的是,系統(tǒng)是你的,你是系統(tǒng)的架構(gòu)師,?您可以完全控制請(qǐng)求,處理管道中的配置。這也意味著,?從內(nèi)存和性能的角度來(lái)看,?您只需為請(qǐng)求處理管道中的中間件組件支付流量費(fèi)和服務(wù)器開(kāi)支就好了。

現(xiàn)在我們已經(jīng)基本了解了什么是中間件組件以及它們?nèi)绾芜m應(yīng)請(qǐng)求處理管道,在下一個(gè)視頻中,我們將了解如何使用中間件組件為我們的ASP.NET?Core應(yīng)用程序配置請(qǐng)求處理管道。

所以你看當(dāng)一個(gè)架構(gòu)師,玩好中間件就可以了。戲言而已,不必當(dāng)真。。。

更多精彩內(nèi)容都在視頻中哦~


硬廣專(zhuān)區(qū)



如果您覺(jué)得我的文章質(zhì)量還不錯(cuò),歡迎打賞,也可以訂閱我的視頻哦

未得到授權(quán)不得擅自轉(zhuǎn)載本文內(nèi)容,52abp.com保留版權(quán)

文字版目錄:?https://www.52abp.com/Wiki/mvc/latest/1.Intro?

交流QQ群:952387474《微軟MVP帶你學(xué)ASP.NET?CORE》

【收費(fèi)】騰訊課堂:?https://ke.qq.com/course/392589?tuin=2522cdf3?
【免費(fèi)】youtube視頻專(zhuān)區(qū):http://t.cn/Ei0F2EB?
免費(fèi)的更新慢,收費(fèi)的更新快,僅此而已。就這樣。
?

「好看」的人都【在看】↓↓↓





總結(jié)

以上是生活随笔為你收集整理的中间件是什么?在.NET Core中的工作原理又是怎样的呢?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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