一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

用户状态维护

时间:2022-06-30 11:56:28 编辑:袖梨 来源:一聚教程网

本文是编译稿件,原文出处:http://www.asptoday.com/articles/19990820.htm
   如果你不多加小心,非常相似的情况会发生在web 应用程序上。所以,开发人员需要特别留意可 伸缩性和容错问题,在设计应用程序时应该能够适应未来的发展。维护用户状态是一个应用程序 可伸缩性和容错的组成部分,你在站点设计阶段所做的决定对于将来站点的成功至关重要。
   不对某些类型的状态进行维护,一个web 应用程序是不能存在的。比如,一个在线购物应用程序必须 要记住用户累积的定单,当用户在站点中一页一页地前进时,必须要往他们的购物筐中添加项目。
 HTTP,客户机与所有web应用程序运行的服务器之间的连接,是一种无状态的协议。用户所请求的 每一页都是被独立地处理的。所以web应用程序必须要有一些东西、一些地方来记住用户的信息。
   从用户到达某一页面的时刻开始,到他离开这一页面的时候,在他的活动过程中,活动服务器页 都使用允许用户与web站点之间进行交互作用的Session对象(或者等“租用时间到”后自动放弃 Session)。你只需要赋值:
   Session( "numItems" ) = 3
   Response.Write Session("numItems")
   我相信,Session对象从某些方面说是傻瓜型的,因为它允许各种臃肿的编程---开发人员什么时 候想创建变量都可以,而且没有数据类型的限制。这样一来就很难发现Bug,而且如果有许多人一起做 一个项目的话就更糟糕了。一方面是协助和支持了臃肿编程法,另一方面Session对象还有一个 问题--可伸缩性和容错问题。
   通常,测量一个web 应用程序的方法是用使用一系列的robin DNS在多个web 服务器上维护应用程序, 或使用一个负载平衡路由器来分配从客户端到其中一个web 服务器的请求。但是,一旦用户用web服务器 开始了一个ASP Session ,以后的所有请求就都要回到这个web 服务器,这就是说,如果这个服务器 关机了,用户就丢失了他们的session,如果服务器超载了,性能问题就出现了。有一个解决的办法: 不要使用Session 对象。
   还有其它方法维护用户状态。你可以用隐含结构或表单将它们存储在客户端,但是我想,这样你就需要 一个安全的HTTP或者是冒将用户信息暴露给外界的风险。毕竟你是在客户端和服务器之间移动着多于 必要的数据。
   你可以把Session 数据从应用程序本身转移开,从不同的服务器驱动它。就象数据库负责保持数据一样, 你需要另一种类型的服务器来管理动态数据。你可以有许多个从动态数据服务器驱动的web 服务器和 一个用在容错方面的动态数据服务器的复制品。或许,这个奇妙的动态数据服务器可以在站点服务器 上用Membership 服务器和一个ActiveX User Object (AUO)来执行。有关AUO的介绍可以参考 Active User Objects & The Membership Directory。

热门栏目