.NET 世界中的远程脚本
点击次数:27 次 发布日期:2008-11-26 09:51:09 作者:源代码网
|
源代码网推荐 以前在开发ASP程序时,根据客户的要求,不能使用刷新页面要对数据进行更新。就使用当时比较新的方法(Microsoft Remote Scripting)。还记得那个 Rs.asp文件吗?呵呵,我们来回顾一下老的调用方法: 源代码网推荐 有三个文件: 源代码网推荐 Rs.asp :在服务器端进行引用,来完成服务器端的初始化工作 源代码网推荐 Rs.Htm :其实它是一个JavaScript 脚本文件,使用完成请求分析数据 源代码网推荐 Rsproxy.class :是一个Java 小程序,就是通过它来完成客户端与服务端的通信 源代码网推荐 -------- 服务端文件 Server.asp---- 源代码网推荐 <%@ LANGUAGE=VBSCRIPT %> 源代码网推荐 <!--#include file="_ScriptLibrary/rs.asp"--> //必须要包含这个文件 源代码网推荐 <% RSDispatch %> //对 Remote Scripting 进行初始化,必须第一个调用 源代码网推荐 <SCRIPT Language=JavaScript RUNAT=SERVER> 源代码网推荐 function Description(){ 源代码网推荐 this.myFunction = myFunction; //暴露myFunction函数 源代码网推荐 } 源代码网推荐 public_description = new Description(); 源代码网推荐 function myFunction(strInput, numLength) //在这里实现这个myFunction 函数 源代码网推荐 { 源代码网推荐 var objConn = Server.CreateObject("ADODB.Connection"); 源代码网推荐 objConn.Open("dsn=pubs;uid=sa;pwd=;Network=DBMSSOCN"); 源代码网推荐 var objRS = Server.CreateObject("ADODB.Recordset"); 源代码网推荐 objRS.MaxRecords = numLength; 源代码网推荐 objRS.Open("SELECT au_lname, au_fname FROM Authors Where (au_lname + ", " + au_fname) >= "" + strInput + "" ORDER BY au_lname,au_fname", objConn, 0, 3); 源代码网推荐 var tmpMsg = new String; 源代码网推荐 tmpMsg.value = ""; 源代码网推荐 while (!objRS.EOF){ 源代码网推荐 tmpMsg.value = tmpMsg.value + objRS("au_lname") + ", " + objRS("au_fname") + ":"; 源代码网推荐 objRS.MoveNext(); 源代码网推荐 } 源代码网推荐 objConn.Close(); 源代码网推荐 return tmpMsg.value; 源代码网推荐 } 源代码网推荐 </SCRIPT> 源代码网推荐 --------------客户端 RSClient.HTM ------ 源代码网推荐 <HTML> 源代码网推荐 <HEAD> 源代码网推荐 <META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0"> 源代码网推荐 <TITLE>Servin" It Up with Remote Scripting</TITLE> 源代码网推荐 <BODY onload="refresh_list()"> //当页面载入时调用函数 refresh_list() 源代码网推荐 <SCRIPT Language="JavaScript" src="http://www.zzchn.com/edu/20080727/_ScriptLibrary/rs.htm"> //这是客户端必须的引入 源代码网推荐 </SCRIPT> 源代码网推荐 <H2>Address Book Sample</H2> 源代码网推荐 <FORM id=form1 name=form1> 源代码网推荐 <INPUT type="text" size="50" id=Myname name=MyName onkeyup=refresh_list()><br> 源代码网推荐 <SELECT id=NameList name=NameList size=10> 源代码网推荐 - One Moment Please -----</SELECT> 源代码网推荐 </FORM> 源代码网推荐 <SCRIPT LANGUAGE=javascript> 源代码网推荐 <!-- 源代码网推荐 RSEnableRemoteScripting(); //初始化客户端脚本,建立连接对象 源代码网推荐 function refresh_list(){ 源代码网推荐 var serverURL = "server.asp"; //服务器端文件 源代码网推荐 var DisplayLength = 10 源代码网推荐 document.form1.NameList.length = 0 源代码网推荐 document.form1.NameList.length = DisplayLength 源代码网推荐 var inValue = document.form1.MyName.value; 源代码网推荐 var myVar = RSExecute(serverURL, "myFunction", inValue, DisplayLength);//进行远程调用 源代码网推荐 var myArray = myVar.return_value.split(":"); //返回值只能是String类型 源代码网推荐 for (i = 0; i < 10; i++){ //下面对得到的数据进行分析 源代码网推荐 var myOpt = new Option 源代码网推荐 myOpt.value = myArray[i]; 源代码网推荐 myOpt.text = myArray[i]; 源代码网推荐 if (i < myArray.length){ 源代码网推荐 document.form1.NameList.options[i] = myOpt; 源代码网推荐 } 源代码网推荐 } 源代码网推荐 document.form1.NameList.options[0].selected = true; 源代码网推荐 } 源代码网推荐 //--> 源代码网推荐 </SCRIPT> 源代码网推荐 </BODY> 源代码网推荐 </HTML> 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 这就是完整的RemoteScripting 的调用过程,不过有两个非常不好的地方那就是。RS使用的是 HTTP Get方法来进行数据传送。这样有了一个2K的数据限止。也就是说你的参数总的长度不能超过2K。还有一个不好是客户端必须有JVM运行机。在Windows XP 中系统已经不是默认安装了,所以会出现无法运行的问题。 源代码网推荐 而下用使用Web Service 就已经很好地解决了这些方面的问题。 源代码网推荐 源代码网推荐 在Web Service只用到了一个Web Service 服务和一个 webservice.htc 文件 源代码网推荐 先我们创建一个 Web Service ,利用VS.net 很容易就能完成。 源代码网推荐 -----------Web 服务 WebServiceTest.asmx------ 源代码网推荐 using System; 源代码网推荐 using System.Web.Services; 源代码网推荐 public class Service1 : System.Web.Services.WebService 源代码网推荐 { 源代码网推荐 [WebMethod] 源代码网推荐 public string HelloWorld() 源代码网推荐 { 源代码网推荐 return "Hello World"; 源代码网推荐 } 源代码网推荐 } 源代码网推荐 -----------客户端文件 Client.html--- 源代码网推荐 <HTML> 源代码网推荐 <Body> 源代码网推荐 <div id="displayHello"></div> 源代码网推荐 <div id=service style="BEHAVIOR: url(webservice.htc)"></div> //这是引入JavaScript库 源代码网推荐 <script language="JavaScript"> 源代码网推荐 service.useService("WebServiceTest.asmx?WSDL","svrHelloWorld"); //创建svrHelloWorld属性 源代码网推荐 //在 WebServiceTest Web 服务上调用 HelloWorld 方法 源代码网推荐 var iCallID = service.svrHelloWorld.callService(showHelloWorld,"HelloWorld"); 源代码网推荐 function showHelloWorld(result){ 源代码网推荐 //显示Hello World 源代码网推荐 displayHello.innerHTML = result.value; 源代码网推荐 } 源代码网推荐 </script> 源代码网推荐 </Body> 源代码网推荐 </HTML> 源代码网推荐 源代码网推荐 因为Web Service能够使用HTTP POST方法,那就没有了2K的限止。因为使用的是XML,支持通过浏览器通信,所以不需要数据传送层。当然也可以很容易地通过防火墙。完美的Web 程序就是这样建立起来的。:) 源代码网推荐 做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。 源代码网推荐 源代码网供稿. |
