• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ASP.NET > ASP.NET中Application、Cookie、Session、Cache和ViewState

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

作者:daixh 字体:[增加 减小] 来源:互联网 时间:2017-05-11

daixh通过本文主要向大家介绍了application asp.net,asp.net,asp net培训,asp和asp.net的区别,零基础学asp.net等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

我们在做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
存储位置 服务器 服务器 服务器 客户端 客户端
是否会被主动丢弃 不会 会 不会 不会 不会
与会话相关 否 否 是 是 是
是否被序列化 否 否 否 是 是
是否发生服务器-客户端传输 否 否 否 是 是(默认情况)
是否被加密 否 否 否 是 否(默认情况)

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • ASP.NET 中的Application详解
  • ASP.NET中Application、Cookie、Session、Cache和ViewState
  • ASP.NET中使用Application对象实现简单在线人数统计功能
  • ASP.NET中Application全局对象用法实例浅析
  • ASP.NET 使用application与session对象写的简单聊天室程序
  • ASP.NET中application对象的使用介绍
  • ASP.NET中application对象的使用介绍
  • asp.net错误处理Application_Error事件示例
  • ASP.Net的Application介绍
  • ASP.NET中Application和Cache的区别分析

相关文章

  • 2017-05-11浅谈VS中的DataPager分页
  • 2017-05-11asp.net 读取配置文件方法
  • 2017-05-11asp.net分页功能实现
  • 2017-05-11C#调用C++版本dll时的类型转换需要注意的问题小结
  • 2017-05-11asp.net下检测远程URL是否存在的三种方法
  • 2017-05-11asp.net 读取文本文件并插入数据库的实现代码
  • 2017-05-11Json.net 常用使用小结(推荐)
  • 2017-05-11Asp.net在页面间传递大量数据(数据表)建议采用的方法
  • 2018-08-20如何利用HttpClientFactory实现简单的熔断降级
  • 2017-05-11ASP.NET中内嵌页面代码的一个问题

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 关于asp.net button按钮的OnClick和OnClientClick事件
    • asp.net DataGrid控件中弹出详细信息窗口
    • 禁止ViewState的3种解决方法
    • asp.net 页面转向 Response.Redirect, Server.Transfer, Server.Execute的区别
    • asp .net实现给图片添加图片水印方法示例
    • 几种判断asp.net中session过期方法的比较
    • asp.net(C#)防sql注入组件的实现代码
    • asp.net 文件上传 实时进度
    • asp.net SAF 中缓存服务的实现第1/5页
    • log4net配置和使用方法分享

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有