HttpHandle与HttpModule的区别

  设计HttpHanlder的目的很明确:生成响应结果。
  那么,设计HttpModule又是为什么呢?  

前面说过,一个HttpHanlder用于处理一类特定的请求,每个aspx, ashx都可以认为是一类请求。 有时候我们发现所有页面可能都需要某些相同的检查功能(如身份检查), 假如只能使用HttpHanlder,那我们就要让所有页面都去调用那些相同的检查功能。 谁愿意做这些重复的事情? 或许有些人会回答,可以自己实现一个基类,把检查功能放在基类中去调用。 然而,这种做法只能解决重复调用问题,它会让代码失去灵活性(扩展性), 试想一下:如果需要再加入新的检查功能,或者用新的检查方法替换原有的检查逻辑时怎么办? 只能是修改基类了吧?
      设计HttpModule的目的正是为了提供一个灵活的方法解决这种功能重用问题。 它采用事件(观察者)的设计模式,将某些HttpHanlder都需要的功能抽取出来, 形成不同的观察者类型,这些观察者类型可以编译成类库形式,供多个网站项目共用。 为了让ASP.NET管线更灵活,ASP.NET允许我们在web.config中自由配置需要的HttpModule,例如:

<!--适用于IIS6的配置-->

<system.web>
    <httpModules>
        <add name="SetOutputCacheModule" type="MyMVC.SetOutputCacheModule, MyMVC"/>
    </httpModules>
</system.web>

<!--适用于IIS7的配置(集成模式)-->
<system.webServer>
    <modules>
        <add name="SetOutputCacheModule" type="MyMVC.SetOutputCacheModule, MyMVC" preCondition="integratedMode" />
    </modules>
</system.webServer>

 我们用HttpModule做什么事情?

  1. 修改某些请求(例如前面的示例修改了响应头)。
  2. 检查检查请求(例如身份认证检查)。

  HttpModule能处理哪些请求呢?

  1. 默认是全部进入ASP.NET的请求。
  2. 如果只需要处理部分请求,那么请自行判断。

 
时间: 2024-10-19 01:15:53

HttpHandle与HttpModule的区别的相关文章

httphandler和httpmodule的区别

ASP.Net处理Http Request时,使用Pipeline(管道)方式,由各个HttpModule对请求进行处理,然后到达 HttpHandler,HttpHandler处理完之后,仍经过Pipeline中各个HttpModule的处理,最后将HTML发送到客户端浏览 器中. 生命周期中涉及到几个非常重要的对象:HttpHandler,HttpModule,IHttpHandlerFactory,他们的执行(顺序)大致的执行过程是这样的:client端发送页面请求,被IIS的某个进程截获

httpModule HttpHandler 区别整理

httpModule HttpHandler 转自年轻的蜗牛 ASP.NET的HTTP请求处理方法 当 客户端向web服务器请求一个*.aspx的页面文件时,这个http请求也会被inetinfo.exe进程截获(www服务),它判断文件后缀之后, 把这个请求转交给ASPNET_ISAPI.DLL而ASPNET_ISAPI.DLL则会通过一个Http PipeLine的管道,将这个http请求发送给ASPNET_WP.EXE进程,当这个HTTP请求进入ASPNET_WP.EXE进程之 后,asp

.net学习笔记---HttpHandle与HttpModule

问题1:什么是HttpHandler? 问题2:什么是HttpModule? 问题3:什么时候应该使用HttpHandler什么时候使用HttpModule? 答案1:HttpHandler,Http请求的处理者,例如ScriptHandler.WebServiceHandler,IHttpHandler的实现都是为了处理某一类的请求.如ScriptHandler负责处理对脚本的请求. 答案2:HttpModule,Http模块.实际上就是那19个标准事件的处理者,或者说19个标准事件的订阅者,

【IHttpHandler】了解 IHttpHandler

1 .概述 说明:HttpHandler是一个HTTP请求的真正处理中心.在HttpHandler容器中,ASP.NET Framework才调用HttpHandler的ProcessRequest成员方法来对这个HTTP请求进行真正的处理,真正地对客户端请求的服务器页面做出编译和执行,并将处理过后的信息附加在HTTP请求信息流中再次返回到HttpModule中. 2.举例 以一个aspx页面为例,正是在HttpHandler这里,一个aspx页面才被系统处理解析,并将处理完成的结果继续经由Ht

.NET Core技术研究-中间件的由来和使用

我们将原有ASP.NET应用升级到ASP.NET Core的过程中,会遇到一个新的概念:中间件. 中间件是ASP.NET Core全新引入的概念.中间件是一种装配到应用管道中以处理请求和响应的软件. 每个组件: 选择是否将请求传递到管道中的下一个组件. 可在管道中的下一个组件前后执行工作. 单独看以上中间件的定义,一个很直观的感觉:中间件是HTTP请求管道中的一层层的AOP扩展. 在展开介绍中间件之前,我们先回顾一下ASP.NET中HttpHandler和HttpModule的处理方式.  一.

HttpHandler与HttpModule的用处与区别

问题1:什么是HttpHandler? 问题2:什么是HttpModule? 问题3:什么时候应该使用HttpHandler什么时候使用HttpModule? 答案1:HttpHandler,Http请求的处理者,例如ScriptHandler.WebServiceHandler,IHttpHandler的实现都是为了处理某一类的请求.如ScriptHandler负责处理对脚本的请求. 答案2:HttpModule,Http模块.实际上就是那19个标准事件的处理者,或者说19个标准事件的订阅者,

asp.net HttpModule与HttpHandler区别

一,什么是HttpHandler 在asp.net的网站中,在一个普通的请求地址"http://localhost:56093/Default.aspx"中"Default.aspx"就是handler. 也就是说在asp.net中page就是handler,在asp.net MVC中Controller就是handler,handler就是最终处理请求的那个类. 假如http://localhost:56093/Default.aspx这个页面输出的是"

httphandler与httpmodule区别

1.配置不同: <httpModules> <!--name表示类名,BtEd2k.UILogic表示命名空间--> <add name="Common" type="BtEd2k.UILogic.Common,BtEd2k.UILogic"></add> </httpModules> <httpHandlers> <!--path表示可访问的文件,BtEd2k.UILogic表示命名空间

HttpHandler与HttpModule及实现文件下载

HttpHandler:处理请求(Request)的信息和发送响应(Response).HttpModule:通过Http Module向Http请求输出流中写入文字,httpmodule先执行 它们两个的区别:页面处理程序在处理过程中,要经历HttpModule,HttpHandler的处理HttpModule用于页面处理前和处理后的一些事件的处理,HttpHandler进行真正的页面的处理.HttpModule会在页面处理前和后对页面进行处理,所以它不会影响真正的页面请求.通常用在给每个页面