很早就看了cat chen的深入理解 ASP.NET 动态控件 (Part 3 - 页面生命周期) ,当时是理解了,但是很不好理解。尤其是追赶加载那部分。最近重新看到那篇文章,禁不住想用打比方的方式来描述一下,不知道我的比喻是否恰当?


一下引用自CatChen的原文:

一般加载分为以下几个主要阶段(粗体标出的阶段的特殊性后面解释):

  1. Init - 初始化,是否为动态控件就以此为分界,Init之前加入到控件树的控件其处理过程就和ASPX中静态声明的一致,因为静态控件也就是在Init前加入的。
  2. LoadViewState - 加载ViewState。
  3. ProcessPostData - 处理PostData,倒不如说是加载PostData,因为此阶段控件多数仅加载PostData,顺便判断PostData是否有改变,别的处理不在此阶段作。
  4. Load - 加载,让ASP.NET程序员尽情发挥创意的地方,包括如何糟蹋ASP.NET这个框架。
  5. ProcessPostData Second Try - 第二次尝试处理PostData,和第一次所做的一样,不过第一次执行时已在控件树上的控件不会受到第二次打扰。
  6. Raise ChangedEvents - 冒泡Changed类事件,这里指的是由于PostData变更而引起的Changed类事件。
  7. Raise PostBackEvent - 冒泡PostBack类事件,除了Changed类以外的所有事件都在这里引发。
  8. PreRender - 预呈现,这名字不怎么好记,改为“末日审判”或许会好一些,因为作为上帝的程序员在这里判决每一个变量的最终值。
  9. SaveViewState - 保存ViewState,判决执行的阶段,变量最终值在此保存,判入地狱的变量无权进入ViewState这个天堂并从此消失。
  10. Render - 呈现,可能是生命周期中最无法解耦的一个阶段。
  11. Unload - 卸载,有加载自然有卸载,但其实没有多少人知道它的存在。

追赶加载不同于一般加载,打个比方的话:
11个步骤中,粗体字部分比喻成“军机处”(专门发布军事任务),非粗体部分(处理PostData事件等)比如成“军事任务”。

父亲(Parent Control)带领着儿子(Control)加入了光荣的人民解放军,随时准备为伟大的WEB革命献身。

父子俩人沿着同一条革命行军路线(生命周期路线),一路上有多个军机处。每个军机处仅发布该处到下一处之间军事任务列表(任务太多了,所以分多处发布,分布式嘛)。父子均在军机处获取军事任务。
父亲比较有经验,被指挥官安排从革命爆发之始就加入了革命,一直在认认真真地执行各处发布的任务。而儿子因为经验不足,由指挥官(asp.net程序员)安排不定时加入革命执行任务。

如果安排儿子在军机处加入,可以取到该处与下一处之间所有军事任务列表,并顺利完成任务。
否则,
如果儿子是在相邻两个军机处之间加入的话,因为没有收到 到达下一军机处之前的 军事任务列表,自然就会在到达下一军机处之前,什么也不会干(因为不知道干什么)。
儿子接到指挥官(asp.net程序员)的军事任务:“处理PostData事件”,由父亲引导执行(因为老爸年纪大有经验些)。
如果儿子在名为“load“的军机处或以前被安排加入革命,可以取到“处理PostData事件”的军事任务,完成任务没问题。否则儿子因为没完成任务WEB革命失败,伤心的可是我们这些指挥官了。

本文转自Kai的世界,道法自然博客园博客,原文链接:http://www.cnblogs.com/kaima/archive/2008/03/29/1129175.html,如需转载请自行联系原作者。

