最近打算抽時(shí)間看一下 ASP.NET Core MVC 的源碼,特此把自己學(xué)習(xí)到的內(nèi)容記錄下來,也算是做個(gè)筆記吧。
路由作為 MVC 的基本部分,所以在學(xué)習(xí) MVC 的其他源碼之前還是先學(xué)習(xí)一下路由系統(tǒng),ASP.NET Core 的路由系統(tǒng)相對(duì)于以前的 Mvc 變化很大,它重新整合了 Web Api 和 MVC。
路由源碼地址 :https://github.com/aspnet/Routing
路由(Routing)功能介紹
路由是 MVC 的一個(gè)重要組成部分,它主要負(fù)責(zé)將接收到的 Http 請(qǐng)求映射到具體的一個(gè)路由處理程序上,在MVC 中也就是說路由到具體的某個(gè) Controller 的 Action 上。
路由的啟動(dòng)方式是在ASP.NET Core MVC 應(yīng)用程序啟動(dòng)的時(shí)候作為一個(gè)中間件來啟動(dòng)的,詳細(xì)信息會(huì)在下一篇的文章中給出。
通俗的來說就是,路由從請(qǐng)求的 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)。
我們?cè)陂喿x源碼的過程中,我建議還是先大致瀏覽一下項(xiàng)目結(jié)構(gòu),