2.4 URLRouting和URLRewrite的区别

在学习和使用过URLRouting和URLRewrite以后,为了更好地了解和区分它们,很多开发人员喜欢将其二者做比较。毕竟两种方法都是在运行时对请求的URL进行处理。两者在创建URL和代码之间的分离非常有用,都可以帮助我们创建用于搜索引擎优化(Search Engine Optimization,SEO)功能的简洁URL。

我们可以使用URLRouting或URLRewrite来组织URL,使其更加结构化、易读和有利于搜索引擎解析。

关于二者的区别,Ruslan Yakushev在LearnIIS.NET上发表了一篇很有指导意义的文章。文章中说道:二者的本质区别在于IIS对URL重写的处理方式比ASP.NET路由的层次更低,而且对客户端是不可见的。可以看到URL重写模块是在请求时被传递到请求处理器(Handler),例如ASP.NET管理的ASPX在处理器之前被激活。IIS的URL重写并不知道具体的请求处理器。

此文章同时还给出了ASP.NET URLRouting过程的可视化工作流。可以看到ASP.NET URLRouting就是一个请求分发器,它必须明确地获知一个特定的请求究竟应途经哪个处理器。

光看文字,可能有点晦涩难懂。我们可以通过它们的用途来了解它们的区别。

首先,前面讲过URL是一个标识资源地址的字符串,到服务器中,如何根据URL字符串为用户请求执行相应的处理,需要一个中间的映射机制来对系统资源进行统一的调配,如图2-11所示。


 

URL映射机制(我们先这么叫着)将解析用户请求的URL,然后根据解析结果调用相应的资源以响应用户的请求。

下面先来看一下URLRouting。我接触URLRouting是在学习ASP.NET MVC的时候,姑且就以它在ASP.NET MVC中的表现做讲解。

前面我们说过在ASP.NET MVC中,URLRouting是作为服务器中请求的入口,所有的请求都将由它集中处理,转发到相应的资源(这里的资源可能是文件或者Controller对象的Action)。URLRouting在ASP.NET MVC应用程序中的角色如图2-12所示。


 

可以看到URLRouting起着和URL映射机制类似的资源映射的功能,而URLRewrite则不然。
URLRewrite一般用于改写请求的URL。例如下面的URL地址:

/blog/list-3.aspx

使用URLRewrite可以将其重写成:

/blog/list.aspx?cid=3

其实这两个URL都可以被访问,只是第一个的结构更简单而已。

在Web应用中,URLRewrite的执行流程如图2-13所示。


 

例如在一个公司里,张总(老板)很忙,所以他交代公司前台:今天有人来找我就让李四经理处理一下。这就相当于URLRewrite中定义了一个重写规则:客户访问张总,交给李四经理处理一下。

这个时候,如果有人(不熟悉的人)来找张总处理问题,公司的前台就去请李四经理出来帮用户处理问题。问题处理完了,用户走了,可是用户要找的张总却是一直没有露面。也可能张总不在公司,照样却有人代张总将问题给处理了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值