ASP.NET中的状态管理

ASP.NET中的状态管理

在这篇文章中,我们将详细了解ASP.NET中的状态管理。

状态管理是什么意思

状态管理是一个过程,通过这个过程,状态和页面信息在对相同或不同页面的多个请求中被维护。由于HTTP是一个无状态协议,服务器不存储任何信息,一旦

响应被送回给客户的请求。当用户再次提交请求时,服务器会将其视为一个新的用户。这被称为无状态模型。这种模式在过去开发和托管静态网站时是可行的。现在,随着交互式网站或动态网站的发展,有必要保留一些信息来识别用户,并在同一会话和同一应用中与用户进行反复的交互。这个概念被称为有状态协议。这些信息可以与用户、数据对象、网页或服务器对象相关。

为了支持这种模式,ASP.NET提供了两种类型的状态管理技术, 服务器端和客户端 ,如图所示。

ASP.NET中的状态管理

服务器端状态管理选项

ASP.NET提供了在服务器端和客户端保存信息的功能。在服务器端状态管理中,有以下选项。

  • 应用程序状态: 应用程序状态允许在应用程序层面保存数据,这些数据在应用程序的整个生命周期内都可以访问。应用程序的生命周期从IIS启动时开始,到IIS停止时结束。
  • 会话状态: 会话状态一直持续到用户处于活动状态或者会话时间过期。当一个用户提交请求时,一个会话就开始了。当时间过期或用户明确放弃会话时,会话就会结束。所需的信息可以保存在会话中,供以后同一用户在同一应用程序中使用。
  • 配置文件属性: 这个选项也允许保存用户的特定数据。它与会话状态类似,只是存储在简介状态下的数据永远不会过期,使用这个属性时,需要配置SQLProfileProvider类。它允许将数据存储在SQL数据库中。由于数据存储在数据库中,而不是在应用程序的内存中,因此,即使IIS被反复重启,也没有丢失数据的风险。
  • 缓存: 缓存是一种技术,经常使用的数据和网页被存储在缓存中,这样就可以避免重复的检索费用。将经常使用的数据存储在缓存中可以确保高可用性,提高性能和可扩展性。Cache是System.Web.Caching Cache类的对象。使用Cache的主要缺点是它不可靠。之前存储在缓存中的数据会自动删除,以满足当前进程的内存需求。

客户端状态管理选项

客户端状态管理中的选项有助于将信息存储在页面或客户端计算机上。在服务器端不存储任何信息。以下是用于客户端状态管理的选项。

  • 视图状态: 视图状态提供了在客户端保存页面和控件值的功能。 后退 是用户对页面的请求,这不是第一次。如果 IsPostBack属性 的值为真,这意味着页面不是第一次被请求。视图的状态可以是在页级,应用级,机器级和控制级。在页面级别的状态管理中,只要用户在当前页面上,信息就会被保留。每当用户提交表单时,页面和控件的当前状态会被哈希成一个字符串并保存在页面的隐藏字段中。如果数据超过 MaxPageStateFieldLength属性 设置的限制,可以使用多个隐藏字段 当页面被发送至服务器时,页面会解析视图状态字符串并恢复信息。这是默认的机制。视图状态可以在任何阶段被禁用。当需要禁用视图状态时,在代码中使用属性 EnableViewState=”false”

为了证明 视图状态 选项的概念,考虑一个ASP.NET项目,每次点击一个按钮,都会显示该按钮被点击的次数。

  • 控制状态: 这是另一个客户端的状态管理选项。当需要存储与Custom控件相关的控制数据时,就会用到它。视图状态可以被禁用,但控制状态不能被禁用。
  • 隐藏字段状态: ASP.NET允许在隐藏字段中存储信息,这是一个服务器控件,可用于在页面级别存储信息。隐藏字段的值与其他控件的值一起被发送到HTTP表单集合。隐藏文件可以在源文件中创建,如下所示。<input type=”hidden” id=”username” name=”username” value=””

这个隐藏字段可以在文件后面的代码中被访问,如下所示。Dim st as String = Request QueryString(“username”)

  • Cookie: Cookie是存储在客户端机器中的少量信息。
  • QueryString: QueryString包含与URL一起发送给服务器的信息。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程