在开发基于microsoft iis的应用时,开发者除了可以编写asp程序外,还可以使用visual c++等开发工具,开发isapi应用,以获取更为强大的功能。可以编写两种isapi扩展:一种是isapi server extention,另一种是isapi filter,但是,isapi扩展应用的编写通常对开发者有比较高的要求,开发和部署的难度比较大。 在开发asp.net应用时,我们仍然可以编写isapi应用,以扩充iis的功能,但是,asp.net为我们提供了另外一种选择——使用http handler 和http module。这是通过使用ihttphandler 和 ihttpmodule接口来实现的。http handler提供了类似于isapi server extention的功能,而httpmodule实现了类似于isapi filter的功能,并且,比isapi,在开发和部署上都要简单的多。 应用httphandler和httpmodule,使应用程序可以与iis web服务器的低级别请求和响应服务交互。本文首先介绍httphandler和httpmodule的概念和基本使用方法,并介绍了一个应用httpmodule实现权限系统的案例。
http 处理管道的基本模型
要对httpmodule和ihttphandler进行研究,必须先对asp.net的处理管道有一个了解。 在asp.net应用程序中,系统使用一组相关的类,通过一定的顺序来处理客户端的请求(request),asp.net应用程序的处理模式可称之为http处理管道。httpmodule和ihttphandler就是这个处理管道上的两个处理环节。 http处理管道中的类在system.web名称空间中定义,主要有以下类型: · httpworkerrequest 抽象类定义了asp.net页面处理请求的基本方法; · httpruntime 提供了处理应用的一组服务; · httpcontext 保存了处理一次请求的所有相关上下文信息; · httpapplicationfactory 提供相关目录的应用程序; · httpapplication 定义了所有asp.net应用程序的通用的方法、属性和事件。这个类也是在用户在global.asax文件中定义的应用的基类; · modules 处理请求前和响应后的事件; · handlerfactories 提供应用程序中的handlers; · handlers 处理请求和响应。 http处理管道的模型如下:
图1:http 处理管道
在windows平台上,http pipline需要iis的支持。为了运行asp.net应用,iis需要以下两个文件:as.net_isapi.dll和as.net_wp.exe · as.net_isapi.dll是一个isapi extention他将发向iis的请转交as.net_wp.exe处理 · as.net_wp.exe使用httpruntime对请求进行具体处理 处理的过程可以用图表示如下:
图2:iis上的http处理管道
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器