最近打算抽时间看一下 ASP.NET Core MVC 的源码,特此把自己学习到的内容记录下来,也算是做个笔记吧。

路由作为 MVC 的基本部分,所以在学习 MVC 的其他源码之前还是先学习一下路由系统,ASP.NET Core 的路由系统相对于以前的 Mvc 变化很大,它重新整合了 Web Api 和 MVC。

路由源码地址 :https://github.com/aspnet/Routing

路由(Routing)功能介绍

路由是 MVC 的一个重要组成部分,它主要负责将接收到的 Http 请求映射到具体的一个路由处理程序上,在MVC 中也就是说路由到具体的某个 Controller 的 Action 上。

路由的启动方式是在ASP.NET Core MVC 应用程序启动的时候作为一个中间件来启动的,详细信息会在下一篇的文章中给出。

通俗的来说就是,路由从请求的 URL 地址中提取信息,然后根据这些信息进行匹配,从而映射到具体的处理程序上,因此路由是基于URL构建的一个中间件框架。
路由还有一个作用是生成响应的的URL,也就是说生成一个链接地址可以进行重定向或者链接。

路由中间件主要包含以下几个部分:

  • URL 匹配

  • URL 生成

  • IRouter 接口

  • 路由模板

  • 模板约束

Getting Started

ASP.NET Core Routing 主要分为两个项目,分别是 Microsoft.AspNetCore.Routing.Abstractions,Microsoft.AspNetCore.Routing。前者是一个路由提供各功能的抽象,后者是具体实现。

我们在阅读源码的过程中,我建议还是先大致浏览一下项目结构,