教程集 www.jiaochengji.com
教程集 >  脚本编程  >  Asp.net  >  正文 HTTP处理程序与HTTP模块代码

HTTP处理程序与HTTP模块代码

发布时间:2016-12-03   编辑:jiaochengji.com
教程集为您提供HTTP处理程序与HTTP模块代码等资源,欢迎您收藏本站,我们将为您提供最新的HTTP处理程序与HTTP模块代码资源

http处理程序与http模块代码


http处理程序是真正负责处理请求的组件,它实现了ihttphandler接口。该接口的processrequest方法是控制请求处理的“中央控制台”。如,page类实现ihttphandler接口,它的processrequest方法负责加载和保存视图状态,还负责引发一些常见的事件(init、load、prerender等)。

  http://www.contoso.com/apps/hello.dll

  该dll必须暴露两个函数:getextensionversion和httpextensionproc。getextensionversion函数用于设置isapi服务器扩展的版本和名称。当该扩展被加载时,getextensionversion函数会最先被调用。但它只调用一次,用于对内部变量进行初始化。如果一切正常,该函数会返回true。如果发生错误,该函数会返回false,web服务器会终止相应dll的加载,并向系统日志发送一条消息。

  httpextensionproc函数为isapi组件的核心。该函数能够接收请求的基本http信息(如,查询字符串和标头),执行期望的操作,并准备将响应发送给浏览器。

  isapi编程模型由两种组件构成:isapi扩展和isapi筛选器。

isapi扩展

  isapi扩展是cgi应用程序的iis进程内版本。iis扩展的工作方式与asp或asp.net页面相同,它会获取与http请求相关的信息,并生成有效和http响应。

  isapi扩展由已编译的代码构成,如果要对其进行修改,每次都需要重新编译并重新加载。如果dll加载到web服务器的内存中,web服务器必须停止运行;如果dll被加载到单独进程的上下文中,那么该进程必须停止运行;若使用外部进行,isapi扩展的执行速度不像在进程内那样快,但不会影响到iis的稳定性。

isapi筛选器

  isapi筛选器是一种组件,能够捕获特定的服务器事件并对其进行处理。在加载时,筛选器会指示它能够处理的事件。如果其中的某个事件被引发,筛选器便会处理它们,或将其传给其他筛选器。

  筛选器只能在进程内模式下运行。它可以被整个web服务器共享,也可以针对特定的web站点。

  isapi筛选器能够实现自定义身份验证模式、压缩、加密、日志记录及请求分析之类的功能。在处理传入和传出数据流方面,isapi筛选器有非常大的开发潜力,且非常灵活。

iis 7.0的革新

  1. 统一的运行时环境

  iis 7.0在某种程序上体现了asp.net与iis平台的统一。http处理程序、http模块、运行管道和配置文件成为公共环境的组成元素。iis内部的整个管道被组件化,能包容多个独立且可配置的组件。asp.net应用程序的web.config文件中加入了一个新区段,专门用于配置iis环境。因此,asp.net运行库得到了扩展,能与外围web服务器环境进行交互,还能替换其中的组件。

  2. 托管的isapi扩展和筛选器

  若希望在iis 7.0之前的版本中控制传入的请求,除了通过mfc或活动模板库(atl)来编写c或c dll以外,别无他法。http处理程序和模块是asp.net特有的功能,但仅能处理asp.net特定的资源,且请求经iis验证后才会交给asp.net。

  在iis 7.0中,我们可以编写http处理程序和模块来对任何请求进行筛选,通过.net代码为web服务器能够处理的所有资源添加新功能。确切地讲,我们照旧编写http处理程序和模块,但可以为任何类型注册它们。

 

您可能感兴趣的文章:
Python自定义模块
HTTP处理程序与HTTP模块代码
面向对象编程
python模块和包的区别
初学者必看的Python模块讲解
如何编写高质量的VB代码(2)
Python中的模块是什么
django中常见的模块有哪些
浅谈模块化的JavaScript
PHP--进行模块化设计

[关闭]
~ ~