web应用程序创建于HTTP协议的顶层,这个协议是一个无状态的协议,页面和它的子控件是基于每一个请求而创建的,在请求最后阶段被删除,在一个web请求的持续时间外保持信息是常常是必需的,这个机制在传统的ASP状态管理编程中是可用的,比如服务器端的session(会话)对象和客户端的cookies在asp.net中仍然可用,然而,session是不可扩展的,cookie是不能被所有的应用程序所依赖。
这样子asp.net 就提供了一种新的机制,叫做视图状态
这种机制可以使页面和它的子控件在从服务器到客户端再从客户端返回的往返过程中保持状态信息。
视图状态是一种简单而方便的技术,可以在一个固有的无状态环境之上创造一个有状态的 并持续执行的页面效果
有时,控件可能需要跨用户对话甚至跨应用程序复用数据,下面是使用asp.net提供的内部session和application对象的一些总体的准则:
1)用视图状态存储控件需要在回传之后恢复状态数据
2)使用system.web.sessionstate.httpsessionstate对象,这个对象可在控件上作为page.session使用,可以存储需要跨用户浏览器会话的数据,可以在page.session中存储敏感的信息,因为这个对象只存在于服务器上,session对象为每一个用户会话而创建,当使用session对象时,没有必要为线程的安全担心,然而,应注意允许页面开发都对特定的web应用程序关闭session状态特性
3)使用system.web.httpapplicationstate对象,这个对象可在控件上作为page.application使用,可以存储需要整个应用程序的数据,这个对象只存在于服务器上,page.application对象不是线程安全的,因为多个用户可以同时访问页面,当使用page.application对象时,应该为线程的安全负责
4)cookie允许你设置客户端的cookie,它的作用是可以在客户端的机器中写文件来存储信息,使得可以在不同的页面之间传递信息,还可以在页面休止期里保存页面的信息