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

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

生活随笔

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

asp.net

ASP.NET Core 3.x - 为什么采用新的 Endpoint Routing 路由系统

發(fā)布時(shí)間:2023/12/4 asp.net 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ASP.NET Core 3.x - 为什么采用新的 Endpoint Routing 路由系统 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Endpoint Routing 路由系統(tǒng)

ASP.NET Core 3.x 使用了一套叫做 Endpoint Routing 的路由系統(tǒng)。這套路由系統(tǒng)在ASP.NET Core 2.2 的時(shí)候就開(kāi)始露面了。

這套Endpoint Routing路由系統(tǒng)提供了更強(qiáng)大的功能和靈活性,以便能更好的處理請(qǐng)求。

?

早期ASP.NET Core的路由系統(tǒng)

我們先回顧一下早期版本的ASP.NET Core的路由系統(tǒng):

在早期的ASP.NET Core框架里,HTTP請(qǐng)求進(jìn)入中間件管道,在管道的結(jié)尾處,有一個(gè)Router中間件,也就是路由中間件。這個(gè)路由中間件會(huì)把HTTP請(qǐng)求和路由數(shù)據(jù)發(fā)送給MVC的一個(gè)組件,它叫做MVC Router Handler。

這個(gè)MVC 路由 Handler就會(huì)使用這些路由數(shù)據(jù)來(lái)決定哪個(gè)Controller的Action方法應(yīng)該來(lái)負(fù)責(zé)處理這個(gè)請(qǐng)求。

然后 Router中間件就會(huì)執(zhí)行被選中的Action方法,并生成響應(yīng),而這個(gè)響應(yīng)就會(huì)順著中間件的管道原路返回。

問(wèn)題出在哪?

為什么早期的這套路由系統(tǒng)被拋棄了?它有什么問(wèn)題?

第一個(gè)問(wèn)題就是,在被MVC處理之前,其它的中間件不知道最后哪個(gè)Action方法會(huì)被選中來(lái)處理這個(gè)請(qǐng)求。這對(duì)像Authorization(授權(quán)),Cors這樣的中間件會(huì)造成很大的困擾,因?yàn)樗麄儾荒芴崆爸涝撜?qǐng)求會(huì)被送往哪里。

第二個(gè)問(wèn)題就是,這套流程會(huì)把MVC和路由的職責(zé)緊密的耦合在一起,而實(shí)際MVC的本職工作應(yīng)該僅僅就是生成響應(yīng)。

Endpoint Routing 路由系統(tǒng)前來(lái)營(yíng)救

Endpoint routing 路由系統(tǒng),它把MVC的路由功能抽象剝離出來(lái),并放置到中間件管道里,從而解決了早期ASP.NET Core路由系統(tǒng)的那兩個(gè)問(wèn)題。

而在Endpoint Routing 路由系統(tǒng)里,其實(shí)一共有兩個(gè)中間件,它們的名稱有點(diǎn)容易混淆,但是你只要記住他們的職責(zé)即可:

  • Endpoint Routing 中間件。它決定了在程序中注冊(cè)的哪個(gè)Endpoint應(yīng)該用來(lái)處理請(qǐng)求。

  • Endpoint?中間件。它是用來(lái)執(zhí)行選中的Endpoint,從而讓其生成響應(yīng)的。

  • 所以,Endpoint Routing的流程圖大致如下:

    在這里,Endpoint Routing 中間件會(huì)分析進(jìn)來(lái)的請(qǐng)求,并把它和在程序中注冊(cè)的Endpoints進(jìn)行比較。它會(huì)使用這些 Endpoints 上面的元數(shù)據(jù)來(lái)決定哪個(gè)是處理該請(qǐng)求的最佳人選。然后,這個(gè)選中的Endpoint 就會(huì)被賦給請(qǐng)求的對(duì)象,而其它后續(xù)的中間件就可以根據(jù)這個(gè)選中的Endpoint,來(lái)做一些自己的決策。在所有的中間件都執(zhí)行完之后,這個(gè)被選中的Endpoint最終將被 Endpoint中間件所執(zhí)行,而與之關(guān)聯(lián)的Action方法就會(huì)被執(zhí)行。

    總結(jié)

    以上是生活随笔為你收集整理的ASP.NET Core 3.x - 为什么采用新的 Endpoint Routing 路由系统的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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