国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

詳解ASP.NET Core MVC 源碼學(xué)習(xí):Routing 路由

2024-07-10 12:49:14
字體:
供稿:網(wǎng)友

前言

最近打算抽時(shí)間看一下 ASP.NET Core MVC 的源碼,特此把自己學(xué)習(xí)到的內(nèi)容記錄下來,也算是做個(gè)筆記吧。

路由作為 MVC 的基本部分,所以在學(xué)習(xí) MVC 的其他源碼之前還是先學(xué)習(xí)一下路由系統(tǒng),ASP.NET Core 的路由系統(tǒng)相對于以前的 Mvc 變化很大,它重新整合了 Web Api 和 MVC。

路由源碼地址 :Routing-dev_jb51.rar

路由(Routing)功能介紹

路由是 MVC 的一個(gè)重要組成部分,它主要負(fù)責(zé)將接收到的 Http 請求映射到具體的一個(gè)路由處理程序上,在MVC 中也就是說路由到具體的某個(gè) Controller 的 Action 上。

路由的啟動方式是在ASP.NET Core MVC 應(yīng)用程序啟動的時(shí)候作為一個(gè)中間件來啟動的,詳細(xì)信息會在下一篇的文章中給出。

通俗的來說就是,路由從請求的 URL 地址中提取信息,然后根據(jù)這些信息進(jìn)行匹配,從而映射到具體的處理程序上,因此路由是基于URL構(gòu)建的一個(gè)中間件框架。
 路由還有一個(gè)作用是生成響應(yīng)的的URL,也就是說生成一個(gè)鏈接地址可以進(jìn)行重定向或者鏈接。

路由中間件主要包含以下幾個(gè)部分:

    URL 匹配 URL 生成 IRouter 接口 路由模板 模板約束

Getting Started

ASP.NET Core Routing 主要分為兩個(gè)項(xiàng)目,分別是 Microsoft.AspNetCore.Routing.Abstractions,Microsoft.AspNetCore.Routing。前者是一個(gè)路由提供各功能的抽象,后者是具體實(shí)現(xiàn)。

我們在閱讀源碼的過程中,我建議還是先大致瀏覽一下項(xiàng)目結(jié)構(gòu),然后找出關(guān)鍵類,再由入口程序進(jìn)行閱讀。

Microsoft.AspNetCore.Routing.Abstractions

大致看完整個(gè)結(jié)構(gòu)之后,我可能發(fā)現(xiàn)了幾個(gè)關(guān)鍵的接口,理解了這幾個(gè)接口的作用后能夠幫助我們在后續(xù)的閱讀中事半功倍。

IRouter

Microsoft.AspNetCore.Routing.Abstractions 中有一個(gè)關(guān)鍵的接口就是 IRouter:

public interface IRouter{ Task RouteAsync(RouteContext context); VirtualPathData GetVirtualPath(VirtualPathContext context);}

這個(gè)接口主要干兩件事情,第一件是根據(jù)路由上下文來進(jìn)行路由處理,第二件是根據(jù)虛擬路徑上下文獲取 VirtualPathData

IRouteHandler

另外一個(gè)關(guān)鍵接口是 IRouteHandler , 根據(jù)名字可以看出主要是對路由處理程序機(jī)型抽象以及定義的一個(gè)接口。

public interface IRouteHandler{ RequestDelegate GetRequestHandler(HttpContext httpContext, RouteData routeData);}

它返回一個(gè) RequestDelegate 的一個(gè)委托,這個(gè)委托可能大家比較熟悉了,封裝了處理Http請求的方法,位于Microsoft.AspNetCore.Http.Abstractions 中,看過我之前博客的同學(xué)應(yīng)該比較了解。

這個(gè)接口中

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 东辽县| 义乌市| 乳山市| 平定县| 闻喜县| 六枝特区| 宜都市| 长顺县| 通江县| 麟游县| 措美县| 丹寨县| 栖霞市| 汤原县| 普洱| 习水县| 安阳市| 亚东县| 庐江县| 天津市| 安丘市| 钟祥市| 营山县| 临漳县| 兰考县| 辰溪县| 秦皇岛市| 林周县| 衡东县| 泗阳县| 孝义市| 天全县| 徐汇区| 石渠县| 大同县| 阿拉善盟| 思南县| 安乡县| 德清县| 东丽区| 泸州市|