当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > ASP.NET组件设计之生命周期详解

ASP.NET
Asp.net 时间操作基类(支持短日期,长日期,时间差)
asp.net 获取机器硬件信息(cpu频率、磁盘可用空间、内存容量等)
asp.net 数据库备份还原(sqlserver+access)
Asp.Net 数据操作类(附通用数据基类)
Asp.net 弹出对话框基类(输出alet警告框)
Asp.net 文件上传类(取得文件后缀名,保存文件,加入文字水印)
Asp.net Socket客户端(远程发送和接收数据)
Asp.net 字符串操作基类(安全,替换,分解等)
Asp.Net数据输出到EXCEL表格中
asp.net Gridview里添加汇总行
asp.net UpdatePanel的简单用法
asp.net ajaxControlToolkit FilteredTextBoxExtender的简单用法
this connector is disabled错误的解决方法
sql事务应用积累
asp.net Page.Controls对象(找到所有服务器控件)
在asp.NET中字符串替换的五种方法
ASP.NET缓存方法分析和实践示例代码
asp.net 在DNN模块开发中遇到的resx怪问题
ASP.NET State service状态服务的问题解决方法
asp.net 结合mysql存储过程进行分页代码

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-23   浏览: 95 ::
收藏到网摘: n/a

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控件生命周期的了解有自己的认识。