Application、Session、Cookie、ViewState的特性

时间:2023-08-17 20:04:08
http://blog.csdn.net/zyw_anquan/article/details/7664132
Application的特性:
存储的物理位置:服务器端内存。
存储的类型限制:任意类型,Application对象可以存放其它对象。
状态使用的范围:整个应用程序。
存储的大小限制:任意大小。
生命周期:应用程序开始时创建,应用程序结束时销毁。
安全与性能:安全性较高(因为存放在服务器端),不能存放大量数据。
Session的特性:
InProc StateServer SQLServer
存储的物理位置: IIS(内存) Windows服务进程(内存) SQLServer数据库(磁盘)
存储的类型限制: 无限制 可以序列化的类型
存储的大小限制: 无限制
使用范围: 当前请求上下文、每用户独立
生命周期: 第一次访问网站创建,超时或Abandon时销毁
安全性: 高(因为存放在服务器端)
优点: 速度快
缺点: 序列化与反序列化消耗CPU资源
Cookie的特性:
存储的物理位置:客户端,如果是临时Cookie,存在于浏览器的内存中。如果是永久Cookie,存在于客户端的Cookies文件夹内。
存储的类型限制:字符串。
状态使用的范围:当前请求的上下文都能访问到Cookie,Cookie对每一用户独立。
存储的大小限制:不能大于4k。
生命周期:超过过期时间后失效。
安全与性能:安全性低(因为存放在客户端),对于敏感数据需要考虑加密。可用于长期保存用户设置。
ViewState(Asp.net webForm)的特性:
存储的物理位置:客户端表单隐藏字段。
存储的类型限制:可序列化类型。
状态使用的范围:当前页面(控件),对每一用户独立。
存储的大小限制:存储过多的数据会导致提交和打开页面缓慢。
生命周期:于页面生存周期相同。
提供了验证和加密。避免存储大量数据以影响性能。
-----------------------------------------------------------------
Cookie 和 SessionId 在 Request/Response Header 中进行传输, 一个 SessionId 在服务器中维护着一个 Session对象.
SessionId是一个特殊的Cookie, 无过期时间,不会保存在Cookie的临时文件夹中,随会话结束,而自动清除.
ViewState 在 Request/Response Body 中进行传输