Application,Session,Cookie,ViewState
在 ASP.NET 中,有很多种保存信息的内置对象,
如:Application,Session,Cookie,ViewState 和 Cache 等。下面分别介绍它们的用法和区别。
方法
信息量大小 作用域和保存时间
应用范围
保存位置
Application 任意大小
整个应用程序的生命期
整个应用程序/所
有用户
服务器端
Cache
任意大小
可以根据需要设定
整个应用程序/所
有用户
服务器端
Session
小量,简单的
数据
用户活动时间+一段延迟时间(一般
为 20 分钟)
单个用户
服务器端
Cookie
小量,简单的
数据
可以根据需要设定
单个用户
客户端
Viewstate
小量,简单的
数据
一个 Web 页面的生命期
单个用户
客户端
隐藏域
小量,简单的
数据
一个 Web 页面的生命期
单个用户
客户端
查询字符串 小量,简单的
数据
直到下次页面跳转请求
单个用户
客户端
1.Application 对象
Application 用于保存所有用户的公共的数据信息,如果使用 Application 对象,一个需
要考虑的问题是任何写操作都要在 Application_OnStart 事件(global.asax)中完成.尽管使
用 Application.Lock 和 Applicaiton.Unlock 方法来避免写操作的同步,但是它串行化了对
Application 对象的请求,当网站访问量大的时候会产生严重的性能瓶颈.因此最好不要用此
对象保存大的数据集合. 下面我们做个在线用户统计的例子来说明这个问题:
(以文件的形式存放网站总访问量)
Global.asax 类
using
System;
using
System.Collections;
using
System.ComponentModel;
using
System.Web;
using
System.Web.SessionState;
using
System.IO;
///
Global 的摘要说明。
public
class
Global : System.Web.HttpApplication
{
///
必需的设计器变量。
private
System.ComponentModel.IContainer components =
null
;
private
FileStream fileStream;
private
StreamReader reader;
//读字符流
private
StreamWriter writer;
//写字符流
public
Global()
{
InitializeComponent();
}
protected
void
Application_Start(Object sender, EventArgs e)
{
Application["CurrentGuests"]=0;
//初始花为0;