http://lostinet.dns2go.com/sarc/chat.asp

解决方案 »

  1.   

    》》怎么没弄些有特色的功能?
    测试而已
    如果真的要做好的,那么布局也不是这样了>>有时不停的替我发同一句话

    我还不清楚发生这个的原因
      

  2.   

    在我这里好像不会运行,操作有误?
    按发送后没有反应...
    环境:win2000pro+IE6+msxml4.0
      

  3.   

    发言显示有点慢。不过用到了WebService技术, 马上就不一样了, 有机会要好好讨教一番!
      

  4.   

    补充:只是WebService的简单仿制而已。。
      

  5.   

    来拉。hahahah   ...
    不错耶
    呵呵。。
    签名??哪?在哪???
      

  6.   

    来拉。hahahah   ...
    不错耶
    呵呵。。
    签名??哪?在哪???
      

  7.   

    楼上的,人家没让你测功能,是测技术
    我替楼主把这段贴出来算了sarc 是 simple asp remote call 的缩写.意思是简单ASP远程调用。适用场合是内部使用。除了实现远程调用,没有考虑扩展性。
    如果您用ASP,暂时没有往dotNet过度,那么这个是一个折中的方案。或者你已经使用IFRAME,或者手动配置XMLHTTP程序来进行DHTML和服务器间的交互了。
    但是这个过程非常麻烦。如果每做一次,都要写一大堆程序来完成一个功能,那是很辛苦的时。
    所以我决定把XMLHTTP封装起来,成了 SarcClient使用SarcClient,就可以方便地访问服务器上的服务。其过程也不复杂:首先,服务器要有一个定义SARC的ASP程序。
    这个程序需要#include上sarc_begin.asp和sarc_end.asp
    然后根据指定格式配置服务。然后,客户端要使用sarc.js,用 SarcClient 函数取的服务器上的服务。详细情况如下:
    ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
    ┃服务器端 sarcsample.asp --->> function

    ┃ --->> sarc definitions


    ┃ sarc_begin.asp+sarc_end.asp

    ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
    ||
    ||传递SARC的描述XML
    ||
    ||接收SARC请求
    ||
    ||发送SARC结果
    ||
    ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
    ┃客户端 sarc.js --->> SarcClient

    ┃ --->> sarc definitions

    ┃ --->> sc.FuncName



    ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛其工作原理是:
    服务器上已经有了多个函数的定义了。
    用户根据函数,配置 sarc definitions ,使 sarc_begin.asp 能识别函数的定义。自动倒出定义的XML格式。
    客户端使用 : var sc=SarcClient("sarcsample.asp");来对这个定义XML进行解析和处理。
    (请看 http://lostinet.dns2go.com/sarc/sarcsample.asp ,里面就是一系列函数的定义。包括输入和输出)
    其中,sarcsample.asp是GET的形式。sarc_begin.asp接受到GET请求,就把sarc definitions以XML格式返回。
    当SarcClient用xmlhttp接收到sarcsample.asp返回的XML后,就对XML进行解析,然后生成相应的函数。
    如: sc.GetYourIP , sc.GetDateTime调用函数的时候,
    sc.FuncName回根据其参数,生成XML格式的请求,用XMLHTTP发送(POST)到sarcsample.asp。
    sarcsample.asp接收到请求,就把XML请求转成实际的数据,然后调用ASP本身的函数。
    ASP的函数执行完,sarcsample.asp又会把结果转换成XML,送会客户端。
    客户端得到回应后,会把回应的XML转换回本地变量。
    这个过程是: sc.FuncName(var1) 调用函数(ASP函数的代理)

    ==经过SarcClient的数据转换==>> <request>var1</request>   自动转换成XML

    ==由XMLHTTP负责发送出去(POST)==>> sarcsample.asp 接收请求

    ==sarc_begin.asp还原XML数据==>> AspFunction(var1) 调用服务器函数

    ==res=AspFunction(var1),由sarc_begin.asp进行编码==>> <response>res</response> 生成结果==由XMLHTTP接受结果==>> res=sc.FuncName(var1) 得到结果。

    由这个过程可以看到,这个XML是作为低层传输的。用户根本不需要考虑XML具体是怎么做。
    只需要遵守协议,合法调用一个远程函数的代理就可以了。函数的执行有两种方法:同步和异步。
    同步的方法是,直接调用sc.FuncName
    例如
    var ip=sc.GetYourIP();
    那么这个一句,必须等服务器响应完毕后才能返回。
    优点是编程起来非常简单,条理清晰,不过浏览器在这个过程不会响应。
    在调用速度很快的时候,可以直接使用这个方法。异步调用是。
    sc.FuncName.CreateCall(funcCallBack)(param1,...);
    其中FuncName是在服务器上定义了的。CreateCall是固定的名字。
    funcCallBack是接受结果的函数。例如:
    sc.GetYourIP.CreateCall(funcOnIP)();
    function funcOnIP(oCall)
    {
        ip=oCall.GetResult()[0].Value;
    }
    这个过程,就是当sc.GetYourIP.CreateCall(funcOnIP)();一但执行,就立刻发送请求。并且立刻返回。
    一直到服务器响应了,funcOnIP就会执行。
    其中oCall.GetResult()是取返回结果的。因为结果是一个数组,数组元素是一个对象。有Value,Type,Name等属性。更详细的用发,看例子。
    (sarc_begin,sarc_end,sarc.js是负责封装代码的文件。有兴趣的可以看看)