IIS URL重写模块和ASP.NET路由组件比较
2008-11-09 20:42
543 查看
source:http://www.infoq.com/cn/news/2008/11/urlrewriting
IIS URL重写模块和ASP.NET路由组件比较
作者 Al Tenhundfeld译者 张逸 发布于 2008年11月6日 下午11时54分社区
.NET
主题
.NET框架,
Web框架
标签
IIS,
ASP.NET
随着针对IIS 7.0的URL重写模块的发布,以及在.NET框架3.5 SP1中包含了ASP.NET路由(Routing),许多ASP.NET开发人员开始质问这两种特性彼此间的关系,以及应该何时使用。
Ruslan Yakushev在LearnIIS.NET上发表了一篇很有指导意义的文章。
二者本质的区别在于:IIS URL重写的处理方式比ASP.NET路由在层次上更低,对于客户端是不可见的。
Ruslan给出了IIS 7 URL重写过程的可视化工作流。你可以看到URL重写模块是在请求被传递到请求处理器(Handler),例如ASP.NET管理的ASPX处理器之前被激活的。IIS URL重写并不知道具体的请求处理器。
他同时还给出了ASP.NET路由过程的可视化工作流。可以看到ASP.NET路由就是一个请求分发器,它必须明确地获知一个特定的请求究竟应途经哪个处理器。
来自Ruslan的描述如下:
URL重写通常被用于在Web服务器处理请求之前操作URL路径。URL重写模块并不知道处理器实际处理URL重写的任何内容。此外,实际的请求处理器并不知道URL是否已被重写。
ASP.NET路由通常根据请求的URL路径将请求分发到处理器。与URL重写相反,路由组件知道处理器,并能够选择可以为请求的URL生成反应的处理器。你可以将ASP.NET路由看作是一个高级的处理器映射机制。
IIS URL重写模块能够用于任何类型的Web应用程序,包括ASP.NET,PHP,ASP和静态文件。ASP.NET路由只能用于基于.NET框架的Web应用程序。
在用于应用程序池方面,不管是集成的还是经典的IIS管道模式,IIS URL重写模块的工作方式都是相同的。而ASP.NET路由则会优先选择使用集成管道模式。ASP.NET路由也可以工作于经典模式,但是在这种情况下,应用程序的URL必须包含文件扩展名,或者应用程序必须在IIS中使用“*”配置处理器。
URL重写模块可以根据域名、HTTP标头和服务器变量进行重写判断。默认情况下,ASP.NET路由只能使用URL路径以及标头的形式。
除了重写功能,URL重写模块能够执行HTTP重定向,确定自定义状态码以及取消请求。ASP.NET路由则不具有这些功能。
URL重写模块在当前版本中是不能扩展的。ASP.NET路由完全能够扩展和定制。
相关文章推荐
- IIS URL重写模块和ASP.NET路由组件比较
- 用微软组件URLRewriter在Windows Server 2003下实现的在ASP.NET下重写URL
- ASP.net URL重写后IIS配置的配置方案
- asp.net下实现URL重写伪静态之iis设置
- IIS 无法安装URL重写模块的解决办法 UrlReWrite (.NET`SQL技术交流 群号206656202)
- asp.net URL 重写 附IIS配置+源码
- ASP.NET 如何实现伪静态 url重写路由功能
- asp.net不用设置iis实现url重写 类似伪静态路由
- asp.net 发布到IIS中出现”处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”“错误的解决方法
- asp.net发布到IIS中出现错误:处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”
- ASP.NET过滤器、URL重写
- 在 ASP.NET 中执行 URL 重写
- 在ASP.NET MVC中通过URL路由实现对多语言的支持
- asp.net发布到IIS中出现错误:处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”
- 在 ASP.NET 中执行 URL 重写
- 技巧/诀窍:在ASP.NET中重写URL (转)
- asp.net发布到IIS中出现错误:处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”
- asp.net mvc路由重写及伪静态的粗浅理解
- URL Routing with ASP.NET 4.0 Url路由写法
- ASP.NET URL Rewrite. URL重写