Asp.Net页面生命周期

咦是Asp.Net页面生命周期

人类对于广大东西的回味还地处很肤浅的路,这便概括我们身体最上顶在的之占据身体比重虽然只生2%,却吃全身能量20%,整个中枢神经系统被尽高级部分的马上粒脑袋。

当我们以浏览器地址栏中输入网址,回车查看页面时,这时会朝服务器端(IIS)发送一个request请求,服务器即会咬定发送过来的请页面, 
完全识别 HTTP 页面处理程序类后,ASP.NET 运行时用调用处理程序的
ProcessRequest
方法来拍卖要,来创造页面对象。通常状态下,无需改此方的兑现,因为她是由于
Page
类提供的。接下来为创造页面对象的ProcessRequest方法而页面经历了逐一阶段:初始化、加载视图状态信息与回发数据、加载页面的用户代码和实施回发服务器端事件。之后,页面上显示模式:收集更新的视图状态,生成
HTML
代码并进而将代码发送到输出控制台。最后,卸载页面,并觉得要处理完毕。其中页面对象ProcessRequest方法
完成的立同一多样事件之处理过程就是Asp.Net页面生命周期。

对此大脑究竟出了多少,人类为何有人聪明有人蠢,大脑工作的原理,为什么有人异于常人,科学家实际也没完全的答案,至今依然以寻。

二.了解Asp.Net页面生命周期的裨益

美国盐湖城,最出名的即使是那一望无际,平滑如境的大盐湖,盐湖城还有一样各类自闭症天才,他的讳称为金皮克,就生在这里。

刺探个掌握ASP.NET页面生命周期是大必要之,这有助于我们越灵活的支配页面,以我们得之法子编程开发。ASP.NET页运行时,此页会经历一个而且一个的事件链,每个事件链中执行不同的行,这具的行同构成我们所需要的页面。了解了生命周期也还促进我们本着程序调试中起问题的地方的稳定。

俺们都懂,人的大脑分左右心血,左脑负责思考,右脑负责记忆,一直以来,科学家们以为超强的记忆是偏离不开右脑的作用。左右脑之间通过大约2亿束神经纤维组成的胼胝体进行连接,哪怕我们聊动一个有点心思,就象通判在即时从一个配,脑电波也如明朗夜晚那一望无际宇宙中的星一样继续密集联络着。

三.详解Asp.Net页面生命周期

金皮克一出生便于突出,他的大脑胼胝体根本不怕没成形,根据科学家怀疑他也许是反正头脑以相同种植独特之方开展联,具有同等栽最稀少的自发,记忆力恐怖,他精通从文学到历史的15派别课程,他会记住大约9000大多本书的各个一样页的情节,一个钟头得扣押罢一本长篇小说,里面有着的人选记得分毫不差,所有历史上出的事件的日子、内容、人物,地图及保有城市乡镇街道名称还能够告您通过这长长的大街的凡几乎里程电车,乐曲听一所有就是能分辨其中的音色差异,最为怪异之是,他左右眼可以各圈同样本书,然后告诉您少本书中之人物,情节,几乎一字不差。

(一)先瞧在开班一个页面生命周期之前,请求的页面经历了那些经过。如图所示:

形象点说,金庸小说中有三只人物可以勉强提出来讲一出口,一个是周伯通,左右互搏,常人左方右圆都比麻烦,你用少独眼睛各圈一样本书试试,一分钟以内你就蒙。

葡京赌场网址 1

另外一个凡玉女王语嫣,精通天下各门派武功招式,最奇的不但懂得失传招式,而且知道破解之法。

通信处理过程:

重新一个凡是黄药师的妻子,黄蓉的老妈,看了点儿所有如同天书的《九阴真经》就可知默写下来。

