简述asp.net的httpApplication,httpModule,httpHandler

这三个都是asp.net站点的重要对象,首先分别为这三个角色定个概念

HttpApplication:这其实就是我们处理一个http请求的完整程序,httpModule及httpHandler对象都是由它来调用的

httpModule:传说中的管道事件就是在这个角色里面进行实现的,可以把它看成是以一个观察者模式外挂在请求流程中的一个通用处理类,HttpApplication在处理请求时,走到每个固定的阶段,都会触发httpModule中注册的相应管道事件,从而进行一些所有请求通用的处理。比如验证身份,加session,记日志等等,自定义的httpModule需实现IHttpModule接口,下面细讲;

httpHandler:我们对请求的实际处理类,你要对这个请求做些什么独特的处理,都会在httpHandler对象中实现(mvc中将请求路由到特定的Controller/Action中也是通过httpHandler来实现的),自定义的Httphandler需实现IHttpHandler接口,下面细讲;

三者关系图如下
在这里插入图片描述


下面讲讲怎么样在空项目中声明httpModule与httpHandler来处理自己的请求
1、首选新建一个asp.net的空项目
在这里插入图片描述
2、新建处理请求的HttpHandler,只需要将这个类继承IHttpHandler即可
在这里插入图片描述我一共声明了4个Handler来处理不同类型的请求
在这里插入图片描述
修改Web.config文件,注册HttpHandler(IIS7写在system.webServer节点下,IIS7以下的版本写在system.web下,注意点及说明看注释)
在这里插入图片描述
3、新建处理请求的HttpModule,只需要将这个类继承IHttpModule即可,并绑定几个管道事件
在这里插入图片描述
我一个新建了两个Module
在这里插入图片描述
修改Web.config文件,注册HttpModule(IIS7写在system.webServer节点下,IIS7以下的版本写在system.web下,注意点及说明看注释)
在这里插入图片描述

4、好了,到了这里,我们自己搭建的一个asp.net项目已经基本完成了,我们来运行一下看结果在这里插入图片描述
在这里插入图片描述
从上面的运行结果,我们可以验证我们前面的几个观点
1、HttpModule中运行是按照注册顺序来执行的,先执行Module2再执行Module1;
2、管道事件只会在请求的对应步骤执行对应的管道事件,而不是根据绑定事件的顺序;
3、一次请求中,会执行所有注册的HttpModule,而HttpHandler只会根据请求的url执行第一个匹配的;


最后加一句:asp.net mvc,asp.net web api,asp.net webForm等,也是在asp.net的基础上做了非常强大的封装而已,本质还是这套asp.net的请求流程


好了,以上就是我的简单理解,参照了非常多的博文才总结出来的,在这就不一一致谢了,最后写了这篇总结以加深自己的印象与理解。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值