remote script文档(转载自微软)(一)

时间:2021-05-22

文档:远程执行服务器脚本

复杂的Web应用程序既调用客户脚本又调用服务器脚本。客户脚本经常用于对应用程序的用户接口进行编程──例如,为了动态改变Web页文本,对用户动作,比如双击作出反应,并执行诸如验证这样的面向客户的任务。客户脚本在浏览器中局部执行,这样就向用户提供了一种生动的、反应迅速的接口。

对比来说,服务器脚本是用来对某个应用程序的末段编程的。这经常引起对某个数据库的存取动作,或者执行中间层业务逻辑。服务器脚本也用于创建较大范围的应用程序:也就是可能通过多种不同类型的浏览器(每个都有不同存取能力)进行存取的应用程序。

但是客户和服务器脚本是互斥的。当某个页首次请求时,服务器可能运行服务器脚本,并将页传递给浏览器,然后浏览器就可以运行客户脚本。不过,如果该页上的服务器脚本有必要再次运行的话,那么必须将该页提交回服务器,服务器可以有效地重新运行该页。对页面上控件状态和脚本中值的维护可能涉及到在浏览器和服务器之间来回传递信息的一个复杂的scripting过程。另外,客户和服务器之间的折返过程涉及到显示某个应用程序的重载过程。

一种折衷方案是remotescripting。Remotescripting使得用户可以在客户脚本中工作,但要调用某个ASP页中的方法(函数或者例程)。实际上,用户可以象调用本地例程那样调用服务器脚本,不过它们仍然运行在服务器上,并具有对服务器能力的所有存取权限。由于用户从不把当前页留作调用服务器脚本之用,因此页的状态仍然保持。

用户可以在下列任务中使用remotescripting:

当用户继续和某个数据输入表单交互作用时,服务器上的数据检查和数据验证。


更新来自服务器的页面中的信息而无须刷新屏幕。
RemoteScripting如何工作

Remotescripting是作为一个函数库来实现的,当用户希望运行某个服务器方法时,用户从客户脚本中调用这些函数。当用户调用某种服务器方法时,请求即被传递到浏览器中异步运行的一个代理过程中(在实现过程中,代理是作为一个Javaapplet来实现的。)该代理过程发送一个请求到包含用户调用方法的ASP页的服务器中。

服务器加载ASP页,而且该ASP页上的一个特殊例程将用户的请求调度到正确函数。如果方法有返回值,那么该值即被发送回代理过程,该过程将之包装为一个对象──一个调用对象──它包含了返回值以及其他有用信息的属性。

当用户在客户脚本中对服务器方法进行调用时,可以在两种方式中选择其一来完成:

同步用户脚本调用远程过程,并等待其返回。如果用户在处理之前需要远程过程结果的话,那么就有必要这么做。


异步用户脚本对某个远程脚本进行调用,然后继续处理。该页保持有效状态,以便于用户处理。如果某个调用要持续较长一段时间,那么就有必要使用异步调用。
RemoteScripting的部件
为了实现remotescripting,除了用户自己的客户(.htm)文件和服务器(.asp)文件外,还需要下面的文件:

Rs.htm包含了用户在自己的.htm文件中初始化remotescripting、执行远程过程、检查远程调用状态,以及获得方法结果时所要使用的方法。


Rs.asp包含了用户在.asp文件中初始化服务器端的remotescripting,以及在自己的页中调度到适当函数时所要调用的方法。


Rsproxy.class包含客户和服务器页之间通信时applet的Java类文件(对象代码)。
这些文件充当用户可以在自己的文件中使用的文件库。一般说来,用户只需要简单地将相关文件(Rs.htm或者Rs.asp)包括进自己的客户或者服务器页中,然后遵照所需调用方法进行处理。有关详细信息,请参阅在客户页中使得RemoteScripting有效以及在服务器页中使得RemoteScripting有效。

在用户的客户页中,用户引用Rs.htm,这使得该文件中的方法对于用户服务器脚本来说是有效的。对Rsproxyapplet的调用就在这些方法中。当用户创建服务器页的时候,用户将服务器端的一个INCLUDE语句─该语句引用Rs.asp文件─包括进去。伴随客户文件中的Rs.htm,这样做使得所需要的方法在服务器页上成为有效的。

所有文件都必须在服务器上是有效的。用户可以将它们放置到任何合适的地方。不过,对于用户的客户和服务器文件来说,当它们从服务器发出请求时,路径都必须是有效的。缺省的情况是,remotescripting过程假设这些文件在用户服务器或者工程的虚拟根目录外的一个名为_ScriptLibrary的文件夹中是有效的。如果用户不将它们放到那里,那么要特别注意它们的路径,因为在创建客户和服务器页时,用户需要指定之。

RemoteScripting和安全性
Remotescripting提供和Javaapplet或IFrames同样级别的安全性。为了确保remotescripting不违反服务器安全性,用户不能将结构化数据(包括对象)作为参数传递给某个服务器文本来执行。另外,用户进行remotescripting调用的服务器必须和用户请求包含该请求的客户页的服务器是同一个。

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章