对话管理服务管理用户请求并维护状态信息。该服务由5种对象组成:request、client、project、server和lock。为了理解这些对象,你需要明白当它们在运行环境创建后是如何工作的。
Request是对话管理对象中最短命的,仅在一个用户请求的期间存在。一般情况下,客户请求发生在输入一个URL地址或点击了链接。你可以利用request来检查客户请求中的内容,比如一个表中的数据,或者查看该用户或其请求的信息,比如该用户使用的浏览器类型。
管理用户对话和维护状态信息,你将依靠client对象。Client对象在不同的请求中维护该用户特定的信息。尽管许多不同用户可以同时访问同一个应用程序,每个用户对于该应用程序具有一个client对象。更进一步,用户通常拥有不同应用程序的不同client对象——即使那些应用程序运行于同一台服务器。你可以使用client来保存用户的喜好,比如色彩、字体设置,或用户的帐户信息,比如用户名、密码和帐号。
运行引擎对每个请求创建或消除client对象。运行引擎通过清除目前不使用的client对象来节约系统资源,尤其是内存。你如果不借助cookie或URL解码等技巧是无法重新装入一个client对象的。
你经常需要在客户端和应用程序间传送信息。你可以用project和server对象完成该工作。Project保持一个被许多客户端访问的特定程序的状态,Sever对象保持一个运行多个程序的服务器的状态。这些对象时常会同Lock对象关联使用,使你控制对某部分代码的访问。
你可以利用project对象跟踪某个应用程序的任何属性或值。应用程序管理员可能需要获得目前使用状况的简要,比如目前用户数或每小时的平均事物处理。Project也可以处理在线聊天系统需要的用户间实时的交互。
当你每次打开一个应用程序时都生成一个新的project对象,并且在该应用程序停止或重新启动时这个对象都被销毁。由于一台服务器可以同时运行多个应用程序的实例,每个实例具有自己的project对象。
对象server使应用程序之间可以共享信息。比如,当一位用户从一个应用程序转向另外一个时,server可以将该用户的偏好信息和登录信息传递过去。对象server是在服务器进程启动时建立,停止时销毁。所有使用同一服务器进程的应用程序共享一个server对象。如果一台主机在不同端口运行不同的服务器进程则会有多个server对象。这些对象将分别对特定的进程和端口负责。比如,一个服务器进程使用端口80,它将具有一个同使用端口8080的服务器进程不同的server对象。
Netscape的服务器提供JavaScript程序运行的多线程环境。尽管多线程提高了处理速度和性能,它仍有可能在特定时间内由于进程控制某个应用程序的对象和属性而导致冲突。为避免该事件,应用程序应该控制对其project和server对象的访问。该应用程序可以使用显式的锁或Lock对象实例。
使用显式锁时,调用各自的Lock()方法即可将project和server对象锁住。Lock()方法阻止对该对象的访问,直到调用unlock()。不幸的是,这里没有超时机制,因此用户可能被一直锁住。正因为如此,你可能会想到建立Lock的实例。使用Lock,你不仅控制对某段代码的访问,而且可以控制该锁的持续时间和其影响的对象和属性。
上一页 | 下一页 |
看看LiveConnect是如何工作 | 文件和邮件服务 |