【深入ASP.NET原理系列】--ASP.NET请求管道、应用程序生命周期、整体运行机制
微软的程序设计和相应的IDE做的很棒,让人很快就能有生产力。.NET上手容易,生产力很高,但对于一个不是那么勤奋的人,他很可能就不再进步了,没有想深入下去的动力,他不用去理解整个框架和环境是怎么执行的,因为不用明白为什么好像也能做好工作。 .NET的人很多人不注重实现 ,知其然不知其所以然,这样真的OK么?永远怀着一颗学徒的心,你就能不断进步!
我们知道在ASP.NET中,若要对ASP.NET应用程序进行初始化并使它处理请求,必须执行一些处理步骤,熟悉应用程序生命周期非常重要,这样才能在适当的生命周期阶段编写代码,达到预期的效果。永远不要做只会拖控件的.NET程序员,Never!那么你就必须懂ASP.NET应用程序生命周期,懂ASP.NET页面生命周期,懂ASP.NET 服务器控件原理。接下来,我们一起来看看
可以先看一下先导篇 【深入ASP.NET原理系列】--ASP.NET请求管道对Asp.Net WebForm和Asp.Net Mvc的处理通用部分
这篇会着重讲述ASP.NET应用程序生命周期其中的ASP.NET请求管道,我们很多人可能已经知道ASP.NET请求管道有19个事件,那是IIS 5.0和IIS 6.0 或者IIS 7.0以上经典模式运行的时候情况,当应用程序在IIS 7.0的集成模式下运行,并且与.NET Framework 3.0或更高版本一起运行时,ASP.NET请求管道中会是22个事件。
面向切面编程的时候,就是给你途径往预定的执行顺序里面添加自己处理逻辑。而ASP.NET中面向切面编程我们可以往ASP.NET请求管道中注入自己的代码。一般采取两种方式,一种是直接在Global.asax中对应的方法中直接添加代码。一种是可使用实现 IHttpModule 接口的模块来扩展 ASP.NET 应用程序生命周期。托管代码模块也可以在 IIS 7.0 配置存储区(ApplicationHost.config 文件)的 modules 元素中注册。在 ApplicationHost.config 文件中注册的模块具有全局范围,因为它们为所有由 IIS 7.0 承载的 Web 应用程序而注册。同样,在 ApplicationHost.config 文件的 globalModules 元素中定义的本机代码模块也具有全局范围。如果 Web 应用程序不需要全局模块,则可以将其禁用。
下面我们看一张图,(始终觉得图比文字更容易让人理解)具体看一下ASP.NET应用程序中管道事件具体干了些什么事情,图中有注释每一步干了些什么。如果图看不清,可以在新标签中打开图片放大看。(因为图是自己画的,如有不对的,欢迎大家指出批评交流,图中22个事件的展示代码在篇尾有附)

