当前位置: 首页 > 编程笔记 >

ASP.NET中Application、Cookie、Session、Cache和ViewState

汪同
2023-03-14
本文向大家介绍ASP.NET中Application、Cookie、Session、Cache和ViewState,包括了ASP.NET中Application、Cookie、Session、Cache和ViewState的使用技巧和注意事项,需要的朋友参考一下

我们在做ASP.NET开发的时候经常会用到回话,我们在回话中存储一些数据,下面让我们来一一介绍一下Application、Cookie、Session、Cache和ViewState,以便我们选择在什么时候使用它们。

一、Application

Application 提供对所有会话的应用程序范围的方法和事件的访问。还提供对可用于存储信息的应用程序范围的缓存的访问。应用程序状态是可供 ASP.NET 应用程序中的所有类使用的数据储存库。它存储在服务器的内存中,因此与在数据库中存储和检索信息相比,它的执行速度更快。与特定于单个用户会话的会话状态不同,应用程序状态应用于所有的用户和会话。因此,应用程序状态非常适合存储那些数量少、不随用户的变化而变化的常用数据。

Application的关键特性有:存储于服务器内存中,与用户无关即多用户共享,在应用程序的整个生存期中存在即不会被主动丢弃,不被序列化,不发生服务器-客户端的数据传输。

二、Cookie

Cookie 提供了一种在 Web 应用程序中存储用户特定信息的方法。例如,当用户访问您的站点时,您可以使用 Cookie 存储用户首选项或其他信息。当该用户再次访问您的网站时,应用程序便可以检索以前存储的信息。在开发人员以编程方式设置Cookie时,需要将自己希望保存的数据序列化为字符串(并且要注意,很多浏览器对Cookie有4096字节的限制)然后进行设置。

Cookie的关键特性有:存储于客户端硬盘上,与用户相关,在一定时间内持久化存储,可以跨浏览器共享数据,需要被序列化,发生服务器-客户端数据传输。

三、Session

Session 为当前用户会话提供信息。还提供对可用于存储信息的会话范围的缓存的访问,以及控制如何管理会话的方法。应用程序状态是可供 ASP.NET 应用程序中的所有类使用的数据储存库。它存储在服务器的内存中,因此与在数据库中存储和检索信息相比,它的执行速度更快。与不特定于单个用户会话的应用程序状态不同,会话状态应用于单个的用户和会话。因此,应用程序状态非常适合存储那些数量少、随用户的变化而变化的常用数据。而且由于其不发生服务器-客户端数据传输,Session还适合存储关于用户的安全数据,如购物车信息。

Session的关键特性有:存储于服务器内存中,与会话相关,在会话的整个生存期中存在即不会被主动丢弃,不被序列化,不发生服务器-客户端数据传输。

四、Cache

ASP.NET 为您提供了一个强大的、便于使用的缓存机制,用于将需要大量服务器资源来创建的对象存储在内存中。缓存这些类型的资源会大大改进应用程序的性能。它存储于服务器的内存中,允许您自定义如何缓存项以及将它们缓存多长时间。例如,当缺乏系统内存时,缓存会自动移除很少使用的或优先级较低的项以释放内存。该技术也称为清理,这是缓存确保过期数据不使用宝贵的服务器资源的方式之一。它不与会话相关,所以它是多会话共享的,因此使用它可以提高网站性能,但是可能泄露用户的安全信息,还由于在服务器缺乏内存时可能会自动移除Cache因此需要在每次获取数据时检测该Cache项是否还存在。

Cache的关键特性有:存储于服务器内存中,与会话无关,根据服务器内存资源的状况随时可能被丢弃,不被序列化,不发生服务器-客户端数据传输。
在这里,我还希望对ViewState也顺便做一个描述,以便与上面四种数据持久化的方式做一个对比。因为,ViewState虽然不能够跨页面共享数据,但是在同一个页面里,可以用于在对同一页的多个请求之间保留值。

五、ViewState

