ASP.NET页面生命周期总结(1)
图解:1)
浏览器 :把用户的操作封装成一个请求通过socket发送到后台服务器。
后台服务器:首先有个内核模块Http.sys 和针对每个应用程序池都有一个请求队列。然后请求到达http.sys之后,就把请求放到相应请求的队列池子里面去。 完成这些步骤后通知w3svc服务,由w3svc服务负责触发‘工作进程’,告诉工作进程已经内核当中有一个请求去取一个请求进行处理。拿到请求的报文之后,工作进程开始处理,工作进程分成两种情况 :
1.静态文件(读取出来直接封装成响应的报文然后返回给客户端,PS:返回给客户端这个过程不是由工作进程直接进行交互的,而是工作进程把响应报文交给http.sys内核模块,内核模块再把响应报文发给客户端)
2.如果是动态网页:比如请求的是a.aspx这时候就会启动asp.net应用程序池,这过程中不是直接启动的,而是走了一个aspnet_isapi.dll(动态链接库不叫程序集了,由c或c++写的,这内部实现了iis内部定义的协议接口),请求到达工作进程之后,工作进程审核一下,如果是静态文件就自己处理,如果是动态文件,把请求发到aspnet_isapi.dll(asp.net扩展模块:负责启动asp.net运行时,包括clr加载都是由它进行做这个工作的)进行处理)。此时再请求.netFramework运行时。当.net Framework启动之后,它还有一个职责把请求报文传递到.net Framework运行时里面去(或者说传递到托管的环境里面去)
此时是由ISAPIRuntime.PR(这个PR方法是用来处理当前请求的)接口来负责aspnet_isapi.dll非托管模块和托管模块进行接洽
ISAPIRuntime.PR() 里面有一个参数 ecb→句柄,通过这个句柄可以拿到当前请求的报文,也可以通过ecb句柄通过响应报文返回给非托管模块。也就是说ecb句柄才是真正连接托管和非托管的路口。
在这个方法内部把ecb封装成了HttpWorkRequest对象。这时候HttpWorkRequest就包含了请求和响应两个部分。
虽然已经帮我们封装成了两个简单的部分,但这样还是太原始。因此微软内部又对此进行了再封装,于是把HttpWorkRequest对象继续传到HttpRuntime.PR()方法,这个PR方法把HttpWorkRequest对象传递到HttpRuntiome.PR(work)方法里面,而在这个方法里面就把workRequest对象封装成了现在用的HttpContext这就是上下文的由来。所以说HttpContext就是通过ecb产生出来的。
这个时候HttpRuntime内部就通过HttpApplication.Factory工厂创建一个HttpApplication对象(这个对象就是负责整个asp.net模型的运作的最基本的一个类,也是最重要的一个类)
下面由HttpApplication负责处理asp.net模型的运作:(图2)
Asp.net模型是一个管道模型,管道模型当中有23个步骤,19公开的事件 。这事件依次的被执行。事件也算是步骤。httpContext会随着管道依次的往下走,整个管道流动的是一个对象, 其中第7个事件和第8个事件之间根据请求地址创建一般处理程序或者是页面对象,在第11和第12事件之间执行对象的PR方法,执行PR方法之后,继续往下流动。最后全部到执行完了之后,返回响应内容,同样也是到达内核模块,再向客户端发送响应报文。
附注:
Page_Load是在页面的PR方法里面执行的,页面的PR方法就是页面的生命周期
PR方法就是Process Request方法
托管:
c#\vb.net等等语言通过编译器生成的程序集(exe、dll),CLR加载程序集 然后通过JIT即使编译器转成机器码再交给操作系统内核 这一类就成为托管程序。
IL是一个统一的标准,所以也正是因为IL成就了.net平台
.net平台特点 :跨平台、跨语言 java也是跨平台跨语言,两者都是生成了IL中间语言
非托管:
c|c++|VB…(PS:这里的c|c++|vb..是原生程序)通过编译器直接生成的exe 直接交给操作系统内核,操作系统内核可以直接解析并且执行叫做非托管程序
ASP.NET页面生命周期总结(1)的更多相关文章
- ASP.net 页面生命周期
ASP.NET 页面生命周期 Page_Preinit(); 在页初始化开始时发生 Page_Init(); 在所有控件初始化且应用外观设置后引发 Page_InitComplete(); 在页初始化 ...
- asp.net页面生命周期
Asp.Net页面生命周期 本文转载自:http://www.cnblogs.com/xhwy/archive/2012/05/20/2510178.html 一.什么是Asp.Net页面生命周期 当 ...
- 【深入ASP.NET原理系列】--ASP.NET页面生命周期
前言 ASP.NET页面运行时候,页面将经历一个生命周期,在生命周期中将执行一系列的处理步骤.包括初始化.实例化控件.还原和维护状态.运行时间处理程序代码以及进行呈现.熟悉页面生命周期非常重要,这样我 ...
- ASP.NET编程模型之ASP.NET页面生命周期图解
ASP.NET编程模型中ASP.NET页面生命周期是指什么呢?它包括什么呢?ASP.NET编程模型之ASP.NET页面生命周期具体的过程有哪些呢?下面就开始我们的讲解吧: ASP.NET 页运行时,此 ...
- ASP.NET页面生命周期与控件生命周期
ASP.NET页面生命周期 (1)PreInit 预初始化(2)Init 初始化(3)InitComplete 初始化完成(4)PreLoad 预加载(5)Load 加载(6)LoadComplete ...
- Asp.Net页面生命周期--转发(学海无涯)
一.什么是Asp.Net页面生命周期 当我们在浏览器地址栏中输入网址,回车查看页面时,这时会向服务器端(IIS)发送一个request请求,服务器就会判断发送过来的请求页面, 完全识别 HTTP 页 ...
- ASP.NET页面生命周期和asp.net应用程序生命周期
作为一个asp.net程序员,不了解ASP.NET页面生命周期和asp.net应用程序生命周期是绝对不行的,那永远只能是菜鸟级别.我很早就学过,可是没次还是得去翻,一些事件还是记不住,还是记在自己的b ...
- (转)Asp.net页面生命周期详解任我行(1)-小试牛刀,编写页面代码
原文地址:http://www.cnblogs.com/xuyubing/archive/2013/10/01/3348344.html 前言 很久很久以前,还是我在学校的时候,我就看了传智里面视频, ...
- Asp.Net页面生命周期【转载,地址:http://www.cnblogs.com/xhwy/archive/2012/05/20/2510178.html】
一.什么是Asp.Net页面生命周期 当我们在浏览器地址栏中输入网址,回车查看页面时,这时会向服务器端(IIS)发送一个request请求,服务器就会判断发送过来的请求页面, 完全识别 HTTP 页 ...
- Asp.net页面生命周期详解任我行(3)-服务器处理请求详细过程
前言 百度了一下才知道,传智的邹老师桃李满天下呀,我也是邹老师的粉丝,最开始学习页面生命周期的时候也是看了邹老师的视频. 本人是参考了以下前辈的作品,本文中也参合了本人心得,绝非有意盗版,旨在传播,最 ...
随机推荐
- [综述]领域特定语言(Domain-Specific Language)的概念和意义
领域特定语言(Domain Specific Language, DSL)是一种为解决特定领域问题而对某个特定领域操作和概念进行抽象的语言.领域特定语言只是针对某个特定的领域,这点与通用编程语言(Ge ...
- AIX 添加开机启动项
在学习本主题之前,还是先学习一些AIX关于启动的基础知识,如果你只关心如何开机自动重启程序,请跳过第一章.第二章. ----------------------------第一章 AIX开机启动过程介 ...
- NULL指针 Void* 和野指针
在C和C++的语言中常常有这几个概念: NULL指针.空指针.Void *指针.野指针(Wild Pointer)甚至垂悬指针(Dangling Pointer). 1.NULL指针,一般用于指向一个 ...
- UVALive 5111 Soccer Teams (动态规划)
题意:给指定数量的数字“1”,“2”,“3”……,“9”.用所有这些数字加上任意个0组成一个数,要求数能被11整除,且数的位数尽量小. 能被11整除的数有一个特点,奇数位数字之和与偶数位之和的差为11 ...
- nyoj 1022 最少步数【优先队列+广搜】
最少步数 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 这有一个迷宫,有0~8行和0~8列: 1,1,1,1,1,1,1,1,1 1,0,0,1,0,0,1,0,1 ...
- 织梦/dedecms 当文章转载时不需要设置图片水印的设置,取消’图片是否加水印‘的复选框,并且修改如下文件即可生效
当想添加水印是选中“图片是否加水印”复选框即可. 找到include/helpers/image.helper.php这个文件,在里面找到中的if( isset($GLOBALS['needwater ...
- iOS设计模式之生成器
iOS设计模式之生成器 1.生成器模式的定义 (1): 将一个复杂的对象的构件与它的表示分离,使得相同的构建过程能够创建不同的表示 (2): 生成器模式除了客户之外还包括一个Director(指导者) ...
- 使用viewpager实现广告条轮询的效果
先上效果图: viewpager是google在v4-support包中提供的,使用时与listview类似,度需要提供一个adapter, 只不过viewpager提供的是PagerAdapter ...
- InnoTop
是一个系统活动报告,类似于Linux性能工具,它与Linux的top命令相仿,并参考mytop工具而设计. 它专门用后监控InnoDB性能和MySQL服务器.主要用于监控事务,死锁,外键,查询活动,复 ...
- google perftools分析程序性能
Google perftools 1.功能简介 它的主要功能就是通过采样的方式,给程序中cpu的使用情况进行“画像”,通过它所输出的结果,我们可以对程序中各个函数(得到函数之间的调用关系)耗时情况一目 ...