ASP.NET中的状态管理

Session 会话
l  区分客户端,不区分页面
l  数据量会随着客户端(并发)数量的增多,而增多
l  服务器端存储什么: 数据存储在服务器端 (InProc StateServer SqlServer)
l  客户端存储什么: 客户端存储的是 SessionID
l  有过期策略
l  适用场合:与用户相关的数据,购物车,用户帐号,
 
Application 状态
l  全局数据,所有客户端共享:不区分客户端,不区分页面
l  服务器端存储什么: 数据存储在服务器端(服务器进程内)
l  客户端存储什么: 客户端不存储任何与 Application 状态数据
l  可能有多线程并发访问的问题,需要同步( Lock/Unlock
l  适用场合:全局性的数据,在 Application_Start 内初始化,然后在其他页面中访问
 
ViewState 视图状态
l  区分客户端,区分页面
l  服务器端存储什么: 数据在服务器和客户端 ( 页面数据 ) 来回穿梭
l  客户端存储什么: 数据在服务器和客户端 ( 页面数据 ) 来回穿梭
l  适用场合:单一页面上的临时性数据,用于用户和一个页面之间的来回交互。
l  安全性比较低
 
页面上的实例字段
l  区分客户端,区分页面,而且区分前后不同的请求
l  生存期极短,只在服务器处理页面的过程中有效
l  适用场合范围较窄
 
 
静态字段
l  全局数据,所有客户端共享:不区分客户端,不区分页面
l  服务器端存储什么: 数据存储在服务器端(服务器进程内)
l  客户端存储什么: 客户端不存储任何 static 状态数据
l  可能有多线程并发访问的问题,同步需要自己编写代码(不如 Application 方便
l  适用场合:全局性的数据,在任何需要的地方内初始化,然后在其他页面中访问
 
查询字符串 Query String
l  区分客户端,在两个相邻的页面之间共享(通过地址栏上数据)
l  服务器端存储什么: 数据在服务器和客户端浏览器地址栏中交互
l  客户端存储什么: 数据在服务器和客户端浏览器地址栏中交互
l  适用场合:作为数据查询的分离关键字,支持 copy 或存储。丧失安全性 ; 异构网站系统 (JSP, ASP, PHP) ASP.NET 页面集成
 
Input
l  区分客户端,在两个相邻的页面之间共享(通过地址栏上数据)
l  服务器端存储什么: 数据从客户端页面上 post 给服务器
l  客户端存储什么: 数据从客户端页面上 post 给服务器
l  适用场合:异构网站系统 (JSP, ASP, PHP) ASP.NET 页面集成
 
Cookie
l  区分客户端,不区分页面
l  服务器端存储什么:服务器不保存Cookie数据
l  客户端存储什么:存放Cookie数据
l 有过期策略
l  适用场合:异构网站系统 (JSP, ASP, PHP) ASP.NET 页面集成,以及长期保存的数据

你可能感兴趣的:(职场,会话,状态,休闲,管理 )