ASP.Net中自定义Http处理及应用之HttpHandler篇

时间:2010-03-09 11:59:37  来源:第二电脑网  作者:第二电脑网

  第二电脑网导读:者有比较高的要求,开发和部署的难度比较大。      在开发ASP.Net应用时,我们仍然可以编写ISAPI应用,以扩充IIS的功能,但是,ASP.Net为我们提供了另外一种选择——使用HTTP Handler 和HTTP Module。这是通过使用IHttpHandler 和 IHttpModule接口来实现的。HTTP Handler提供了类似于ISAPI Server Extention的功能,而HttpModule实现了类似于ISAPI Filt...
  正文:在开发基于Microsoft IIS的应用时,开发者除了可以编写ASP/ target=_blank class=infotextkey>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处理管道的模型如下:
  %20  在Windows平台上,HTTP%20Pipline需要IIS的支持。为了运行ASP.NET应用,IIS需要以下两个文件:ASPNET_ISAPI.DLL和ASPNET_WP.EXE%20  %20  ·%20ASPNET_ISAPI.DLL是一个ISAPI%20Extention他将发向IIS的请转交ASPNET_WP.EXE处理%20  %20  ·%20ASPNET_WP.EXE使用HttpRuntime对请求进行具体处理%20  %20  处理的过程可以用图表示如下:%20  
  HttpHandler的实现
  
  
  HttpHandler实现了类似于ISAPI Extention的功能,他处理请求(Request)的信息和发送响应(Response)。HttpHandler功能的实现通过实现IHttpHandler接口来达到。实际上,我们在编写ASP.Net页面时,ASP.Net页面所继承的基类——System.Web.UI.Page——也实现了HttpHandler接口,也是一个HttpHandler,看一下它的定义就知道了(C#):
  
  public class Page : TemplateControl, IhttpHandler
  
  
  
  接口IHttpHandler的定义如下:
  
  interface IHttpHandler
  {
  void ProcessRequest(HttpContext ctx);
  bool IsReuseable { get; }
  }
  
  
  
  接口中ProcessRequest是添加自己的代码,进行相应处理的地方。IsReuseable属性指明该HttpHandler的实现类是否需要缓存。
  
  下面的示例展示了HttpHandler的基础使用:
  
  1、建立一个名为MyNameSpace的工程,添加一个类,名称为MyHandler,代码如下: 《ASP.Net中自定义Http处理及应用之HttpHandler篇》由第二电脑网原创提供,转载请注明:http://www.002pc.com/master/College/Programming/aspnet/13150.html


关键字:

关于《ASP.Net中自定义Http处理及应用之HttpHandler篇》文章的评论

站内搜索: 高级搜索

热门搜索: Windows style 系统 tr IP QQ CPU 安装 function 注册 if td