例子引入
先看看如下例子,你能完全明白吗?
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 using System.Web.Mvc; 6 using System.Web.Routing; MVCDemo 9 { RouteConfig 11 { RegisterRoutes(RouteCollection routes) 13 { routes.IgnoreRoute(); routes.MapRoute( ,url: ,defaults: , action = , id = UrlParameter.Optional },namespaces: },constraints: } ); 26 } 27 } 28 }
注:该例子没有加入区域
1 URI、URL与URN
1.1 URI、URL和URN定义
URI(Uniform Resource Identifier)代表统一资源标识符,标识资源的字符串;
URL (Uniform Resource Locator)代表统一资源定位符,互联网上标准资源的地址;
URN(Uniform Resources Name)代表统一资源名称,互联网上资源的名称;
1.2 URI、URL和URN三者之间的关系图
1.3 对URI、URL和URN三者之间解析
本解析基于1.2 URI、URL和URN三者之间的关系图。
(1)从命名角度,URI标识资源且唯一,URL标识资源地址 ,URN标识资源名称;
(2)从数学关系:URI=URL+URN+URL∩URN;很容易看出,URL一定是URI,但URI不一定是URL,同理,URN一定是URI,但URI不一定是URN;
1.4 URL应具有特点
(1) 域名便于记忆和拼写;
(2) 简短;
(3) 便于输入;
(4) 可以反映出站点结构;
(5) 应该是“可破解的”,用户可以通过移除URL的末尾,进而到达更高层次的信息体系结构;
(6) 持久、不能改变
1.5 小结
通常情况下,URI代表同意资源标识符(Uniform Resource Identifier)。URI是标识了一个资源的字符串。从技术角度看,所有URL都是URI。W3C认为“URL是一个非正式的概念,但它非常有用:URL是URI的一种类型,它通过表示自身的主要访问机制来标识资源”,换句话说,URI是某种资源的标识符,而URL则为获取该资源提供了具体的信息。
注释:资源是一个抽象概念,既可以指一个文件,也可以指方法调用的结果或服务器上的一些其他内容。
2 路由概述(传统路由)
2.1 WebForm URL与Route URL
(1)WebForm中,对URL的传入请求通常映射到磁盘上的物理文件,如.aspx文件。例如对?id=4的请求映射到名为Products.aspx文件,该文件包含代码和标记用于呈现对浏览器的响应,一般请求示过程抽象如下:
(2)ASP.NET MVC中,通常地,URL映射并非映射到具体磁盘上的物理文件,这是基于ASP.NET路由特性,主要有两个过程,即URL映射和URL生成(接下来讲解)。在ASP.NET路由中,您可以定义URL模式,该模式包含在处理URL请求时使用的值的占位符。在运行时,运用程序名称后面的URL部分根据您所定义的URL模式分析为离散值。例如,在请求时,路由分析器可以将值Products、show和beverages传递给请求的处理程序。相反,在一个不由URL路由管理的请求中,/Products/show/beverages片段将被解释为运用程序中的一个文件的路径。
2.2 ASP.NET 路由与 URL 重写
ASP.NET 路由不同于其他 URL 重写方案。URL 重写通过在将请求发送到网页之前实际更改 URL 来处理传入请求。例如,一个使用 URL 重写的应用程序可能会将 URL 从 /Products/Widgets/ 更改为 /Products.aspx?id=4。此外,URL 重写通常没有相应的 API 来创建基于模式的 URL。在 URL 重写中,如果更改了 URL 模式,则必须手动更新包含原始 URL 的所有超链接。由于 ASP.NET 路由可以从 URL 提取值,所以处理传入请求时不更改 URL。如果必须创建一个 URL,则将参数值传递到为您生成 URL 的方法中。若要更改 URL 模式,请在某位置更改该模式,您在应用程序中创建的基于该模式的所有链接将自动使用新模式。
2.3 路由定义
A route is a URL pattern that is mapped to a handler. The handler can be a physical file, such as an .aspx file in a Web Forms application. A handler can also be a class that processes the request, such as a controller in an MVC application. To define a route, you create an instance of the Route class by specifying the URL pattern, the handler, and optionally a name for the route.