如果要想把信息存储在客户端那可以选择视图状态、控件状态、隐藏字段、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状态管理策略的更多相关文章

  1. ASP.NET状态管理的总结

    阅读目录 开始 hidden-input QueryString Cookie ApplicationState ViewState,ControlState Session Profile 各种状态 ...

  2. 转载ASP.NET 状态管理Application,Session,Cookie和ViewState用法

    转载原地址 http://www.cnblogs.com/cuishao1985/archive/2009/09/24/1573403.html ASP.NET状态管理 APPlication,Ses ...

  3. [译]面向初学者的Asp.Net状态管理技术

    介绍 本文主要讲解Asp.Net应用程序中的状态管理技术(Asp.Net中有多种状态管理技术),并批判性地分析所有状态管理技术的优缺点. 背景 HTTP是无状态的协议.客户端发起一个请求,服务器响应完 ...

  4. [Asp.Net]状态管理(Session、Application、Cache)

    上篇博文介绍了在客户端状态管理的两种方式:http://www.cnblogs.com/wolf-sun/p/3329773.html.除了在客户端上保存状态外,还可以在服务器上保存状态.使用客户端的 ...

  5. [Asp.Net]状态管理(ViewState、Cookie)

    简介 HTTP协议是无状态的.从客户端到服务器的连接可以在每个请求之后关闭.但是一般需要把一些客户端信息从一个页面传送给另一个页面. 无状态的根本原因是:浏览器和服务器使用Socket通信,服务器将请 ...

  6. ASP.NET状态管理详解,让你明明白白

    开发WinFrom的程序员可能不会在意维护应用程序的状态,因为WinFrom本身就在客户端运行,可以直接在内存中维护其应用程序状态.但ASP.NET应用程序在服务器端运行,客户端使用无状态的http协 ...

  7. ASP.NET状态管理之四(暂存状态HttpContext.Items)

    ASP.NET提供一个类System.Web.HttpContext ,用来表示上下文,此对象有一个属性Items 暂存状态就是利用HttpContext.Items属性来存放数据 MSDN中Http ...

  8. 实验五 ASP.NET状态管理和应用程序配置 总结

    这次实验内容是对ASP.NET配置系统的了解和使用,还有就是对Application.Session.ViewState对象的应用.首先,我想说ASP.NET配置系统真的大大超乎我的想象,我以为会是上 ...

  9. [Asp.Net]状态管理(Session、Application、Cache、Cookie 、Viewstate、隐藏域 、查询字符串)

    Session:  1. 客户在服务器上第一次打开Asp.Net页面时,会话就开始了.当客户在20分钟之内没有访问服务器,会话结束,销毁session.(当然也可以在Web.config中设置缓存时间 ...

随机推荐

  1. phpCAS::handleLogoutRequests()关于java端项目登出而php端项目检测不到的测试

    首先,假如你有做过cas,再假如你的cas里面有php项目,这个时候要让php项目拥有cas的sso功能,你需要改造你的项目,由于各人的项目不同,但是原理差不多,都是通过从cas服务器获取sessio ...

  2. NSURL基本操作示例说明

    http://blog.csdn.net/zhibudefeng/article/details/7920686

  3. J2SE 1.6 特性:java.lang.instrument

    1. import java.lang.instrument.Instrumentation; public class ObjectSizeFetcher { private static Inst ...

  4. UML学习

    学习链接:http://blog.csdn.net/wangyongxia921/article/category/1293975 感谢原文作者.

  5. android通过pc脚本执行sqlite3脚本

    最近在调研市面上的一些android db框架,需要经常重复的输入一堆比如 adb shell cd /data/data/com.example.testandroiddb/databases sq ...

  6. ArcGIS Engine开发之旅01---产品组成、逻辑体系结构

    原文:ArcGIS Engine开发之旅01---产品组成.逻辑体系结构 ArcGIS Engine 由两个产品组成:  面向开发人员的软件开发包(ArcGIS Engine Developer k ...

  7. How To Install Tinc and Set Up a Basic VPN on Ubuntu 14.04

    Introduction In this tutorial, we will go over how to use Tinc, an open source Virtual Private Netwo ...

  8. ajax处理回调函数,用ajax向后台发送数据

    这是我的后台返回给前台的数据: 处理后台返回的数据有一下两种方式: function sethouse_housing_pattern(housing_pattern){ var str=[]; va ...

  9. PySe-001-基础环境配置(MacOX)

    Python 是一种面向对象.解释型计算机程序设计语言,其源代码同样遵循 GPL(GNU General Public License)协议.Python语法简洁而清晰,具有丰富和强大的类库.由于Py ...

  10. php命名空间详解

    index.php: <?php include 'demo.php'; use A\demo as test; use B\demo as test2; use C\demo; $obj = ...