服务器端状态管理选项

来源:互联网 发布:js 为什么会跨域 编辑:程序博客网 时间:2024/06/06 10:39
 

存储页信息的服务器端选项往往比客户端选项具有更高的安全性,但它们可能使用更多的 Web 服务器资源,这可能在信息存储量较大时导致伸缩性方面的问题。

以下是 ASP.NET 支持的服务器端状态管理选项:

·         应用程序状态

·         会话状态

 

 

应用程序状态

ASP.NET 通过 HttpApplicationState 类将应用程序状态提供为一种存储全局应用程序特定信息(对于整个应用程序都可见)的方法。应用程序状态变量实际上是 ASP.NET 应用程序的全局变量。

 

使用应用程序状态的优点为:

·         实现简单 应用程序状态易于使用,为 ASP 开发人员所熟悉。

·         应用程序范围 由于应用程序状态可供应用程序中的所有页来访问,因此在应用程序状态中存储信息可能意味着仅保留信息的一个副本。

使用应用程序状态的缺点为:

·         数据持续性有限 因为在应用程序状态中存储的全局数据是易失的,所以如果包含这些数据的 Web 服务器进程被损坏(如因服务器崩溃、升级或关闭而损坏),将丢失这些数据。

·         资源要求 应用程序状态需要服务器内存,这可能会影响服务器的性能以及应用程序的可伸缩性。

应用程序状态的精心设计和实现可以提高 Web 应用程序性能。例如,如果将常用的、相关的静态数据集放置到应用程序状态中,则可以通过减少对数据库的数据请求总数来提高站点性能。

 

原则:

由多个会话共享并且不经常更改的数据是插入到应用程序状态变量的理想数据,而且不存在安全性问题,不要在应用程序状态中存储大量的信息

 

 

 

 

 

 

 

 

会话状态

ASP.NET 提供了一种会话状态,该会话状态可作为 HttpSessionState 类或存储会话特定信息(仅在该会话中可见)的方法来使用。ASP.NET 会话状态将一个有限时间窗口内来自同一浏览器的请求标识为一个会话,并在该会话持续期间保留变量的值。

可以在会话状态中存储会话特定的值和对象,该会话状态对象将由服务器来进行管理并可用于浏览器或客户端设备。存储在会话状态变量中的理想数据是特定于单独会话的短期的、敏感的数据。

使用会话状态的优点为:

·         实现简单

·         会话特定的事件 会话管理事件可以由应用程序引发和使用。

·         数据持久性 放置于会话状态变量中的数据可以经受得住 Internet 信息服务 (IIS) 重新启动和辅助进程重新启动,而不丢失会话数据,这是因为这些数据存储在另一个进程空间中。

·         平台可伸缩性 会话状态可在多计算机和多进程配置中使用,因而优化了可伸缩性方案。

·         无需 Cookie 支持 尽管会话状态最常见的用途是与 Cookie 一起向 Web 应用程序提供用户标识功能,但会话状态可用于不支持 HTTP Cookie 的浏览器。但是,使用无 Cookie 的会话状态需要将会话标识符放置在查询字符串中(同样会遇到本主题在查询字符串一节中陈述的安全问题)。

使用会话状态的缺点为:

·         性能注意事项 会话状态变量在被移除或替换前保留在内存中,因而可能降低服务器性能。如果会话状态变量包含诸如大型数据集之类的信息块,则可能会因服务器负荷的增加影响 Web 服务器的性能。

 

原则:

存储特定于单独会话的短期信息,并且需要较高的安全性。不要在会话状态中存储大量的信息。需要注意,将为应用程序中每一会话的生存期创建并维护会话状态对象。在支持许多用户的应用程序中,这可能会占用大量服务器资源并影响可缩放性

原创粉丝点击