这三个对象我们在开发Asp.net程序时经常会用到。
HttpModule:Http模块,可以在页面处理前后、应用程序初始化、出错等时候加入自己的事件处理程序
HttpHandler:Http处理程序,处理页面请求
HttpHandlerFactory:用来创建Http处理程序,创建的同时可以附加自己的事件处理程序
_____________________________________________________________________
asp.net架构
一 asp.net请求的处理过程
HttpModule
一客户的请求页面由aspnet_isapi.dll这个动态连接库来处理,把请求的aspx文件发送给CLR进行编译执行,然后把Html流返回给浏览器
二 页面事件执行顺序

Page_Unload:此事件是执行最终清理工作的。
非确定事件 Page_Error:如果在页面处理过程中出现未处理的例外,则激发error事件。
Page_CommitTransaction:如果已成功交易,则激发此事件。
Global.asax中的事件(执行顺序)
Application_AuthenticateRequest:
Session_Start: 会话启动时激发
Application_EndRequest:Htttp请求结束时激发
----------------------
ISAPI: 向web服务器插入某些组建,扩展功能,增强web服务器功能。 ISAPI:
扩展,win32的动态链接库,譬如aspnet_isapi.dll,可以把ISAPI扩展看作是一个普通的应用程序,它处理的目标是HTTP请求。
ISAPI: 过滤器,web服务器把请求传递给相关的过滤器,接下来过滤器可能修改请求,执行某些操作等等。
ASP.NET请求的处理过程:基于管道模型,在模型中ASP.NET把http请求传递给管道中所有的模块。每个模块都接收HTTP请求,并有完全的控制权。一旦请求经过了所有的HTTP模块,最终被HTTP处理程序处理。
HTTP处理程序对请求进行一些处理,并且结果将再次经过模块管道中的HTTP模块。
-----------
httpmodule ISAPI过滤器(筛选器):
为了解决这个问题,IIS有一种机制,叫做ISAPI的过滤器。它是一个COM组件。
ASP.NET服务在注册到IIS的时候,会把每个扩展可以处理的文件扩展名注册到IIS里面(如*.ascx
*.aspx等)。
扩展启动后,就根据定义好的方式来处理IIS所不能处理的文件,然后把控制权跳转到专门处理代码的进程中,asp.net中是aspnet_isapi.dll。
让这个进程开始处理代码,生成标准的HTML代码,生成后把这些代码加入到原有的HTML中,最后把完整的HTML返回给IIS,IIS再把内容发送到客户端。
----------------
HttpModule Http模块实现了过滤器(ISAPI
filter)的功能,它是实现了System.Web.IHttpModule接口的.net组件。
这些组件通过在某些事件中注册自身,把自己插入到ASP.NET请求处理管道。当这些事件发生的时候,ASP.NET调用对请求有兴趣的HTTP模块,这样该模块就能处理请求了。
有时候需要过虑一下http请求,注意它不是覆盖其他的包括系统自带的HttpModule,在Machine.config中配置完成。
--------------------------------------
HttpHandler功能的通过必须实现IHttpHandler接口。HTTP处理程序是实现System.Web.IHttpHandler接口的.NET组件。任何实现了该接口的类都可以用于处理输入的Http请求。
插入表情