ViewState 属性提供一个字典对象,用于在对同一页的多个请求之间保留值。这是页用来在往返行程之间保留页和控件属性值的默认方法。在处理页时,页和控件的当前状态会散列为一个字符串,并在页中保存为一个隐藏域或多个隐藏域(如果存储在 ViewState 属性中的数据量超过了 MaxPageStateFieldLength 属性中的指定值)。当将页回发到服务器时,页会在页初始化阶段分析视图状态字符串,并还原页中的属性信息。也可以使用视图状态来存储值。在默认情况下,ViewState不被加密,并且发生服务器-客户端数据传输。

ViewState的关键特性有:存储于页面上,与会话且与页面相关,被序列化,默认发生服务器-客户端传输,默认不被加密。
至于在什么样的情况下ViewState不发生服务器端-客户端传输,或者被加密,我们将在后面的章节中予以讲述。

综上,我们总结出一些常见而典型的例子:

电子商务网站的购物车:使用Session,因为购物车信息是会话相关的而且安全性很重要。
论坛或其它网站的“记住我”功能:使用Cookie,因为这是保存的往往只是一个用户名,而且当用户下次登陆时还需要这个用户名仍然存在。
站点计数器:如果您不用数据库的话那就是使用Application了,因为计数器是会话无关的。但是即使在使用数据库的情况下我也建议你同时使用Application来保存计数值,然后再每隔一段时间保存到数据库里去,因为这样可以减少访问数据库的次数以提高性能。
产品信息:Cache是优先的选择,因为产品信息通常是与会话无关、修改频率低且访问频率高的数据,使用Cache来保存可以有效地提高网站的性能。

最后,我们给出一个表格,列出以上几种数据持久化方式的特性对比,以便您做出决定:

Application Cache Session Cookie ViewState
存储位置 服务器 服务器 服务器 客户端 客户端
是否会被主动丢弃 不会 不会 不会 不会
与会话相关
是否被序列化
是否发生服务器-客户端传输 是(默认情况)
是否被加密 否(默认情况)

 类似资料:
  • 本文向大家介绍ASP.NET中Session和Cache的区别总结,包括了ASP.NET中Session和Cache的区别总结的使用技巧和注意事项,需要的朋友参考一下 以前实现数据的缓存有很多种方法,有客户端的Cookie,有服务器端的Session和Application。其中Cookie是保存在客户端的一组数据,主要用来保存用户名等个人信息。Session则保存对话信息。Application

  • session和cookie是网站浏览中较为常见的两个概念,也是比较难以辨析的两个概念,但它们在浏览需要认证的服务页面以及页面统计中却相当关键。我们先来了解一下session和cookie怎么来的?考虑这样一个问题: 如何抓取一个访问受限的网页?如新浪微博好友的主页,个人微博页面等。 显然,通过浏览器,我们可以手动输入用户名和密码来访问页面,而所谓的“抓取”,其实就是使用程序来模拟完成同样的工作,

  • Cookie Session 储存位置 客户端 服务器端 目的 跟踪会话,也可以保存用户偏好设置或者保存用户名密码等 跟踪会话 安全性 不安全 安全 session技术是要使用到cookie的,之所以出现session技术,主要是为了安全。

  • 本文向大家介绍Application 、Cookie和 Session 两种会话有什么不同?相关面试题,主要包含被问及Application 、Cookie和 Session 两种会话有什么不同?时的应答技巧和注意事项,需要的朋友参考一下 答:Application是用来存取整个网站全局的信息,而Session是用来存取与具体某个访问者关联的信息。Cookie是保存在客户端的,机密信息不能保存在C

  • 本文向大家介绍Cookie 和 Session区别?相关面试题,主要包含被问及Cookie 和 Session区别?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: cookie数据存放在客户的浏览器上,session数据放在服务器上。 cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗 考虑到安全应当使用session。 session会在一定时间内保存在服

  • 本文向大家介绍详解PHP中cookie和session的区别及cookie和session用法小结,包括了详解PHP中cookie和session的区别及cookie和session用法小结的使用技巧和注意事项,需要的朋友参考一下 具体来说 cookie 是保存在“客户端”的,而session是保存在“服务端”的 cookie 是通过扩展http协议实现的 cookie 主要包括 :名字,值,过期