学术堂首页 | 文献求助论文范文 | 论文题目 | 参考文献 | 开题报告 | 论文格式 | 摘要提纲 | 论文致谢 | 论文查重 | 论文答辩 | 论文发表 | 期刊杂志 | 论文写作 | 论文PPT
学术堂专业论文学习平台您当前的位置:学术堂 > 计算机论文 > asp论文

如何管理ASP.NET中的页面状态

来源:学术堂 作者:韩老师
发布于:2016-03-10 共4070字

  HTTP协议属于网络应用层协议,适用于分布式超媒体信息系统。在WWW网络中使用HTTP协议,用于网页数据传输。HTTP协议有如下特点:(1)支持C/S(客户/服务器)模式。(2)HTTP协议允许传输任意类型的数据对象,包容性强,数据传输范围广。(3)客户向服务器发出请求,只需传送请求方法、路径。HTTP服务端规模小,通信代价低。(4)HTTP协议规定客户与服务器之间无连接,即每次连接只处理一个请求。服务器处理完成客户请求并收到应答后,连接断开。(5)HTTP协议是无状态协议。无论是客户端还是服务器端对于事务处理都不保存状态信息。

  HTTP协议是一种无状态协议,每次WEB请求后客户端和服务器端就会断开、隔离,不再有联系,服务器内存中无需保存被请求的WEB页面状态。这种架构节省了服务器资源,保证了WEB服务器同时响应千万个并发请求而不会崩溃。但是,这种架构的缺点也是显而易见的:WEB页面状态在很多情况下都非常必要,必须通过其他手段保存WEB请求的信息,并在需要时得到这些数据。针对上述问题,ASP.NET中设计了多种方法维持管理WEB页面状态,适用于解决不同情况下的问题。

  ASP.NET中管理WEB页面状态分成基于客户端的状态管理和基于服务器的状态管理2种形式。基于客户端的状态管理是在网页中或客户端计算机上存储信息,在信息请求数据传输的往返行程中不会在服务器上保存信息。主要技术有视图状态,控件状态,隐藏域,Cookie和查询字符串等。基于服务器的状态管理用于维护服务器上的状态信息,保留状态信息一方面可以减少发送给客户端的通信量,另一方面可能会加重服务器的负担。主要技术有应用程序状态,会话状态,配置文件属性和用户自定义维持等。

  1 视图状态、控件状态和隐藏域

  视图状态指在当前页面隐藏若干字段,通过序列化把状态数据转换成比特流添加到其中,并在页面回发过程中保持。

  ASP.NET中使用视图状态在请求WEB页面与服务器回发间保存属性值,并于回发后在当前页面将其恢复。视图状态是一种轻量级的状态管理方法,数据隐藏在页面中,而不用消耗有限的服务器资源,不会给服务器增加额外负担。

  视图状态是单个页面保存信息的最佳选择,并且ASP.NET中WEB控件也使用视图状态在回发间保存属性值。视图状态的局限是状态数据和特定页面捆绑,当页面转换时,这些数据会丢失;默认视图状态数据并不是加密的,并不安全。如果选择加密,每次回发WEB服务器都需要加密和解密,这会占用大量服务器资源;另外,如果保存的状态数据非常多,就会减慢网络传送速度。去除非必要的视图状态可以减少页面传输时间,ASP.NET中的ViewStateMode属性可以禁用整个页面的视图状态,也可以为只为需要视图状态的控件开启视图状态。C#中可以设置:Page.EnableViewState=false关闭视图状态。如果页面隐藏字段中数据量过多,有些防火墙可能禁止访问此页面。视图状态分块可以避免这一问题。

  有时网页中控件需要按顺序存储状态数据,为了保证控件正确运行,该控件需要保持某些必须的数据,视图状态可以解决这一问题,但视图状态是可以被关闭的。一旦视图状态关闭,就无法保证该控件正常运行。ASP.NET中控件状态可以维持某个控件的属性信息,但是不能像视图状态那样被关闭,从而能够保证页面控件按预期运行。控件状态只适用于服务器控件,不能用于普通Web页面控件,并且要开发人员编写少量代码进行维护。

  使用控件状态的主要步骤为:(1)注册需要维持信息的控件(调用Page.RegisterRequiresControlState方法)。(2)保存状态数据(重写SaveControlState方法)。(3)加载保存后的状态数据(重写LoadControlState方法)。控件状态使用的服务器资源较少,性能可靠,又比较灵活,不过控件状态是一个自定义的状态保持机制,开发人员需要编写代码来控制保存和加载控件状态。

  隐藏域指在页面中加入隐藏控件,向服务器发出请求时,数据赋值给该控件并提交到下一页面,从而实现了数据在页面之间传递,保存了页面状态。在隐藏域保存数据即对控件value属性赋值,取出数值即得到控件value属性值。Web页面中其它普通控件设置隐藏后也可以得到类似功能,但是隐藏域中保存的数据不会直接显示页面可视化设计视图中,用户根本看不到相关内容。这样,在传递不想让用户关心的数据时,隐藏域更合情合理。

  在ASP与ASP.NET中,隐藏域都可以保存页面信息,作为维护页面状态的一种技术。隐藏域是标准HTML控件,实现简单不需要复杂编程,并且仅在页面上存储和读取,不需要动用服务器资源。但是隐藏域安全性不高,如果存储了较多值,会导致性能下降,并且隐藏域可以存储的数据结构较少,仅仅支持简单的数据结构。所以,往往在仅需要传递少量简单数据时使用隐藏域。

  2 查询字符串和COOKIE

  查询字符串指URL中使用简单字符串在页面间传递信息。

  这是一种轻量级的页面状态管理方法,仅仅传递简单字符串,并不会加重服务器负担。查询字符串需开发者自行放置字符串信息,但是很容易在页面间传送。例如,可以使用查询字符串将商品的ID从介绍页面传递到购物车界面,保存购物商品的信息;搜索引擎在查询时,根据查询内容重定向一个新的URL.查询字符串的局限在于,字符串数据长度有限制,传递数据量很少,并仅限于简单字符串;用户输入新的URL或关闭浏览器时查询字符串会丢失;页面状态信息传递仅限于当面页面到目标页面,且传递内容是明文,容易被用户篡改。

  COOKIE是由服务器端生成的一组信息数据,由服务器端发送给客户端浏览器。浏览器将COOKIE保存到本地磁盘某个目录下的文本文件中。COOKIE是在用户硬盘上创建的文件,保存WEB应用程序中少量的页面状态信息,一般是简单的字符串数据。同一COOKIE可以被多个页面使用并可以被不同时间多次访问。

  例如,可以把登录页面的用户名密码保存到COOKIE中,下次用户请求页面时自动填充上去,以节省用户的输入操作。

  COOKIE的局限在于,数据由开发人员设置,保存在客户计算机上。这样,数据很容易被用户修改,很不安全;且保存数据量很少,不适合保存复杂或大量的数据。用户也可以自己设定关闭或启用COOKIE,这就给开发人员带来一些不确定因素。页面状态一般不完全依赖COOKIE工作。

  3 会话状态和应用程序状态

  会话状态即SESSION,可以在一个页面保存信息而在另外页面使用这些信息,实现复杂状态信息的跨页传递,保存信息支持包括字符串在内的自定义复杂数据类型。会话状态对当前用户而言,在整个应用程序中可见,是跨页面保存信息的较佳方法。会话状态信息一段时间没有激活就会超时丢失,且数据保存在服务器端,非常安全。例如,用户成功登录后,可以用SESSION记录下用户ID,方便以后购物结算使用。

  会话状态的局限在于,每次提出新的请求时,ASP.NET都会产生一个新的会话ID并需要跟踪会话信息。每个客户端都有不同的会话并且包含不同的信息,状态信息会占用WEB服务器的资源,数据量越大、访问用户越多占用资源越多。

  应用程序状态中保存可以被所有客户端访问的全局对象。与会话状态相似,都在服务器上保存信息并使用相同的语法。因为状态数据不会被传送到客户端,所以非常安全。例如,可以在应用程序状态中保存页面访问计数器,记录所有访问此页面的客户信息。

  应用程序状态的局限在于,自WEB程序运行始,状态数据不会超时过期,一直到应用程序关闭。存储大量数据会导致服务器性能显着下降,有大量访问时更突出。应用程序状态效率不高,不太经常使用,经常被改写的数据更不应该放在其中。

  4 配置文件属性

  ASP.NET中配置文件属性的功能可以存储维持特定访问用户的数据。用户访问页面,可以根据已存储的数据向用户显示个性化网页版本。个性化的网页可能需要许多的数据,并且个性化网页是针对用户个人的,必须使用唯一的用户标识存储信息,以便用户访问时识别用户。如果访问用户过多,所需数据将是海量的。会话状态可以实现类似功能,但是在用户的会话过期后,会话状态就会丢失,配置文件数据却是永久保存的,并且与某个特定用户关联。开发人员也可以自己创建和维护用户数据数据库,这需要复杂的代码表示逻辑关系,配置文件属性提供一项通用存储功能可以存储任何类型的对象数据来管理用户信息,并且可以在应用程序的任何位置访问使用用户信息。

  使用配置文件属性,首先对Web应用程序的配置文件提供程序进行配置。ASP.NET中SqlProfileProvider类负责将配置文件数据存储到数据库,该类是执行存储和检索配置文件数据等任务的基础类。在Web应用程序中,可以直接把要存储的值赋值给配置文件属性,不需要确定当前用户身份,无需显式执行任何数据库查找,配置文件功能对开发人员是透明的,会智能地解决这些问题。配置文件功能只须获取特定属性值,根据属性值标识当前用户,并执行数据查询及保存操作。开发人员也可以创建自己的配置文件提供程序类,用XML文件等自定义格式将配置文件数据存储到自定义存储机制中。

  5 自定义页面状态管理

  ASP.NET中可以使用服务器资源来存储状态信息,自行编写代码进行状态管理。自定义状态管理灵活性较好,并可以保存大量有用数据,典型的应用是使用服务器端数据库来保存数据。例如,网站购物车中信息可以写入数据库,永久保存,在页面转换或用户再次登录时读取数据库,再次显示到购物车中。

  自定义页面状态管理的局限是连接数据库并从中读写数据要占用服务器资源并消耗网络传输时间,通常会降低一些性能;而额外的代码编写会增加开发WEB程序的复杂度。

  6 结语

  WEB请求产生的信息有些是用户相关的,有些是WEB应用程序全局的,而ASP.NET使用非连接架构,需要显式保存和读取这些信息。本质上,页面状态管理是在WEB请求之间保存信息的技术。ASP.NET为状态管理提供了多种选择,各种状态管理方法对WEB应用程序的性能和安全影响各异。ASP.NET中不同的状态管理又是互补的,可以在一个WEB应用程序中结合使用。程序员可以根据处理数据需要的性能和安全性进行合适的选择。

  [参考文献]

  [1]Matthew MacDonald(美)。ASP.NET 4高级程序设计[M].4版。北京:人民邮电出版社,2011.
  [2]王红霞。利用ASP.Net技术实现基于B/S模式的通用查询[J].计算机工程与设计,2004(5)。
  [3]毛德祥。基于ASP.net技术的Web应用程序三层设计模型[J].微型电脑应用,2002(3)。

相关标签:asp毕业论文
  • 报警平台
  • 网络监察
  • 备案信息
  • 举报中心
  • 传播文明
  • 诚信网站