Asp.net页面的生命周期之通俗理解相关推荐

  1. 【转】Asp.net页面的生命周期

    介绍 Asp.net是微软.Net战略的一个组成部分.它相对以前的Asp有了很大的发展,引入了许多的新机制.本文就Asp.net页面的生命周期向大家做一个初步的介绍,以期能起到指导大家更好.更灵活地操 ...

  2. ASP.NET页面的生命周期

    当一个获取网页的请求(可能是通过用户提交完成的,也可能是通过超链接完成的)被发送到Web服务器后,这个页面就会接着运行从创建到处理完成的一系列事件. ASP.NET页面初始的过程: 1.Page_In ...

  3. asp.net 页面全生命周期

    .Net 托管代码和非托管代码的区别 后台代码隐藏/显示前台控件 .Net 页面生命周期 2012-03-21 13:31:08|  分类: .NET |  标签:.net  页面生命周期  c#  ...

  4. 基础——ASP.NET页面的生命周期

    页请求:页请求发生在页生命周期开始之前.当用户请求一个页面,ASP.NET将确定是否需要分析或者编译该页面,或者是否可以在不运行页的情况下直接请求缓存响应客户端. 开始:发生请求后,页面就进入了初始化 ...

  5. Asp.net2.0页面的生命周期(续)

    以上就是Asp.net页面生命周期中的几个主要事件.每次我们请求一个Asp.net页面时,我们都经历着同样的过程:从初始化对象到销毁对象.通过了解Asp.net页面的内部运行机制,我相信大家在编写.调 ...

  6. 【Step by Step】编写代码验证一个ASP.NET应用程序和页面的生命周期

    我们知道ASP.NET Page的生命周期实际上是ASP.NET Application的生命周期的一部分.这个周期经历了HTTP Module => HTTP Handler => AS ...

  7. Asp.net2.0页面的生命周期

    当一个获取网页的请求(可能是通过用户提 交完成的,也可能是通过超链接完成的)被发送到Web服务器后,这个页面就会接着运行从创建到处理完成的一系列事件.在我们试图建立Asp.net页面的 时候,这个执行 ...

  8. ASP.NET服务器控件的生命周期分析

    本文实例分析了ASP.NET服务器控件的生命周期.分享给大家供大家参考.具体如下: (1)初始化----在此阶段中,主要完成两项工作:一.初始化在传入Web请求生命周期内所需的设置:二.跟踪视图状态. ...

  9. .Net页面的生命周期(ZZ)

    1.        初始化:主要是执行Page的Init事件和OnIint方法. 2.        加载视图状态:主要是执行LoadViewState方法,就是从ViewState中获取上一次的状态 ...

最新文章

  1. python入门自学-Python自学规划:一个月从入门到精通,每天做什么?
  2. 想学python有什么用-python学来有什么用
  3. 数据库相关(JDBC,存储过程,以及大文本数据处理,mvc设计模式)
  4. java语言与c 的区别_Java语言的特点以及与C、C++的区别
  5. 编写python程序_如何进行Python程序的编写
  6. Linux下SVN安装配置全程实录(转)
  7. 2017年网易校招题 输入一个数将其变为斐波那契数(最小步数)
  8. Yam旗下Degenerative Finance已上线uSTONKS和uGAS奖励计划
  9. D进制A+B(20)
  10. Eclipse中启动tomcat访问404解决及原因
  11. 理解函数:对象(this,arguments),方法(apply(),call(),bind())。
  12. 51c语言单片机io口控制实验报告,单片机实验报告二 单片机IO口实验
  13. Day 9 淘宝静态页面练习 reset.css样式重置 头部信息结构及样式 自定义图标的样式
  14. element-ui —— el-tooltip 超出部分显示省略号,鼠标悬浮显示详情
  15. W5500开发笔记 | 01- W5500 Socket API的说明
  16. Shiro(三)——三种不同的登录方式、RememberMe登录、Shiro 授权、其他配置(配置注销后的跳转页面、处理 JsessionID)
  17. 盘点人工智能十大经典应用领域、图解技术原理
  18. 安卓更新UI的几种方法
  19. Knockout.js的简单使用
  20. 在线淘礼金免单采集网网站源码

热门文章

  1. 1月书讯:Hello 2021! (上)
  2. 无线通信模块行业介绍
  3. 2022A特种设备相关管理(电梯)复训题库及模拟考试
  4. 腾讯云服务器镜像部署 Java Web 环境
  5. 【雅思阅读】王希伟阅读P4(matching1)
  6. 云南大学 计算机技术 调剂,云南大学调剂信息(全),希望对大家有所帮助!
  7. U2-Net: Going Deeper with Nested U-Structure for Salient Object Detection|环境搭建|人物素描 测试 简记 |
  8. 东原地产首获“蓝筹地产” 千亿货值业绩增速成亮点
  9. char* 和 char[]的区别
  10. 王文彬:谈PaaS对互联网产业的影响 PaaS vs IaaS 你需要知道的!