当前位置:首页 > 网络编程 > WEB编程 > ASP.net >  .NET 世界中的远程脚本

 .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)。
源代码网推荐


源代码网供稿.
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华