background image

比较

 

 .net

 

     中

       Application,Session,Cookie,ViewState

 

     和

       Cache

 

     区别

 

  

在 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;