控制器 - URL routing HTTP module(一)

URL routing HTTP module 负责处理检查入站请求的 URL,并将它们分派到最合理的处理器上。URL routing HTTP module 也替代了旧版本的 ASP.NET URL 重写特性。核心方面,URL 重写由 连接请求,转换原始 URL,指导 HTTP 运行时环境处理一个“最可能相关但存在区别”的 URL 这几个部分组成。

替代 URL 重写

如果我们需要在路由可读性、面向搜索引擎友好和需要以编程的方式处理若干的 URLs 方面上做权衡,那么,URL 重写就发挥作用了。比如,我们考虑以下 URL:

http://northwind.com/news.aspx?id=1234

news.aspx 页面包含了一些逻辑需要检索,格式化,并且显示相应新闻。特定新闻编号的检索通过查询字符串中的参数提供。作为一名开发者,实现这样的页面并非很容易,首先获得查询字符串的参数,然后执行查询,最后创建 HTML 页面,可是你也并非非常容易地记住这些 URL 地址。

然而 URL 重写可以在两个方面帮助你。第一,它让开发者使用通用的面向前端的页面成为可能,比如 news.aspx,来展示相关的内容。第二,它让用户访问更加友好的 URL 成为可能,这些 URL 都是通过编程的方式映射到敏感度降低但是更加易于管理的 URL 上。简单来说,URL 重写的存在就是为了降低请求的 URL 与处理请求的物理页面的耦合度。

在上个版本的 ASP.NET 4 Web Forms 中,你可以通过 URL 重写来匹配入站 URL 到其他的 URL 上,而非使用 HTTP 302 重定向的代价。相反的,在 ASP.NET MVC 里,URL 路由的目标就是将入站 URL 映射到对应的控制器和对应的行为方法上。

注意: URL routing module 原本开发为 ASP.NET MVC 的一个组件,但现在是 ASP.NET 平台一个原生的部分,正如上面所提,它同时向 ASP.NET MVC 和 ASP.NET Web Forms 应用提供服务,虽然通过一个稍微有点差别的 API.

路由请求

当一个请求到达 IIS 究竟发生了什么?

URL routing module 为应用拦截任何无法被 IIS 处理的请求。如果这个 URL 指向一个物理文件(比如,一个 ASPX 文件),routing module 就会忽略这个请求,除非这个 URL 被特别配置过。然后这个请求就会落到传统的 ASP.NET 机制上并被处理,也就是 page handler。

相反的,URL routing module 会尝试将请求 URL 与应用定义好的路由经行匹配。如果匹配成功,这个请求就会进入 ASP.NET MVC 空间并被处理。如果没有匹配成功,这个请求就会被标准的 ASP.NET 运行时所处理,并且很可能导致 HTTP 404 错误的显示。

最后,仅有那些匹配预先定义的 URL 模式的请求可以进入 ASP.NET MVC 运行时。所有的这些请求将会被路由到一个公共的 HTTP handler 上,它可以实例化一个控制器类并调用它当中的定义好的方法。然后,这个控制器中的方法,反过来会选择一个视图组件,并生成响应。

URL routing module 内部结构

依据实现原理,URL routing 引擎是一个封装了 PostResolveRequestCache 事件的 HTTP 模块。这个事件会在如果 ASP.NET 缓存中没有对应请求的响应时立即被启动。

HTTP module 将请求的 URL 与一个用户自定义的 URL 路由匹配,设置 HTTP context,并使用 ASP.NET MVC 标准 HTTP handler 处理请求。作为一个开发者,我们并不太可能直接与 URL routing module 打交道。这个模块由系统直接提供,并且你也不需要做相应形式的配置。然后,你有义务为你的应用提供相应的路由,而这个将会被 routing module 使用到。 

  

【声明:本文是个人翻译而来。当中可能会存在许多不当之处,万望指出,谢谢。文章会持续更新】

转载于:https://www.cnblogs.com/levid-gc/p/4045253.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
hcip-datacom-advanced routing switching technology v1.0(HCIP-数据通信高级路由交换技术)是华为公司推出的一项专业认证,旨在验证专业人士在高级路由交换技术领域的能力和知识。 该认证主要包括以下几个方面的知识点和技能要求: 1. 高级路由技术:包括BGP协议、OSPF协议、IS-IS协议等,掌握路由原理、路由选路算法以及高级路由优化技术,能够配置和管理复杂的企业网络中的路由器和路由协议。 2. 高级交换技术:包括VLAN技术、Spanning Tree协议、VRRP协议等,能够理解和应用交换原理、交换技术和交换优化策略,具备交换设备的配置和管理能力。 3. IPv6技术:掌握IPv6的基础知识、地址规划和配置技术,了解IPv6的路由协议和转换技术,能够在企业网络中部署和管理IPv6。 这项认证通过考试的方式进行,考试内容主要包括选择题、判断题以及实验题,考察考生对于高级路由交换技术的理解和应用能力。 通过获得HCIP-数据通信高级路由交换技术认证,可以证明个人在该领域具备较高的技术水平和专业能力,有能力在企业网络中完成复杂的路由交换配置和管理工作,并且可以为企业提供高质量的网络服务和支持。 总而言之,HCIP-数据通信高级路由交换技术认证是华为公司针对高级路由交换技术领域专业人士的认证,通过考试测试考生在路由交换技术方面的能力和知识。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值