ASP.NET组件设计之生命周期详解

开发 后端
ASP.NET组件设计之生命周期是什么呢?对于ASP.NET控件生命周期的掌握十分重要,那么本文就向你介绍ASP.NET控件生命周期的13个主要的点。

ASP.NET组件设计之生命周期是什么呢?让我们来看看:

当一个ASP.NET页面被请求后,一个page实例被生成,开始自己的逻辑,最终返回HTML流给用户端。构成逻辑处理的是page中存在的服务器端控件以及控件间的交互,并且在页面结束前服务器控件们被销毁(视.net的回收策略而定)。那么这些控件在短短的页面处理过程中经历了创建、处理、销毁等到底是如何组织的?这些控件是如何同其他控件交互,如何在多个页面间保持状态的?(这应当是整个控件开发的基本也是重要的知识)

首先,我们看看特殊的控件,也就是Page类,所有aspx页面的父类(或者祖先)。因为这是我们程序员主要的舞台。Page类继承自TemplateControl, 且实现了IhttpHandler。IhttpHandler接口是保证页面被ASP.NET框架所调度,并且可以获得HTTP协议的数据输入流以及获得向HTTP输出流输出数据的能力;而TemplateControl类是继承自Control类。Page实现了InamingContainer接口,这保证了他可以充当页面中的控件们的容器(控件们的战斗舞台)

好了,现在看看在ASP.NET组件设计中的ASP.NET控件生命周期(看看MS是如何定义这个框架体系的):

1、 Instance 实例化

通过控件的构造器所实例化。还可以通过被父控件实例化而生成。

2、 Initialize 初始化

控件会通过默认方式调用OnInit方法,从而引发On_init事件。Page根据aspx页面的语法以及标签设定值来初始化控件,对声明语法中的控件及其属性赋值。作为一个特殊控件,一般可以在Page的OnInit事件中允许编程者提供控间的初始化操作(对某些属性赋值)。对于控件包含的子控件,控件可以访问他们,但是子控件是不可以访问父控件的(因为控件此时还没有被加载(Load))。

3、 Begin Tracking View State 开始跟踪视图状态

发生在初始化阶段末尾,Page会调用控件的TrackViewState方法(这是一个继承自Control的保护方法)

4、 Load View State 加载视图

此时,页面框架自动恢复了ViewState字典(ViewState数据来自表单form中的隐含字段),控件会根据ViewState值来设定自己的属性或者内部字段变量等

5、 Load PostBack Data加载回传数据

如果控件实现了IpostBackDataHandle接口,那么页面回调用控件实现的接口,让其参与对回传数据的处理

6、 Load 加载

此时,控件树(page的控件以及控件的子控件构成的树)所有控件都已经被初始化,并恢复到上一个周期的状态(这是通过ViewState获得的),可以访问其他的任何控件。

7、 Raise Change Events引发修改(控件的)事件

处理回传的数据,此时可能会引起控件的某些事件作为对某些属性被修改的通知。

8、 Raise Postback Event 引发回传数据

当发生修改事件时候,引发将客户端发生的一些事件映射到服务器控件的事件,从而调用控件的事件的处理例程。这大多是控件开发者的客户—另外一些程序员重用控件时的舞台。

9、 PreRender 预生成

通过调用控件的OnPreRender方法,执行在生成控件前的所需任何工作。递归调用子控件的此方法。

10、Save View State 保存视图状态

控件继承Control的方法来保存当前控件状态到ViewState中去

11、Render 生成

控件输出HTML数据到HTML流中去。

12、Unload 卸载

页面通过实现Page_Onload方法执行清除工作,也默认引发控件的Unload事件

13、Dispose释放

此时,控件执行清除占用资源的方法。

以上讨论适宜于在aspx页面中声明创建的控件,如果是在页面/控件的事件处理程序中创造得控件,则在控件加入到控件树开始执行各个阶段,直到达到页面的当前阶段,之后,该动态创建的控件将随同页面其他控件一样工作。

ASP.NET组件设计中的ASP.NET控件生命周期就向你介绍到这里,希望对你在ASP.NET组件设计的学习中ASP.NET控件生命周期的了解有自己的认识。

【编辑推荐】

  1. ASP.NET组件设计之ASP.NET Timer浅析
  2. ASP.NET组件设计学习之创建工程库
  3. ASP.NET组件设计学习之ASP.NET服务器控件
  4. ASP.NET自定义控件入门浅析
  5. ASP.NET服务器控件视图浅析
责任编辑:仲衡 来源: cnblogs
相关推荐

2009-07-31 10:47:18

ASP.NET页面生命

2009-07-20 10:33:02

ASP.NET MVC

2009-07-23 10:23:44

2013-04-07 10:42:56

Asp.Net页面周期

2009-07-23 18:14:17

MVC生命周期

2009-08-03 14:18:40

ASP.NET编程模型ASP.NET页面生命

2009-02-12 13:16:55

请求生命周期MVCASP.NET

2009-08-03 14:37:38

ASP.NET编程模型页面生命周期

2009-08-04 16:05:15

ASP.NET页面生命

2009-08-04 16:50:15

ASP.NET页面生命

2009-07-28 09:46:53

ASP.NET服务器控

2010-04-02 09:02:02

ASP.NET MVC

2009-08-04 17:49:31

Web Page生命周ASP.NET Pos

2009-08-10 13:32:15

ASP.NET TimASP.NET组件设计

2009-07-23 18:55:17

ASP.NET页生命周

2012-08-16 09:38:38

ASP.NET

2011-06-21 10:26:37

2009-07-31 17:53:39

ASP.NET线程安全

2021-04-26 09:22:07

ASP.NET Cor服务周期

2009-08-10 14:08:15

ASP.NET服务器控ASP.NET组件设计
点赞
收藏

51CTO技术栈公众号