REMOTE SCRIPTING技术的实现
类别: ASP教程
Remote Scripting (RS)老早以前我就一直在说这个技术名词了,
它到底是个什么东东了,其实RS是一种远程调用你的ASP页面
(当然是调用你指定的URL中的ASP页面了)中的某个函数或者方法
的技术。
该技术主要有三大优点:
I。你能够优化你每次从客户端到服务端的一个来回数据流程
II。你能够在不同的ASP页面中重用(就是多次使用)同一个函数或则方法
III。当你连接到远程的ASP页面时不会刷新你的当前正在浏览的页面
上面是它的三大特点,下面讲讲具体的过程。
RS让你直接调用(或则说建立一个到服务端的连接)
注意,这也是它和RDS的不同的地方,RDS是通过一个类似与代理的机制并且
建立的连接是在一个断开连接的记录集基础上的。
RS在建立这个连接的时候,是不会影响当前所在的ASP页面的。
一旦你建立了这样的一个连接后,你就能够调用任何一个在你的远程页面中
申明为public的函数。然后你可以把调用页面需要的所有数据缓存在本地,
当客户端的页面接受到远程调用函数的返回值后,这些返回值有可能是
一个数组(array),记录集(recordset),字符串(string)
接下来你就可以使用客户端的数据处理技术(例如客户端的JS,DHTML等)来对这些
数据进行处理了。这些数据你完全可以当作好象就是使用客户端的
脚本函数得到的一样。
RS的基本原理:
RS是通过“RS.HTM”(这是一个客户端的模块)和“RS.asp”(这是一个服务端的模块)
来建立一个客户端到服务端的连接的。
当然其中使用了一个后台加入到客户端的Java applet来实现的。
该applet通过HTTP传递你要调用服务端上特定的ASP页面和参数。
而客户端的页面通过调用本地的rs.htm中的函数来进行每次的远程调用申请。
所以了,大家可以想象得到要想使用RS技术的话,那么在你的ASP页面中就必须要
包括这些特定的页面
如何使用RS
一般只要你安装了VI后,就有了所需要的东西了。
主要是下面的三个文件:rsproxy.class, rs.asp, rs.htm.
把它们放到这个目录中wwwroot_ScriptLibrary
客户端的写法:
然后在你想使用RS的页面的最前面包含这几个文件:
<script language="JavaScript"
src="http://YourServer/_ScriptLibrary/rs.htm">
</script>
<script language="JavaScript">
serverURL = "http://YourServer/_ScriptLibrary ";
RSEnableRemoteScripting(serverURL);
</script>
注意其中的serverURL,它必须是你想调用服务端asp的URL地址的全写。
例如:http://YourServer/rsdemo/server.asp
服务端的写法:
还要注意的是你必须要使用JavaScript来写你的远程调用部分(就是服务端的程序)
,因为这些RS函数在服务端都是使用JS写的。 一个通用的写法如下:
\'必须先调用RSDispatch,而且对大小写敏感
<% RSDispatch %>
<SCRIPT RUNAT=SERVER Language=javascript>
<!--#INCLUDE VIRTUAL="/_ScriptLibrary/RS.ASP"-->
ASP远程调用对象的写法很象是在写DHTML的脚本.事实上,它必须要支持一个public_description
对象来描述通用的公共编程接口,并且实现申明所有的方法和属性:
例子如下:
function Description()
{
this.GetEmpInfoAsArray = DoGetData;
}
public_description = new Description ();
function DoGetData(employeeName)
{
//为了能够让RS能够识别你自己写出来的函数,
//你必须要把它们申明成一个固定的名字public_description.
//然后你可以在这个DoGetData中写自己想返回的东西
//在这个例子中将使用SQL字符串和ADO来查询微软给的例子数据库Northwind
//当然你应该给该数据库建立一个叫NW的DSN
aRecs = new Array();
if (rst.RecordCount == 1) {
aRecs[i++] = rst.Fields("EmployeeID").Value
aRecs[i++] = rst.Fields("Title").Value
return aRecs;
}
当然了,你也可以把整个记录集都返回回去。
好了,上面是整个服务端的写法,下面来看看客户端怎么来处理这些返回的数据。
在客户端可以通过一个同步的调用,如果同步调用的话所有结果都会在服务端执行
完毕后返回, 当然也可以通过一个异步的调用,当你一旦调用了服务端的程序后
就马上返回.
这些调用都是通过RS引擎中的RSExecute函数来实现的,
它一共有两个参数,一个是pageURL(就是前面说的asp页面的URL)
另外一个是funcName就是你要调用的函数名。
function RSExecute(pageURL, funcName)
现在我想你一定会困惑了,怎么没有函数需要的输入参数呀?呵呵。
这是因为RSExecute将使用Javascript的arguments对象,它会把该对象中的
所有参数当成你的函数需要的参数打包成一个数组传递给服务端。
co = RSExecute(pageURL, "GetEmpInfoAsArray", empName);
if (co.status == 0)
refreshPage(co);
function refreshPage(co) {
//你想进行的处理可以写在这下面
}
它到底是个什么东东了,其实RS是一种远程调用你的ASP页面
(当然是调用你指定的URL中的ASP页面了)中的某个函数或者方法
的技术。
该技术主要有三大优点:
I。你能够优化你每次从客户端到服务端的一个来回数据流程
II。你能够在不同的ASP页面中重用(就是多次使用)同一个函数或则方法
III。当你连接到远程的ASP页面时不会刷新你的当前正在浏览的页面
上面是它的三大特点,下面讲讲具体的过程。
RS让你直接调用(或则说建立一个到服务端的连接)
注意,这也是它和RDS的不同的地方,RDS是通过一个类似与代理的机制并且
建立的连接是在一个断开连接的记录集基础上的。
RS在建立这个连接的时候,是不会影响当前所在的ASP页面的。
一旦你建立了这样的一个连接后,你就能够调用任何一个在你的远程页面中
申明为public的函数。然后你可以把调用页面需要的所有数据缓存在本地,
当客户端的页面接受到远程调用函数的返回值后,这些返回值有可能是
一个数组(array),记录集(recordset),字符串(string)
接下来你就可以使用客户端的数据处理技术(例如客户端的JS,DHTML等)来对这些
数据进行处理了。这些数据你完全可以当作好象就是使用客户端的
脚本函数得到的一样。
RS的基本原理:
RS是通过“RS.HTM”(这是一个客户端的模块)和“RS.asp”(这是一个服务端的模块)
来建立一个客户端到服务端的连接的。
当然其中使用了一个后台加入到客户端的Java applet来实现的。
该applet通过HTTP传递你要调用服务端上特定的ASP页面和参数。
而客户端的页面通过调用本地的rs.htm中的函数来进行每次的远程调用申请。
所以了,大家可以想象得到要想使用RS技术的话,那么在你的ASP页面中就必须要
包括这些特定的页面
如何使用RS
一般只要你安装了VI后,就有了所需要的东西了。
主要是下面的三个文件:rsproxy.class, rs.asp, rs.htm.
把它们放到这个目录中wwwroot_ScriptLibrary
客户端的写法:
然后在你想使用RS的页面的最前面包含这几个文件:
<script language="JavaScript"
src="http://YourServer/_ScriptLibrary/rs.htm">
</script>
<script language="JavaScript">
serverURL = "http://YourServer/_ScriptLibrary ";
RSEnableRemoteScripting(serverURL);
</script>
注意其中的serverURL,它必须是你想调用服务端asp的URL地址的全写。
例如:http://YourServer/rsdemo/server.asp
服务端的写法:
还要注意的是你必须要使用JavaScript来写你的远程调用部分(就是服务端的程序)
,因为这些RS函数在服务端都是使用JS写的。 一个通用的写法如下:
\'必须先调用RSDispatch,而且对大小写敏感
<% RSDispatch %>
<SCRIPT RUNAT=SERVER Language=javascript>
<!--#INCLUDE VIRTUAL="/_ScriptLibrary/RS.ASP"-->
ASP远程调用对象的写法很象是在写DHTML的脚本.事实上,它必须要支持一个public_description
对象来描述通用的公共编程接口,并且实现申明所有的方法和属性:
例子如下:
function Description()
{
this.GetEmpInfoAsArray = DoGetData;
}
public_description = new Description ();
function DoGetData(employeeName)
{
//为了能够让RS能够识别你自己写出来的函数,
//你必须要把它们申明成一个固定的名字public_description.
//然后你可以在这个DoGetData中写自己想返回的东西
//在这个例子中将使用SQL字符串和ADO来查询微软给的例子数据库Northwind
//当然你应该给该数据库建立一个叫NW的DSN
aRecs = new Array();
if (rst.RecordCount == 1) {
aRecs[i++] = rst.Fields("EmployeeID").Value
aRecs[i++] = rst.Fields("Title").Value
return aRecs;
}
当然了,你也可以把整个记录集都返回回去。
好了,上面是整个服务端的写法,下面来看看客户端怎么来处理这些返回的数据。
在客户端可以通过一个同步的调用,如果同步调用的话所有结果都会在服务端执行
完毕后返回, 当然也可以通过一个异步的调用,当你一旦调用了服务端的程序后
就马上返回.
这些调用都是通过RS引擎中的RSExecute函数来实现的,
它一共有两个参数,一个是pageURL(就是前面说的asp页面的URL)
另外一个是funcName就是你要调用的函数名。
function RSExecute(pageURL, funcName)
现在我想你一定会困惑了,怎么没有函数需要的输入参数呀?呵呵。
这是因为RSExecute将使用Javascript的arguments对象,它会把该对象中的
所有参数当成你的函数需要的参数打包成一个数组传递给服务端。
co = RSExecute(pageURL, "GetEmpInfoAsArray", empName);
if (co.status == 0)
refreshPage(co);
function refreshPage(co) {
//你想进行的处理可以写在这下面
}
- 上一篇: 一套相当实用的加解密字符串的函数
- 下一篇: 用STREAM读文件
-= 资 源 教 程 =-
文 章 搜 索