Session
Session状态被保存在服务器端的内存中,作为ASP.NET进程的一部分。然而Session状态保存地址不同于ASP.NET进程,或者保存在一个单独的状态服务器中,或者保存在一个SQLServer数据库中,这样即使系统崩溃或ASP.NET进程重启也不会遗失数据。Sessions是以一个120bit的SessionID作为标识的,SessionID是从客户端送至服务器端的,返回客户端时根据程序的配置使用HTTPcookie或者一个修改的URL。SessionID是通过.NETFramework自动处理的,没必要使用编程操作。SessionID包含合法的URLASCII字符串,它有两个重要特点:
-
每个SessionID是全球唯一的。
-
SessionID是随机给出的,根据现有的SessionID是不可能猜出下一个SessionID的。
Application
一个webApplication由几个部分组成:webpages, files, components, code, images 。
global.asax包含有webapplication的全局代码,它含有几个事件处理器:Application_Start,Application_End, Application_Error, Session_Start,Session_End。当程序收到用户的的第一个请求时,Application_Start事件被激活;如果global.asax文件被编辑并保存,所有挂起的请求都被完成,之后Application_End事件才被激活,程序(application)会被重启。
网页周期:WebPage Lifecycle
当页面第一次加载,需要实现以下步骤:
-
运行构造函数。
-
指定PostBack模式,是第一次加载,自我投递,还是跨页面投递?
-
预初始化(pre-initialization)。在这个步骤中需要在页面初始化之前指定目标设备。
-
个性化和主题被加载和初始化。
-
初始化(Initialization):这个过程是控件树(controltree)建立的时期。与之对应的是Init事件和OnInit方法。
-
预加载(Pre-Load):是出现在投递数据被加载到控件之前,与之对应的是PreLoad事件和OnPreLoad方法。
-
加载(Load):运行用户代码,表单控件显示客户端数据,与之对应的是Load事件和OnLoad方法。
-
加载完成:加载过程完成,与之对应的是LoadComplete事件和OnLoadComplete方法。
-
预显示(Pre-render):这个过程是在输出被显示之前,与之对应的是PreRender事件和OnPreRender方法。
-
保存状态(Savestate):个性化,控件,视图和页面状态被保存。
-
显示(Render):页面和控件以HTML的形式显示。
-
卸载(Unload):这是生命周期的最后一步了,它做了最后的清理工作。