ASP.NET保存信息总结(Application、Session、Cookie、ViewState和Cache等)

如下是关于ASP.NET中保存各类信息的对象的比较,理解这些对象的原理,对制做完善的程序来讲是至关有必要的(摘至互联网,并不是原创--xukunping)程序员

在ASP.NET中,有不少种保存信息的对象.例如:APPlication,Session,Cookie,ViewState和Cache等,那么它们有什么区别呢?每一种对象应用的环境是什么?
    为了更清楚的了解,咱们总结出每一种对象应用的具体环境,以下表所示:浏览器

方法 信息量大小 保存时间 应用范围 保存位置
Application 任意大小 整个应用程序的生命期 全部用户 服务器端
Session 小量,简单的数据

用户活动时间+一段延迟时间(通常
为20分钟)安全

单个用户 服务器端
Cookie 小量,简单的数据 能够根据须要设定 单个用户 客户端
Viewstate 小量,简单的数据 一个Web页面的生命期 单个用户 客户端
Cache 任意大小 能够根据须要设定 全部用户 服务器端
隐藏域 小量,简单的数据 一个Web页面的生命期 单个用户 客户端
查询字符串 小量,简单的数据 直到下次页面跳转请求 单个用户 客户端
Web.Config文件 不变或极少改变的小量数据 直到配置文件被更新 单个用户 服务器端

     1.Application对象 
    Application用于保存全部用户的公共的数据信息,若是使用Application对象,一个须要考虑的问题是任何写操做都要在 Application_OnStart事件(global.asax)中完成.尽管使用Application.Lock和 Applicaiton.Unlock方法来避免写操做的同步,可是它串行化了对Application对象的请求,当网站访问量大的时候会产生严重的性 能瓶颈.所以最好不要用此对象保存大的数据集合. 
       2.Session对象
    Session用于保存每一个用户的专用信息.她的生存期是用户持续请求时间再加上一段时间(通常是20分钟左右).S
ession中的信息保存在Web服务器内容中,保存的数据量可大可小.当Session超时或被关闭时将自动释放保存的数据信息.因为用户中止使用应用 程序后它仍然在内存中保持一段时间,所以使用Session对象使保存用户数据的方法效率很低.对于小量的数据,使用Session对象保存仍是一个不错 的选择.使用Session对象保存信息的代码以下:服务器

 

//存放信息
Session["username"]="zhouhuan";
//读取数据
string UserName=Session["username"].ToString();

    3.Cookie对象
    Cookie用于保存客户浏览器请求服务器页面的请求信息,程序员也能够用它存放非敏感性的用户信息,信息保存的时间能够根据须要设置.若是没有设置 Cookie失效日期,它们仅保存到关闭浏览器程序为止.若是将Cookie对象的Expires属性设置为Minvalue,则表示Cookie永远不 会过时.Cookie存储的数据量很受限制,大多数浏览器支持最大容量为4096,所以不要用来保存数据集及其余大量数据.因为并不是全部的浏览器都支持 Cookie,而且数据信息是以明文文本的形式保存在客户端的计算机中,所以最好不要保存敏感的,未加密的数据,不然会影响网站的安全性.使用 Cookie对象保存的代码以下:网站

//存放信息
Response.Cookies["UserID"].Value="0001";
//读取信息
string UserID=Response.Cookies["UserID"].Value;

    4.ViewState对象
    ViewState 经常使用于保存单个用户的状态信息,有效期等于页面的生存期。ViewState容器能够保持大量的数据,可是必须谨慎使用,由于过多使用会影响应用程序的性 能。全部Web服务器控件都使用ViewState在页面回发期音保存本身的状态信息。若是某个控件不须要在回发期间保存状态信息,最好关闭该对象的 ViewState,避免没必要要的资源浪费。经过给@Page指令添加“EnableViewState=false”属性能够禁止整个页面的 ViewState。使用ViewState对象保存信息的代码以下。加密

  //存放信息
   ViewState["nameID"]="0001";
  //读取信息
   string NameID=ViewState["nameID"].ToString();

5.Cache对象
    Cache对象用于在HTTP请求间保存页面或数据。该对象的使用能够极大地提升整个应用程序的效率。它容许将频繁访问的大量服务器资源存储在内存 中,当用户发出相同的请求后服务器再也不次处理而是将Cache中保存的信息返回给用户,节省了服务器处理请求的时间。此对象的实例是每一个应用程序专用的, 其生存期依赖于该应用程序的生存期。当从新启动应用程序时,将从新建立其Cache对象的实例。使用Cache对象保存信息的代码以下。spa

  //存放信息
   Cache["nameID"]="0001";
  //存放信息
   Cache.Insert("nameID","0001"1);
  //读取信息
  string NameID=Cache["nameID"].ToString();

   6.隐藏域
Hidden控件是属于HTML类型的服务器控件,使用此控件能够实现隐藏域的功能。其实此控件和其它服务器控件的使用没有太大区别,只是它不会在用户端 的浏览器中显示,始终处于隐藏状态。可是每次页面提交的时候,此控件和其它服务器控件一同提交到服务器端,所以在服务器端可使用Value属性获取或保 存一些数据信息。使用Hidden控件保存信息的代码以下。对象

  //存放信息
  Hidden.Value="0001";
  //获取信息
  string NameID=Hidden.Value;

7.查询字符串
查询字符串的方式是将要传递的值链接在URL后面,而后经过Response.Redirect方法实现客户端的重定向。这种方式能够实如今两个页面之间传递信息。因为URL的长度有必定的限制,所以不能传递太大的信息,加外安全性也不是很好。
传递信息以下。事件

   Response.Redirect("List.aspx?nameID=0001&gradeID=002");
  //执行上面的语句后在IE地址栏显示的URL的代码以下。
   http://localhost/List.aspx?nameID=0001&grade=002
  //当跳转到List.aspx后,能够经过如下代码得到所传递的信息。
  string NameID.GradeID;
   NameID=Request.Params["nameID"];
   GradeID=Request.Params["gradeID"];

      除了以上介绍的几种对象外,还可使用Context对象和Web.Config配置文件。内存

相关文章
相关标签/搜索