针对.NET设计师的客户端状态技术

ZDNet软件频道 时间:2003-05-06 作者:BUILDER.COM |  我要评论()
本文关键词:
使用基于客户端的状态管理技术会涉及一些调用之间的信息保存,这些调用是对最终的HTML页面里、HTTP请求里,或者是对客户计算机磁盘缓冲区里的服务器进行的。现在让我们看一下这些状态管理机制的细节,并探讨一下每种机制的一些长处和不足。
本文译自Builder.com,未经许可请勿转载使用基于客户端的状态管理技术会涉及一些调用之间的信息保存,这些调用是对最终的HTML页面里、HTTP请求里,或者是对客户计算机磁盘缓冲区里的服务器进行的。这个服务器本身不会保存(服务器和客户端页面)往返之间的信息,但会把传递给它的客户信息用在每个调用上,用以重建先前页面调用的状态。客户端使用ViewState、隐藏字段、cookie或者查询字符串在服务器调用之间保存和转发状态(信息)。现在让我们看一下这些状态管理机制的细节,并探讨一下每种机制的一些长处和不足。

ViewState:缺省的方式

在缺省情况下,ASP.NET页面会在页面上使用ViewState来保持页面和控件往返之间的属性值。在每个页面被处理的时候,ASP. NET引擎会对页面的当前状态和页面上的每个控件进行散列运算,将结果变成字符串,并把这个字符串放在一个隐藏字段里传递给客户端的浏览器。当客户端把这个页面发布回服务器的时候,ASP.NET会在页面的初始化阶段剖析这个隐藏字段,再把页面和控件的值恢复到先前的状态。

开发人员也能够把他们自己的值保存在ViewState里,这些值回被自动的保存。例如,如果想在往返之间保存一个叫做BackColor的值,你可以在ViewState里创建变量,并像下面这样设置其值:
 
ViewState(“BackColor”) = “Blue”
 
使用ViewState有几个很大的好处:由于它的使用是自动的,所以不需要配置文件来实现。也就是说在缺省状态下,页面和控件的所有状态都是自动维护的。ViewState还是非常安全的,因为所有的值都自动地经过散列运算、压缩和编码,而且标准的隐藏字段是空白的文本。但是ViewState不是万能药。由于ASP.NET将ViewState保存在页面里,所以如果一个页面带有多个控件或者控件带有大量的值(例如,带有几百个数据列的数据格),那么它们就会让页面的载入和发布变得相当地慢。一般来说,你会考虑因为含有大量只读数据的控件而关闭ViewState。

隐藏表格字段:原来的标准

开发人员可能也想选择将页面专用的信息保存在页面上的一个隐藏字段里,以此来维持页面的状态。当浏览器把这个页面提交给服务器的时候,服务器页面会从HTTP表格集合的隐藏字段里提取出隐藏字段的内容以及其他控件的值。许多ASP的实现会把隐藏字段作为维持客户状态的方式,在把原有的应用程序从ASP迁移到ASP.NET的时候,你可以选择继续使用这种方法。

隐藏字段的实现很简单,而且能够得到所有的浏览器和客户端设备的支持。但是使用隐藏字段有一些很明显的缺点。用户只需要简单地查看页面的源代码就能够看到隐藏字段的值。此外,尽管可以将简单的名称-值对保存进隐藏字段里,你还必须为在一个隐藏字段里保存多个值而创建你自己的存储和剖析机制。例如,你可能要实现字符串定界符和字符串剖析机制,从而在一个字段里保存多个值。就和ViewState一样,隐藏字段里大量的值在显示和发布页面的时候会导致其(显示和发布速度)的下降。


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134