ASP.NET状态管理策略
如果要想把信息存储在客户端那可以选择视图状态、控件状态、隐藏字段、cookie、和查询字符串。
1、web窗体页提供viewstate属性作为内置结构,在同一页的多个请求间自动保留值。他作为页面的隐藏域来进行维护。一般是加密的哦。
视图状态保存在也代码结构中,不需要任何服务器资源;实现简单,视图状态不需要用户自己编程。默认情况下对控件启用状态数据维护;视图状态的值经过哈希计算和压缩,并且对unicode实现精心编码,安全性高于隐藏域。
视图状态存储在页本身,数据较多时可能会分块,因此如果存储较大的值显示页的速度可能会受到影响。移动设备可能没有祖国的内存来存储大量的视图数据。在安全性上,隐藏域的值会被一些工具解析出来,导致篡改泄密等隐患。
2、ASP.NET页框架提供了controlstate属性作为服务器往返过程中保存控件的值。控件据此知道在往返过程中的状态。视图状态可用与此,但是开发人员可以在页级将视图关闭,这实际上破坏了您的控件。而控件状态不能被关闭,因此他提供了存储控件状态的可靠方法。
默认情况下,控件 的状态存储在也的额隐藏域中,不需要任何服务器资源。因为控件状态不能被关闭所以比视图状态更可靠。控件状态是自定义的状态保存机制,开发人员可以编写代码来控制如何保存。
3、隐藏字段。他是标准的html控件,使用隐藏字段存储特定于页的信息,必须使用post方法与服务器进行交互。
隐藏域在页上存储和读取,不需要服务器资源,几乎被所有浏览器广泛支持。但是安全性不能被忽视,你可以添加代码进行加密,大着需要额外开销。隐藏域不支持复杂数据类型,只提供字符串形式的存储,当然你可以把要存储的复杂数据序列化,以及反序列化。同样由于存储在也本身,会对页面加载造成影响。
如果存储量太大,某些代理或防火墙将阻止包含大数据页面的访问,这时可以考虑将俄米格项放在单独的隐藏域中;或者使用视图状态并打开分块模式,这样会自动将数据分割到多个隐藏域中。
4、cookie用于向客户端存储少量的经常更改的信息,这些信息会和特定站点关联的URL请求一起放松到服务器。cookie可以在浏览器或服务器设置到期规则,用户、浏览器起决定作用。cookie存储在客户端并在发送后有服务器读取,他是一轻量级的键值对结构。
cookie大小受浏览器限制,(通常可以把cookie设置为子键型)而且有些用户禁止接受cookie,因此限制了此功能。同样cookie存在安全隐患,用户可以操纵cookie,这意味着一些依赖于cookie的应用程序的失败。当然你可以用额外的代码进行加密。cookie通常用于为已知用户自定义内容的个性化情况,大多数情况cookie是标识而不是身份验证。在 Cookie 中存储用户名、帐户名或唯一用户 ID(例如 GUID),然后用以访问站点的用户个性化结构中的信息。
5、(通过连接或get方法时才能用此方法)查询字符串在URL的结尾附加信息,在页面之间传递数据简单明了。但是加载数据非常有限长度一般最大为2081个字符。用户会在浏览器中直接看到查询字符串的信息,若果有敏感信息建议用post方法
当然可以在服务器端存储数据,这样有更高的安全性。
1、应用程序状态。ASP.NET通过HttpApplication类将应用程序状态设置为一种存储全局程序特定的信息的方法。应用程序状态变量实际上是ASP.NET应用程序的全局变量。你可以在应用程序状态中存储应用程序特定的值,应用程序状态有服务器来管理。由多个会话共享并且不经常更改的数据是插入到应用程序状态变量的理想数据,如果将常用的、相关的静态数据集放置到应用程序状态中,则可以通过减少对数据库的数据请求总数来提高站点性能。
应用程序状态可供应用程序中的所有页来访问,有多个会话共享并且不经常更改的数据是插入到应用程序状态变量的理想数据。应用程序状态仅对于正在其中运行 的特定进程而言是全局的,并且每一应用程序进程可能具有不同的值。因此,不能依赖他存储唯一值或web场或web园服务器配置中 的全局计数器。(Web园(Web Garden),是IIS 6.0应用程序池的一种配置方案。要理解Web园的概念,可以设想这样一种情形:假设有一个IIS 5.0服务器和三个Web网站,每一个Web网站运行着相同的应用程序,如果IIS 5.0能够自动按照圆形循环的模式将请求依次发送给这些功能上等价、实际上分离的Web网站,将负载分离到三个不同的进程,就可以构成一个小型的Web农场(Web Farm)——这就是Web园。而在IIS 6.0的Web园中,我们不必创建额外的Web网站,只要指定用于某个应用程序池的工作进程的数量就可以了。)
应用程序状态药服务器内存,这会影响服务器性能,而且若果包含这些数据的服务器进程被损坏(因服务器升级。崩溃或关闭)这些数据会丢失。
2、会话状态。ASP.NET提供一种会话状态,将一个有限时间窗口内来自同一 浏览器的请求表示为一个会话,并在该会话持续期间保留变量的值。可以在会话状态中存储会话特定的值和对象,该会话状态对象将由服务器来进行管理并可用于浏览器或客户端设备。存储在会话状态变量中的理想数据是特定于单独会话的短期的、敏感的数据。会话管理事件可以由应用程序引发和使用,sessionstart等。会话状态可以在多计算机和进程配置实用。尽管会话状态最长见得用途是与cookie一起向web应用程序提供标识功能,但是会话状态可用于不支持httpcookie的浏览器。这时会话状态标识符要放在查询字符串中。
其他方法还可以通过配置文件和的数据库来维护信息。
ASP.NET状态管理策略的更多相关文章
- ASP.NET状态管理的总结
阅读目录 开始 hidden-input QueryString Cookie ApplicationState ViewState,ControlState Session Profile 各种状态 ...
- 转载ASP.NET 状态管理Application,Session,Cookie和ViewState用法
转载原地址 http://www.cnblogs.com/cuishao1985/archive/2009/09/24/1573403.html ASP.NET状态管理 APPlication,Ses ...
- [译]面向初学者的Asp.Net状态管理技术
介绍 本文主要讲解Asp.Net应用程序中的状态管理技术(Asp.Net中有多种状态管理技术),并批判性地分析所有状态管理技术的优缺点. 背景 HTTP是无状态的协议.客户端发起一个请求,服务器响应完 ...
- [Asp.Net]状态管理(Session、Application、Cache)
上篇博文介绍了在客户端状态管理的两种方式:http://www.cnblogs.com/wolf-sun/p/3329773.html.除了在客户端上保存状态外,还可以在服务器上保存状态.使用客户端的 ...
- [Asp.Net]状态管理(ViewState、Cookie)
简介 HTTP协议是无状态的.从客户端到服务器的连接可以在每个请求之后关闭.但是一般需要把一些客户端信息从一个页面传送给另一个页面. 无状态的根本原因是:浏览器和服务器使用Socket通信,服务器将请 ...
- ASP.NET状态管理详解,让你明明白白
开发WinFrom的程序员可能不会在意维护应用程序的状态,因为WinFrom本身就在客户端运行,可以直接在内存中维护其应用程序状态.但ASP.NET应用程序在服务器端运行,客户端使用无状态的http协 ...
- ASP.NET状态管理之四(暂存状态HttpContext.Items)
ASP.NET提供一个类System.Web.HttpContext ,用来表示上下文,此对象有一个属性Items 暂存状态就是利用HttpContext.Items属性来存放数据 MSDN中Http ...
- 实验五 ASP.NET状态管理和应用程序配置 总结
这次实验内容是对ASP.NET配置系统的了解和使用,还有就是对Application.Session.ViewState对象的应用.首先,我想说ASP.NET配置系统真的大大超乎我的想象,我以为会是上 ...
- [Asp.Net]状态管理(Session、Application、Cache、Cookie 、Viewstate、隐藏域 、查询字符串)
Session: 1. 客户在服务器上第一次打开Asp.Net页面时,会话就开始了.当客户在20分钟之内没有访问服务器,会话结束,销毁session.(当然也可以在Web.config中设置缓存时间 ...
随机推荐
- Cadstar格式导入功能
Cadstar格式导入功能 Skip to end of metadata Attachments:4 Added by Wenlong Hua, last edited by Wenlong ...
- A2DP协议笔记
1.概述 A2DP(Advanced Audio Distribution Profile)是蓝牙的音频传输协议,典型应用为蓝牙耳机.A2DP协议的音频数据在ACL Link上传输,这与SCO ...
- BLE协议栈及传统蓝牙协议栈对比图
1. BLE协议栈的层次图如下: 主机控制接口层: 为主机和控制器之间提供标准通信接口 逻辑链路控制及自适应协议层: 为上层提供数据封装服务 安全管理层: 定义配对和密钥分配方式,为协议栈其他层与另一 ...
- pomelo架构概览
pomelo之所以简单易用.功能全面,并且具有高可扩展性.可伸缩性等特点,这与它的技术选型和方案设计是密不可分的.在研究大量游戏引擎设计思路基础上,结合以往游戏开发的经验,确定了pomelo框架的设计 ...
- gtd好文两篇收藏
http://www.jianshu.com/p/bf5e8a9761f5 http://blog.sina.com.cn/s/blog_4e0f66b80100m73i.html
- TCP的三次握手四次挥手
一.三次握手 1.wireshark 抓包 2.TCP报文手部 注意标志位: 1).同步 SYN = 1 表示这是一个连接请求或连接接受报文. 2).只有当 ACK = 1 时确认号字段才有效.当 A ...
- Cygwin + CMake 测试
https://www.cygwin.com/ apt-get for cygwin? wget rawgit.com/transcode-open/apt-cyg/master/apt-cyg in ...
- 371. Sum of Two Integers
不用加减法计算两个整数的和.这道题其实是考察一些基本的布尔代数知识.我们知道,二进制表示时: 0 + 0 = 00 1 + 0 = 01 0 + 1 = 01 1 + 1 = 10 所以,两个二进制整 ...
- Java学习-026-类名或方法名应用之二 -- 统计分析基础
前文讲述了类名或方法的应用之一调试源码,具体请参阅:Java学习-025-类名或方法名应用之一 -- 调试源码 此文主要讲述类名或方法应用之二统计分析,通过在各个方法中插桩(调用桩方法),获取方法的调 ...
- cannot open /proc/bus/usb/devices, No such file or directory
由于kernel config中没有打开对应的配置. make menuconfig 选择: Device Drivers ---> [*] USB support ---> [*] US ...