输出22个事件的Global代码:http://files.cnblogs.com/files/zhangyihui/Global.rar
下一篇:【深入ASP.NET原理系列】--ASP.NET页面生命周期
如果觉得本文对你有所帮助不如【推荐】一下! 如果文中有不妥或者错误的地方还望指出,以免误人子弟。
作者:张一辉
出处:http://www.cnblogs.com/zhangyihui/
本文以学习、研究和分享为主,版权归作者和博客园共有,欢迎转载,但必须在文章页面明显位置给出此段申明。
【深入ASP.NET原理系列】--ASP.NET请求管道、应用程序生命周期、整体运行机制的更多相关文章
- asp.net请求管道和页面生命周期
- 【深入ASP.NET原理系列】--ASP.NET页面生命周期
前言 ASP.NET页面运行时候,页面将经历一个生命周期,在生命周期中将执行一系列的处理步骤.包括初始化.实例化控件.还原和维护状态.运行时间处理程序代码以及进行呈现.熟悉页面生命周期非常重要,这样我 ...
- ASP.NET请求管道、应用程序生命周期、整体运行机制
我们知道在ASP.NET中,若要对ASP.NET应用程序进行 初始化并使它处理请求,必须执行一些处理步骤,熟悉应用程序生命周期非常重要,这样才能在适当的生命周期阶段编写代码,达到预期的效果.永远不要做 ...
- [ASP.NET MVC2 系列] ASP.Net MVC教程之《在15分钟内用ASP.Net MVC创建一个电影数据库应用程序》
[ASP.NET MVC2 系列] [ASP.NET MVC2 系列] ASP.Net MVC教程之<在15分钟内用ASP.Net MVC创建一个电影数据库应用程序> ...
- ASP.NET管线与应用程序生命周期
ASP.NET管线与应用程序生命周期 ASP.NET管线与应用程序生命周期 8.1节介绍了IIS的系统架构和HTTP请求处理的总体流程,从中可以知道每个ASP.NET网站都对应着一个Web应用程序,此 ...
- [转]ASP.NET应用程序生命周期趣谈(五) IIS7瞎说
Ps:建议初学者在阅读本文之前,先简要了解一下之前的几篇文章,以便于熟悉本文提到的一些关于IIS6的内容,方便理解.仅供参考. PS:为什么叫瞎说呢?我觉得自己理解的并不到位,只能是作为一个传声筒,希 ...
- .net学习笔记----Asp.net的生命周期之一应用程序生命周期
Http请求刚刚到达服务器的时候 当服务器接收到一个 Http请求的时候,IIS (Internet Information Services,互联网信息服务)首先需要决定如何去处理这个请求. 什么是 ...
- Asp.net的生命周期之应用程序生命周期
参考:http://msdn.microsoft.com/zh-cn/library/ms178473(v=vs.100).aspx 参考:http://www.cnblogs.com/JimmyZh ...
- [转]ASP.NET应用程序生命周期趣谈(三) HttpModule
在之前的文章中,我们提到过P_Module(HttpModule)这个能干的程序员哥们儿,它通过在项目经理HttpApplication那里得到的授权,插手整个应用程序级别的事件处理.所有的HttpM ...
随机推荐
- python写的分析mysql binlog日志工具
因为数据库增删改突然暴增,需要查询是那些表的操作特别频繁,写了一个用来分析bin-log的小工具,找出增删改查的表,并按照操作次数降序排列,以下是代码: 1 2 3 4 5 6 7 8 9 10 11 ...
- fopen()、 file_get_contents() 通过url获取链接内容
功能:获得网页内容 区别如下: fopen()打开URL 下面是一个使用fopen()打开URL的例子: <?php $fh = fopen('http://www.baidu.com/', ' ...
- 创建一个Point类,有成员变量x,y,方法getX(),setX(),还有一个构造方 法初始化x和y。创建类主类A来测试它
package com.hanqi.test; public class Point { private int x; private int y; Point(int xx,int yy) { x= ...
- Spring AOP 开发中遇到问题:Caused by: java.lang.IllegalArgumentException: warning no match for this type name: com.xxx.collector.service.impl.XxxServiceImpl [Xlint:invalidAbsoluteTypeName]
在网上找了很多,都不是我想要的,后来发现是我在springaop注解的时候 写错了类名导致的这个问题 @Pointcut("execution(* com.xxx.collector.ser ...
- linux线程同步(2)-条件变量
一.概述 上一篇,介绍了互斥量.条件变量与互斥量不同,互斥量是防止多线程同时访问共享的互斥变量来保 ...
- Vim命令大全
1.进入vi的命令 vi filename :打开或新建文件,并将光标置于第一行首 vi +n filename :打开文件,并将光标置于第n行首 vi + filename :打开文件,并将光标置于 ...
- 理解 QEMU/KVM 和 Ceph(3):存储卷挂接和设备名称
本系列文章会总结 QEMU/KVM 和 Ceph 之间的整合: (1)QEMU-KVM 和 Ceph RBD 的 缓存机制总结 (2)QEMU 的 RBD 块驱动(block driver) (3)存 ...
- PHP实现文件上传下载——心在忙而已
这一周都没有写什么东西,是啊,一周时间都没有学习太多新的东西,除了开车. 妈蛋啊,天天中午去学车然后两周没有午觉的日子还是很崩溃的,加上之后工作压力带来的心忙,宝宝不开心啊. 不过,也是自己不是那么能 ...
- MATLAB学习(一)——状态好状态坏,自作自受
状态不好,学学MATLAB做做准备吧. 一.基本情况 1.1 书写 一行写不下? %可以加上三个小黑点(续行符)并按下回车键,然后接下去再写.例如 s=-/+/-/+/-/+/-…- /+/-/+/- ...
- XMLHTTP中setRequestHeader方法和参数
注意:在FF里面需要将open方法放在setRequestHeader之前 一.为何要用到setRequestHeader 通 常在HTTP协议里,客户端像服务器取得某个网页的时候,必须发送一个HTT ...