ASP.NET的HTTP模块和处理程序

开发 后端
在Internet时代的开端,客户端的需求非常有限,.htm文件就可以满足他们的需求。但是,随着时间的流逝,客户端需求的扩充超越了.htm文件或静态文件所包含的功能。开发者需要扩充或扩展Web服务器的功能。而在ASP.NET中,ASP.NET提供了HttpHandler(HTTP处理程序)和HttpModule(HTTP模块)来实现这些功能。在本文中,笔者将带各位深入了解这些组件的详细信息,希望对大家能够有所帮助。

  在Internet时代的开端,客户端的需求非常有限;.htm文件就可以满足他们的需求。但是,随着时间的流逝,客户端需求的扩充超越了.htm文件或静态文件所包含的功能。开发者需要扩充或扩展Web服务器的功能。Web服务器厂商设计了不同的解决方案,但是都遵循同一个主题“向Web服务器插入某些组件”。所有的Web服务器补充技术都允许开发者建立并插入组件以增强Web服务器的功能。微软公司提出了ISAPI(Internet服务器API),网景公司提出了NSAPI(网景服务器API)等等。

  ISAPI是一种重要的技术,它允许我们增强与ISAPI兼容的Web服务器(IIS就是一种与ISAPI兼容的Web服务器)的能力。我们使用下面的组件达到这个目的:

  · ISAPI扩展

  · ISAPI过滤器

  ISAPI扩展是使用Win32动态链接库来实现的。你可以把ISAPI扩展看作是一个普通的应用程序。ISAPI扩展的处理目标是http请求。这意味着你必须调用它们才能激活它们。 你可以认为ISAPI过滤器仅仅就是一个过滤器而已。客户端每次向服务器发出请求的时候,请求要经过过滤器。客户端不需要在请求中指定过滤器,只需要简单地把请求发送给Web服务器,接着Web服务器把请求传递给相关的过滤器。接下来过滤器可能修改请求,执行某些登录操作等等。

  由于这些组件的复杂性,实现它们非常困难。开发者不得不使用C/C++来开发这些组件,但是对于很多人来说,使用C/C++进行开发简直就是痛苦的代名词。

  那么ASP.NET提供什么东西来实现这些功能呢?ASP.NET提供的是HttpHandler(HTTP处理程序)和HttpModule(HTTP模块)。

  在深入了解这些组件的详细信息之前,了解一下http请求经过HTTP模块和HTTP处理程序的时候的处理流程是有价值的。

  建立示例应用程序

  我建立了下面一些的C#项目以演示应用程序的不同组件:

  · NewHandler (HTTP处理程序)

  · Webapp (演示HTTP处理程序)

  · SecurityModules (HTTP模块)

  · Webapp2 (演示HTTP模块)

  这些应用程序的安装步骤:

  · 解开attached zip文件中的所以代码。

  · 建立两个虚拟目录webapp和webapp2;把这两个目录指向Webapp和Webapp2应用程序的实际物理目录。

  · 把NewHandler项目中的Newhandler.dll文件复制到webapp应用程序的bin目录。

  · 把SecurityModules项目中的SecurityModules.dll文件复制到webapp2应用程序的bin目录中。

  本文先写到这,对于ASP.NET中的HTTP模块和处理程序的深入分析,笔者将继续推出后五篇文章,分别介绍ASP.NET中的HTTP模块和处理程序的其他五个部分,有兴趣的读者可以点击链接继续阅读。

  ·ASP.NET的HTTP模块和处理程序之请求的处理过程

  ·ASP.NET的HTTP模块和处理程序之处理程序的执行

  ·ASP.NET的HTTP模块和处理程序之对话状态

  ·ASP.NET的HTTP模块和处理程序之HTTP模块的注册和使用

  ·ASP.NET的HTTP模块和处理程序之模块实现

【编辑推荐】

  1. ASP.NET中实现HTTP请求
  2. ASP.NET编程模型HTTP工作原理
  3. 高性能ASP.NET站点构建之优化HTTP请求
  4. ASP.NET编程模型HTTP协议浅析
  5. ASP.NET对请求处理过程的操作与分析
责任编辑:韩亚珊 来源: 天极网
相关推荐

2011-04-13 16:59:41

HTTPASP.NET

2011-04-13 16:27:48

HTTPASP.NET

2011-04-13 16:49:26

HTTPASP.NET

2011-04-13 16:35:47

HTTPASP.NET

2011-04-13 15:50:49

.htmHTTP请求处理

2009-07-27 13:25:15

Postback程序处ASP.NET

2009-07-23 16:20:48

HTTP协议ASP.NET

2009-07-20 16:23:01

ASP.NET授权模块

2009-08-04 11:46:09

2009-07-27 12:22:03

ASP.NET和ASPASP.NET入门教程

2009-07-29 16:08:07

ASP和ASP.NET

2009-07-20 16:04:37

ASP.NET fra

2009-07-28 15:29:03

实现HTTP请求ASP.NET

2009-07-22 18:03:00

ASP.NET ASP

2009-07-28 18:00:11

ASP.NET程序

2009-07-27 14:46:16

XML和ASP.NET

2010-05-06 13:33:47

Asp.Net负载均衡

2009-08-03 13:12:34

ASP.NET编程模型

2009-08-03 12:40:46

ASP.NET编程模型

2009-08-05 16:04:50

点赞
收藏

51CTO技术栈公众号