当服务器运行如常的状况下,客户端(浏览器)
为服务器端发送请求时,服务器端负责监听的套接字(socket),监听到发连续要后,会吧该客户端建立一个用以通信的套接字与客户端进行通信。当用户在浏览器为服务器发送请求时,浏览器会按照双方都约定好的纱传输层http协议,将呼吁改换成适合Http协议的请求报文。然后经设备以TCP协议发送至服务器。在服务器端接收至要报文后。会按部就班Http协议对报文进行分析。若要的内容吧静态的多少,服务器端直接用给请的多寡,按照Http协议生成响应报文后回去给浏览器。浏览器然后解析收到的报文。将页面显示到浏览器窗口。(注:最开始就是亮一个html
框架。经过多次央。将CSS样式,图片………逐一的加载进来形成一个完全的页面。这个进程,有频繁底交互通信。当通信结束后会见把用来通信的套接字销毁,因为http协议是一模一样栽无状态的通信。这样减轻了服务器的压力)

冲顶大会时,不管王思聪、周鸿祎撒币多少!不管而用什么简单搜索!金皮克的大脑就比如相同统微型银河计算机,你还当奋力指头的时光,他的大脑已经好了浩若繁星的脑电波的联系,就是平等刹那,六十分之一底弹奏指间。

当浏览器为客户端发送的恳求为动态的。那么服务器(IIS)发现处理不了这种晚缀名的文件时,会通过映射表到。响应落实了接口的但扩大程序asp.net_isapi.dll, 然后asp.net_isapi.dll,又将请转交给网站程序处理.网站程序调用

《雨人》这部影片之原型就是是金皮克。“雨人”这个名叫,来源于主人公雷曼,因为吐字不到头,经常称呼自己RainMan,自《雨人》电影上映后,“雨人”一乐章就专指类似金皮克这样的自闭症天才。

httpRuntime类的processRequest方法来拍卖:

《雨人》获第61暨奥斯卡金像奖最佳影片、最佳导演、最佳男主角、最佳原创剧本四宗大奖。当年达斯汀·霍夫曼也影片《雨人》这个角色与金皮克在了一致到家时,后来他说:我或许可以叫一个大腕,而而可是总体宇宙。

1.此类会分析接收至的要报文.将请报文封装到号也httpWorkerRequest的切近的性质被(便于其它地方为用).

假若对金皮克感兴趣,可以看一下BBC纪录片《超级人类天才》。

2.创造HttpContext对象.这个目标是当前所请报文的光景文环境.它涵盖了富有的伸手数据.其中起点儿只顶要类的靶子:http.Request和http.Response. 
在httpRequest对象吃还要含有了零星个属于性.Form(通过表单请求的数量参数).Querystring(通过URL传递的数参数);
通过索引器,可以找到参数的值. 在httpResponse
对象被来一个TextWriter对象.在它其中保存之是被呼吁的页面在履过程中一旦奔浏览器输出的数据.可以通过write
方法对那个进行输出为浏览器。

《雨人》中弟弟查理(汤姆·克鲁斯)利用哥哥雷蒙(达斯汀•霍夫曼),两单人口活动在微风轻拂的丽小路上失去赌场赌博,一个英俊潇洒,却心怀鬼胎,一个痴呆呆,却只要小儿的未孩,就好象我们移动在成长的人生道路上,一个受世间诱惑所蒙垢的我,过于重视外在修饰,而迷路了真常灵性,电影被最后两单人口之情愫可升华,也如我们最后闹同样上悟道,发现独真诚不次才能够开有纯良本真的自我。

3.由此HttpApplicationFactory类的底一个静态方法。来吗每个请求创建一个单独的httpApplication对象。在创建之前HttpApplicationFactor会到HttpApplication池中查,有没发出暇之。若发生直接用。没有底时光才创建新的HttpApplication。

4.当httpApplication里运行己转换成为接口IhttpHandler
的经反射被请页面对象的ProcessRequest 方法.

方式执行过程如下:先实施httpApplication中的processRequest方法。在是方吃蕴藏了如果以先后顺序执行的19单委托事件 当在实行及第8只事件之上就是开创办为呼吁页面对象,在执行及第11暨第12个事件期间经常。就执行为创造的求页面对象的ProcessRequest方法。

葡京赌场网址 2

(二)开始页面生命周期

