第5章_Web应用的状态管理.pptVIP

  • 18
  • 0
  • 约1.07万字
  • 约 58页
  • 2017-02-22 发布于重庆
  • 举报
第5章_Web应用的状态管理

HTTP协议——“无状态的协议” Web服务器每分钟对上千个用户进行管理的一种方式就是执行所谓的“无状态”连接。只要有一个希望浏览器返回一个页面、图像或其他资源的请求,就发生以下事情: 连接到服务器 告诉服务器想要的页面、图像或其他项 服务器发送请求资源 服务器切断连接,把用户忘得干干净净。 ASP.Net Web Form的“连续”和“有状态”的假象 ASP.NET的设计者们,从实际访问者的角度重新考虑了这一过程:访问者打开一个页面,点击一个按钮,看到新的画面……这一切似乎都是连续的。 状态管理 Web应用本质上是无状态的,如需保存状态则需要做状态管理,状态维护是对同一页或不同页的多个请求维护状态和页信息的过程 ,保持用户信息(状态)的连续性。 状态管理 状态维护技术 视图状态:使用一个或多个隐藏域来保存控件的状态。 控件状态:当开发自定义控件时,保存控件的状态数据。 隐藏域:标准的HTML隐藏域。 Cookie:用于在客户端保存少量的数据。 查询字符串:查询字符串是在页URL的结尾附加的信息。 应用程序状态:用于保存服务器端的全局应用程序信息。 会话状态:保存会话状态信息。 配置文件属性:ASP.NET提供了一个称为配置文件属性的功能,可以保存服务器端的全局应用程序信息。 客户端状态管理 客户端状态管理 不如服务器端状态管理选项安全 不如服务器端管理选项可靠 可存储的信息量可能受到限制 服务器端状态管理 可通过应用程序状态(Application)、会话状态(Session)、配置文件、数据库保存会话状态来实现 Cookie的用途 用户的个人配置 登录和“remember me” 弹出窗口 会话状态是ASP.NET中非常重要的服务器端状态管理技术,同时也是功能很强大的状态管理技术。 会话状态是特定于用户的,当一个用户开始访问Web应用程序时,将会产生一个会话状态。 不同的用户具有不同的会话状态,如果有一万个用户,将会有一万个会话状态。 会话状态在存储与用户相关的信息方面非常有用,如博客登录后就可以使用会话状态存储通过验证的用户信息。 Session_Start事件:通过向Global.asax文件添加一个名为Session_Start的事件过程来处理。如果请求开始一个新会话,Session_Start事件过程会在请求开始时运行。如果请求不包含SessionID值或请求所包含的SessionID属性引用一个已过期的会话,则会开始一个新会话。可以使用Session_Start事件初始化会话变量并跟踪与会话相关的信息。 Session_End事件:通过向Global.asax文件添加一个名为Session_End的事件过程来处理。Session_End事件过程在调用Abandon方法或会话过期时运行。如果超过了某一会话Timeout属性指定的分钟数并且在此期间内没有请求该会话,则该会话过期。 会话状态的利弊 使用会话状态的优点: 实现简单。 会话特定的事件。 数据持久性。 平台可伸缩性。 无需Cookie支持。 可扩展性。 使用会话状态的缺点: 使用会话状态时,要注意其性能问题。 应用程序状态的利弊 使用应用程序状态的优点如下: 实现简单。应用程序状态易于使用,通过键/值对进行存储和访问。 应用程序的范围。由于应用程序状态可供应用程序中的所有页来访问,因此在应用程序状态中存储信息可能意味着仅保留信息的一个副本。 使用应用程序状态的缺点如下: 资源要求。由于应用程序状态存储在内存中,因此比将数据保存到磁盘或数据库中速度更快。但是,在应用程序状态中存储较大的数据块可能会耗尽服务器内存,这会导致服务器将内存分页到磁盘。 易失性。由于应用程序状态存储在服务器内存中,因此每当停止或重新启动应用程序时应用程序状态都将丢失。 * * * * * * * * * * 一种映射,存储键和值的对。例如:可以存储电话号码薄:张三、0890870987;李四、004356344。。。 现在一般不使用HashTable了,使用HashMap来替代。 举个例子: HashMap tel = new HashMap(); tel.put(张三,0890870987); tel.put(李四,004356344); 如果我想知道张三的电话号码,那么就这样: tel.get(张三); 注意:视图状态中只能存储可序列化的对象。 参见第7章/上课示例/ClientStateDemo项目的ViewStateDemo.aspx * 隐藏域中不能存储比较敏感的数据,如果要存必须添加加密和解密代码,因此增加了额外的开销。 * * * CookieDemo.aspx * 比单值的Cookie节省系统开销。一个网站最多20个cookie。 * * * 对域范围的

文档评论(0)

1亿VIP精品文档

相关文档