以下是关于ASP.NET中保存各种信息的对象的比较,理解这些对象的原理,对制作完善的程序来说是相当有必要的(摘至互联网,并非原创--xukunping)...
在ASP.NET中,有很多种保存信息的对象.例如:APPlication,Session,Cookie,ViewState和Cache等,那么它们有什么区别呢?每一种对象应用的环境是什么?
为了更清楚的了解,我们总结出每一种对象应用的具体环境,如下表所示:
方法 | 信息量大小 | 保存时间 | 应用范围 | 保存位置 |
Application | 任意大小 | 整个应用程序的生命期 | 所有用户 | 服务器端 |
Session | 小量,简单的数据 |
用户活动时间+一段延迟时间(一般 |
单个用户 | 服务器端 |
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对象保存信息的代码如下:
3.Cookie对象
Cookie用于保存客户浏览器请求服务器页面的请求信息,程序员也可以用它存放非敏感性的用户信息,信息保存的时间可以根据需要设置.如果没有设置 Cookie失效日期,它们仅保存到关闭浏览器程序为止.如果将Cookie对象的Expires属性设置为Minvalue,则表示Cookie永远不 会过期.Cookie存储的数据量很受限制,大多数浏览器支持最大容量为4096,因此不要用来保存数据集及其他大量数据.由于并非所有的浏览器都支持 Cookie,并且数据信息是以明文文本的形式保存在客户端的计算机中,因此最好不要保存敏感的,未加密的数据,否则会影响网站的安全性.使用 Cookie对象保存的代码如下:
4.ViewState对象
ViewState 常用于保存单个用户的状态信息,有效期等于页面的生存期。ViewState容器可以保持大量的数据,但是必须谨慎使用,因为过多使用会影响应用程序的性 能。所有Web服务器控件都使用ViewState在页面回发期音保存自己的状态信息。如果某个控件不需要在回发期间保存状态信息,最好关闭该对象的 ViewState,避免不必要的资源浪费。通过给@Page指令添加“EnableViewState=false”属性可以禁止整个页面的 ViewState。使用ViewState对象保存信息的代码如下。
5.Cache对象
Cache对象用于在HTTP请求间保存页面或数据。该对象的使用可以极大地提高整个应用程序的效率。它允许将频繁访问的大量服务器资源存储在内存 中,当用户发出相同的请求后服务器不再次处理而是将Cache中保存的信息返回给用户,节省了服务器处理请求的时间。此对象的实例是每个应用程序专用的, 其生存期依赖于该应用程序的生存期。当重新启动应用程序时,将重新创建其Cache对象的实例。使用Cache对象保存信息的代码如下。
6.隐藏域
Hidden控件是属于HTML类型的服务器控件,使用此控件可以实现隐藏域的功能。其实此控件和其它服务器控件的使用没有太大区别,只是它不会在用户端 的浏览器中显示,始终处于隐藏状态。但是每次页面提交的时候,此控件和其它服务器控件一同提交到服务器端,因此在服务器端可以使用Value属性获取或保 存一些数据信息。使用Hidden控件保存信息的代码如下。
7.查询字符串
查询字符串的方式是将要传递的值连接在URL后面,然后通过Response.Redirect方法实现客户端的重定向。这种方式可以实现在两个页面之间传递信息。由于URL的长度有一定的限制,因此不能传递太大的信息,加外安全性也不是很好。
传递信息如下。
除了以上介绍的几种对象外,还可以使用Context对象和Web.Config配置文件。
摘自:http://www.cnblogs.com/zhouxiaxue
以下是关于ASP.NET中保存各种信息的对象的比较,理解这些对象的原理,对制作完善的程序来说是相当有必要的(摘至互联网,并非原创--xukunping)...相关推荐
- ASP.NET—016:ASP.NET中保存文件对话框
本想在asp.net中使用savediallog保存文件,结果提示:当应用程序不是以 UserInteractive 模式运行时显示模式对话框或窗体是无效操作. 在ASP.NET中使用如下方式,保存文 ...
- 血淋淋的事实告诉你:你为什么不应该在JS文件中保存敏感信息
在JavaScript文件中存储敏感数据,不仅是一种错误的实践方式,而且还是一种非常危险的行为,长期以来大家都知道这一点. 而原因也非常简单,我们可以假设你为你的用户动态生成了一个包含API密钥的Ja ...
- asp将新闻内容写入mysql数库据_在ASP.net中保存/取出图片入/从SQL数据库
一.把图片存入数据库中 用到以下几个方面的知识: 1. 使用流对象 2. 查找准备上传的图片的大小和类型 3.怎么使用InputStream方法 插入图片的必要条件 1.#Form 标记的 encty ...
- Windows注册表中保存的信息及环境变量中SystemRoot在注册表中的位置
Windows注册表中的几个分项分别是什么 HKEY_LOCAL_MACHINE 是机器硬件信息的集散地 HKEY_CURRENT_USER 当前用户所用信息的储存地 HKEY_CLASSES_ROO ...
- ASP.NET中WEB服务器控件属性CommandName和CommandArgument的理解
mandArgument 获取或设置与关联的 CommandName 属性一起传递到 Command 事件处理程序的可选参数. 备注 使用 CommandArgument 属性指定补充 Command ...
- 计算机系统中处理的信息是什么,《深入理解计算机系统》第二章 信息的表示和处理...
2.1信息存储 机器程序将内存视为一个很大的字节数组,称为虚拟内存.所有可能的地址集合称为虚拟地址空间,实际上,该功能的实现是将动态随机访问存储器(DRAM).闪存.磁盘存储器.特殊硬件和操作系统软件 ...
- Asp.net中的web.config配置
Asp.net中的web.config配置 Asp.net中的web.config配置... 1 一. 配置文件保存位置... 2 二. 配置文件加载顺序... 2 三. 配置文件节点介绍... 3 ...
- ASP.NET中App_Code,App_Data等文件夹的作用
ASP.NET中App_Code,App_Data等文件夹的作用 1. Bin文件夹 Bin文件夹包含应用程序所需的,用于控件.组件或者需要引用的任何其他代码的可部署程 序集.该目录中存在的任何.dl ...
- 比较.ASP.NET中Application,Session,Cookie,ViewState和Cache
在ASP.NET中,有很多种保存信息的内置对象,如:Application,Session,Cookie,ViewState和Cache等.下面分别介绍它们的用法和区别. 方法 信息量大小 作用域和保 ...
最新文章
- Eclipse插件安装
- cpu安装_CPU是AMD的,老台式电脑可以加装固态硬盘安装Win10系统吗?
- 4:springApplication.run 原理
- 谈谈ASP.NET Core中的ResponseCaching
- 开题报告方案论证_观点讨论研究方案、立项申报书、开题报告的联系和区别
- 将byte数组写进文件,指定buffer size
- java .class的作用_Java中Class类的作用与深入理解
- 算法设计与分析基础(第3版)
- MyEclipse9.0 XJad的配置
- jrtplib linux编译,linux下编译jrtplib、jthreadlib
- 华为修改优先级命令_华为交换机优先级配置
- uni-app中view和text组件和动画的使用
- MSYS是什么,他与CYGWIN有什么区别?
- 帆软报表决策系统忘记密码重置
- Thinkphp6 搭建一套商城(拼团、秒杀、优惠券)
- AWTK 在腾讯 TOS 上的移植笔记
- 转载自网眼的QQ微博(http://t.qq.com/zhangking)
- RK3399平台开发系列讲解(SPI子系统)4.36、SPI子系统驱动框架详解
- Python 3D绘图库pyecharts、matplotlib、openpyxl
- MAC文件误删怎么办?mac数据恢复,亲测很好用的方法
热门文章
- OpenGL拆分视图
- C++ const详解
- QT实现3D多个视口渲染场景。
- QT的QNdefRecord类的使用
- C++对C的加强之新增Bool类型关键字
- 经典C语言程序100例之五三
- oracle数据库计数器,DM 达梦数据库 表的 行计数器(COUNTER)属性
- mysql iostat_通过『iostat -dx 1』命令监控IO性能
- HIVE时间戳错误unix_timestamp时间不同环境相差8小时
- Strom程序的并发机制,配置并行度(代码实现)、动态改变并行度,local or shuffle分组,分组的概念以及分组类型