最近在网上搜罗了 ASP.NET WEB 状态管理方面的一些内容,终于把这些内容整合总结了一下。
1. 希望自己通过整理,能够掌握一些,为自己投资。
2. 以便自己忘记,又要浪费时间搜罗。
3. 希望对园友有帮助,这是一件很开心的事情
4. 希望大侠们看到问题及时帮忙指正,不想误导自己,更不想误导园友,在下不胜感激
不再磨叽,马上上菜
名称 |
用户 |
生存时间 |
数据 |
位置 |
优势 |
劣势 |
建议 |
Application |
所有用户 |
应用程序重新启动 |
没有限制,只被存储一次 |
服务器,可以存储在数据库 |
1. 实现简单 2. 整个应用程序作用域(公用) |
1. 整个应用程序作用域的范围导致没有与私人空间 2. 服务器挂掉、升级以及关闭可能会导致数据丢失或被破坏 3. 需要占用服务器内存 |
存储多用户使用但不经常改变且不考虑安全性的全局信息 |
Cookie |
当前用户 |
一般很短,但是只要用户不删除,可以是数月甚至数年 |
少量且经常改变的数据 |
客户端 |
1. 存储时间可配置 2. 无需服务器资源 3. 简单 4. 数据持久化 |
1. 数据大小受限 2. 用户可禁用 3. 潜在安全隐患 |
需要在客户端且不需要考虑安全性的少量数据 |
QueryString |
一个或一组用户 |
为下一个请求 (可以跨多个请求重复使用) |
很小,简单数据 |
客户端 |
1. 无需服务器资源 2. 被广泛支持 3. 实现简单 |
1. 潜在安全隐患 2. 能力有限(被URL长度限制) |
通过链接,从一个面发送到另一个页面或者是相同页面,且不需要考虑安全性的少量数据 |
Session |
当前用户 |
只要用户是在线的,以及在超时时间内(一般是20分钟),支持自失效 |
没有限制,但是应尽量小,因为每个用户都有自己单独session的存储 |
服务器 |
1. 实现简单 2. 可以使用会话管理事件 3. 数据持久化 4. 可在多计算机、多个进程之间使用 5. 弥补Cookie受限 6. 可以自定义和扩展Session |
1. 性能问题 |
需要考虑安全性,存储特定的单独会话的短期信息 |
Cache |
所有用户或者用户子集 |
根据实际需要可长可短 |
可很大、也可以很小、也可以很复杂 |
客户端/服务器 |
1. 有ASP.NET管理 2. 当内存不足或者超时,将自动清除 3. 可配置 4. 减轻Web Service或者数据库的负担 5. 提高性能 6. 可靠性 |
1. 同步不及时 2. 扩展性问题 3. 维护成本 |
用户经常访问但不经常更新的数据 |
View State |
当前用户 |
一个页面 |
少量信息,随着页面的回发,数据将会在页面来回发 |
客户端,以隐藏域的形式存储 |
1. 无需服务器资源 2. 实现简单 3. 增强全性 |
1. 性能问题 2. 设备限制 3. 潜在安全隐患 |
存储少量需要回发给自己的页面信息 |
Control state |
当前用户 |
一个页面 |
少量信息,往返于服务器之间的控制使用的状态信息 |
客户端,默认以隐藏域的形式存储 |
1. 无需服务器资源 2. 可靠 3. 通用 |
1. 特定程序依赖性 |
需要存储少量信息往返于服务器之间的控制使用的状态信息 |
Hidden Fields |
当前用户 |
一个页面 |
少量且经常被改变的数据 |
客户端 |
1. 无需服务器资源 2. 被广泛支持 3. 实现简单 |
1. 潜在安全隐患 2. 存储数据简单 3. 性能问题 4. 存储限制 |
需要发送到另一个页面或者回发,且无需考虑安全性的少量页面信息 |
Profile Properties |
当前用户 |
配置文件更新 |
任何类型的数据 |
服务器 |
1. 数据持久化 2. 可在多计算机、多个进程之间使用 3. 可扩展性 |
1. 性能问题 2. 额外的配置要求 3. 维护数据 |
用户session过期后需要持久化的信息,用户下次访问时需要恢复的信息 |
Database |
当前用户 |
只要不被删除 |
任何类型的数据 |
服务器 |
1. 安全性 2. 数据存储量大 3. 数据持久化 4. 稳定性和数据完整性 5. 可访问性 6. 被广泛支持 |
1. 复杂性 2. 性能问题 |
存储大量的信息,使用管理事务,或者整个应用程序生命周期都需要使用的信息,再次访问时需要使用的信息。考虑数据挖掘,考虑安全性。 |
再次希望,如果有问题能及时帮忙指正,有问题请留言,有帮助就支持一下吧!