作者:dmcm0005 | 来源:互联网 | 2023-10-11 12:51
状态管理概述
1.1 状态管理与数据库
状态管理是你对同一页或不同页的多个请求维护状态和页信息的过程。与所有基于 HTTP 的技术一样,Web 窗体页是无状态的,这意味着它们不自动指示序列中的请求是否全部来自相同的客户端,或者单个浏览器实例是否一直在查看页或站点。此外,到服务器的每一往返过程都将销毁并重新创建页;因此,如果超出了单个页的生命周期,页信息将不存在。比如,我们在代码中声明一个DataSet从数据库获取记录,页面回发(也就是重新请求)后这个DataSet是空的,这就是为什么在ASP.NET应用程序中,甚至在一个页面中需要多次连接数据库获取记录。正是由于这个原因,状态管理对于Web编程来说非常重要,从第一代动态Web编程语言开始就支持多种状态管理以弥补HTTP无状态的不足。
现在的Web应用程序,通常都是数据驱动的,但是在状态处理中,我们应该尽量减少对数据库的依赖,原因如下。
· 数据库是存放在磁盘上的。如果把数据存放在数据库中的话,性能会比较差。
· 很多数据是和用户相关的。如果把数据存放在数据库中的话,我们没有一个唯一的标志来区分哪条记录对应哪个客户端(浏览器)。
· 很多数据是临时的,用户关闭了浏览器这些数据就不再需要了。如果把数据存放在数据库中的话,我们不知道是哪个用户关闭了浏览器,也就不能及时把数据删除。
n 通常来讲,状态管理的作用主要概括为以下几点。
· 指示用户信息,关联浏览器实例。
· 使得页与页之间,请求与请求之间能够共享信息。
· 更为快速的数据存储与读取。
1.2 状态管理的比较参数
ASP.NET提供了很多状态管理机制,各有各的特点。一般来说,我们是在以下几个方面来比较各种状态管理机制:
· 存储的物理位置。比如是存储在客户端还是服务端。
· 存储的类型限制。比如是可以存放任意类型还是仅仅可以存放字符串。
· 状态使用的范围。比如是否可以跨应用程序?是否可以跨用户?是否可以跨页面?
· 存储的大小限制。比如是任意大小还是有一定字节限制。
· 生命周期。什么时候建立?什么时候销毁?
· 安全与性能。比如是否加密存储?是否适合存储大量数据?
· 优点缺点与注意事项。
只有对这些概念有一个清晰的认识后,我们才能灵活使用各种状态管理机制。状态管理是Web应用程序的利器,但是它是一把双刃剑,不合理的使用各种状态管理机制会对整个网站的性能造成很大的影响,甚至使网站瘫痪。因此,使用状态管理的重要原则就是在有必要的时候用,而不能因为方便到处都用。