[转].NET (C#) Internals: ASP.NET 应用程序与页面生命周期(意译)
2010-04-30 14:21
489 查看
1、引言
这篇文章我们将试图理解,从用户发送一个请求直到请求呈现到浏览器发生的事件的差异。因此,我们首先将介绍解ASP.NET请求的两个概括的步骤,接下来我们将介绍‘HttpHandler’,‘HttpModule’和ASP.NET页面对象发出的事件的差异。随着我们的事件旅程,我们将理解这些事件的逻辑。2、两个处理步骤
ASP.NET请求处理可以总结为如下所示的两个处理步骤。用户发送一个请求到IIS:ASP.NET创建处理请求的环境。换句话说,创建应用程序对象、request、response和context对象去处理请求。
一旦环境已经创建,请求通过使用modules、handlers和page对象的一系列事件处理。为了简化可以称为MHPM(module、handler、page、module event),我们将在后面详细讨论。
HttpModule类[/code]
下面是HttpHandler的代码片段,它跟踪ProcessRequest事件。
HttpHandler代码片段
我们也追踪ASP.NET页面的所有事件。
asp.net页面事件
下面显示上面讨论的所有事件的执行顺序:
5、深入ASP.NET页面事件
在前面部分我们已经知道ASP.NET页面请求的整体事件流,但是我们没有详细讨论,因此本节我们将深入了解。任何ASP.NET页面有2个部分,一个是显示在浏览器上的页面,它有HTML标记、viewstate形式的隐藏值、HTML inputs上的数据。当页面被发送时,在服务器上这些HTML标记被创建到ASP.NET控件且viewstate和表单数据捆绑在一起。一旦你得到这些服务器控件的后台代码,你可以执行和写你自己的逻辑和呈现返回给浏览器。现在这些HTML控件在服务器上作为ASP.NET控件,ASP.NET页面发出一些事件,我们可以注入自己的逻辑。根据任务/你要执行的逻辑,我们需要把这些逻辑放入适当的事件中。
注意:大部分开发者直接使用Page_Load方法执行一切,这不是一个好的方法。因此,不是填充控件、设置viewstate、应用主题等一切都发生在页面加载上。因此,如果我们能在适当的事件中放入逻辑,将真正使你的代码干净。
Seq | Events | 控件初始化 | Viewstate可用 | 表单数据可用 | 什么逻辑可以写在这里? |
1 | Init | No | No | No | 注意:你可以通过使用ASP.NET请求对象访问表单数据等,但是不是通过服务器控件。 动态地创建控件,如果你一定要在运行时创建;任何初始化设置;母版页及其设置。在这部分中我们没有获得viewstate、postedvalues及已经初始化的控件。 |
2 | Load View State | Not guaranteed | Yes | Not guaranteed | 你可以访问View State及任何同步逻辑,你希望viewstate被推倒后台代码变量可以在这里完成。 |
3 | PostBackdata | Not guaranteed | Yes | Yes | 捏可以访问表单数据。任何逻辑,你希望表单数据被推倒后台代码变量可以在这里完成。 |
4 | Load | Yes | Yes | Yes | 在这里你可以放入任何你想操作控件的逻辑,如从数据库填充combox、对grid中的数据排序等。这个事件,我们可以访问所有控件、viewstate、发送的值。 |
5 | Validate | Yes | Yes | Yes | 如果你的页面有验证器或者你想为你的页面执行验证,那就在这里做吧。 |
6 | Event | Yes | Yes | Yes | 如果这是通过点击按钮或下拉列表的改变的一个回发,相关的事件将被触发。与事件相关的任何逻辑都可以在这里执行。 |
7 | Pre-render | Yes | Yes | Yes | 如果你想对UI对象做最终的修改,如改变属性结构或属性值,在这些控件保存到ViewState之前。 |
8 | Save ViewState | Yes | Yes | Yes | 一旦对服务器控件的所有修改完成,可以保存控件数据到View State。 |
9 | Render | Yes | Yes | Yes | 如果你想添加一些自定义HTML到输出,可以在这里完成。 |
10 | Unload | Yes | Yes | Yes | 做任何你想做的清理工作。 |
原文链接:ASP.NET application and page life cycle
另附几篇相关的文章:
DotText源码学习——ASP.NET的工作机制
A low-level Look at the ASP.NET Architecture,对于的译文从底层了解ASP.NET体系结构
作者:吴秦出处:http://www.cnblogs.com/skynet/
相关文章推荐
- .NET (C#) Internals: ASP.NET 应用程序与页面生命周期(意译)
- .NET (C#) Internals: ASP.NET 应用程序与页面生命周期(意译)(转)
- .NET (C#) Internals: ASP.NET 应用程序与页面生命周期(意译)
- .NET (C#) Internals: ASP.NET 应用程序与页面生命周期(意译)
- 【转】.NET (C#) Internals: ASP.NET 应用程序与页面生命周期(意译)
- .NET (C#) Internals: ASP.NET 应用程序与页面生命周期(意译)
- .NET (C#) Internals: ASP.NET 应用程序与页面生命周期(意译)
- NET (C#) Internals: ASP.NET 应用程序与页面生命周期(收藏)
- NET (C#) Internals: ASP.NET 应用程序与页面生命周期(收藏)
- .NET (C#) Internals: ASP.NET 应用程序与页面生命周期
- .NET (C#) Internals: ASP.NET 应用程序与页面生命周期
- .NET (C#) Internals: ASP.NET 应用程序与页面生命周期——吴秦(Tyler)
- ASP.NET 应用程序与页面生命周期(意译)
- .NET (C#)ASP.NET 应用程序与页面生命周期
- 2、web(asp.net):ASP.NET应用程序与页面生命周期
- ASP.NET 应用程序页面生命周期概述。
- 转载-(笔记)ASP.NET页面生命周期和asp.net应用程序生命周期
- ASP.NET应用程序与页面生命周期
- (英文翻译)Asp.net应用程序以及页面的生命周期
- ASP.NET应用程序与页面生命周期