1.页面生命周期的重中之重阶段包括: 阶段 事件/方法
页面初始化          Page_Init
加载View State      LoadViewState
回发数据处理      LoadPostData
页面加载          Page_Load
反过来发通告          RaisePostDataChangedEvent
回发事件处理     RaisePostBackEvent
页面预渲染       Page_PreRender
保存             viewstate SaveViewState
Page渲染         Page_Render
Page 卸载       Page_UnLoad

2.页面生命周期的第一事件:

PreInit:

1.检查IsPostBack 属性

2.动态设置Master Page

3.动态设置Theme

4.安控件的默认值(UniqueId等)

5.重创设动态控件(初始化控件),初始化控件的值

Init:
这个事件来在颇具的控件被初始化,所有的皮设置为用后。它因此来读取或者初始化控件属性。它亦可用来注册一些aspx页面被绝非指出的控件的风波。

InitComplete: Use this event for processing tasks that require all
initialization to be complete.

PreLoad:
加载页面的ViewState和兼具的控件,然后处理所有的含在Request实例中之postback数据。

Load:
这个波可能是豪门最熟悉的了。需要专注的是,Page对象会递归的调用子控件的onload事件直到页面及装有的旁控件被加载成功。这个事件要用来装控件属性之值,建立数据库连接(通常不这样做)。

Validation:
如果你的控件要求验证,验证会在是阶段来,这个时段你可以检查控件的IsValid属性。跟这路关联的轩然大波是Validate,它发生一个好接受验证字符串群的重载方法(overload
method),这个重载方法执行一定控件群的征。

Control events:
这个就无多说了,主要是处理控件的事件,例如click。这为就是让咱们理解了历次我们click一个Button的时刻,实际上是要事先去实践load事件然后才实施click事件的,一般我们就此!IsPostBack来判断一下据此避免执行不必要的加载逻辑。

LoadComplete:
页面所有的控件都让加载后推行,暂时没有想到用来波及啊。。。

PreRender:
在HTML被变型之前就是最终一个事件。每一个页面被的控件都发生PreRender的经过。在此处针对将输出的HTML结果开展末段一不成修改。

SaveStateComplete:
在此日子有之前,已经保存了具有控件和页面的,任何针对page或者控件的转移都非会见起左右。暂时没有悟出用来波及啥。

Render: 它不是一个轩然大波而是一个措施。工作就是管HTML写回客户端浏览器。

UnLoad:
页面中的诸一个控件都见面生这件事。在控件被,使用这个波来做清理工作,例如关闭数据库连接等。对同页面本身为是做清理工作,例如关闭打开的文书与数据库连接,或者终止日志或者其他指定的劳作。

需证明的是,每次Request都见面创造一个崭新的Page类的实例,所以在页面中的自己定义的字段是匪可知于少数不好request中传递值的,需要以viewstate来囤积。

页面处理的共同体过程图解

葡京赌场网址 3

四.什么地方因此到了Asp.Net 页面生命周期

   对于这个题材,在面试中本身遇见了,我觉得问之问题不怎么不正规。我立马对的是。Viewstate
对值葡京赌场网址的记录上之所以到了生命周期,总是觉对莫绝对。

生命周期理解了,并无意味我们见面用她。只有掌握了,我们才见面当后来的干活屡遭逐年真正的领悟她,用它。

总结:计划了长期,一直未曾写,今天下定狠心一定要描写了。终于形成了。我看有雷同号博友的因而三摆放图详解Asp.Net
全生命周期还不易。用图结构清晰,更便于理解。故贴到下面便于博友们以及今后自己之翻。原文地址:http://www.cnblogs.com/zhaoyang/archive/2011/11/16/2251200.html

说明:


第一摆图纸于全局说明从客户端有一个Request请求,服务器windows内核中的HTTP.SYS组件接收该要开始交IIS处理完该请求并应到客户端了。

2  第二张图纸为祈求1挨Http处理管线的详尽步骤

3  第三摆设图纸也祈求2Http处理管线中调用处理程序(HttpHandler, 
此处为Page对象)的详尽生命周期过程。

图1:

葡京赌场网址 4

图2.

葡京赌场网址 5

图3.

葡京赌场网址 6