WEB(Javascript)远程调用方案清单

javascript|web

  Web远程过程调用(以下简称WebRPC)是在不刷新页面的前提下,对远程方法进行调用,是最近的一个热点;在一些场合下,他甚至成为不可替代的实现方式。WebRPC的实现方式经历了从普通URL读取,隐藏帧,IFrame, XMLHTTP乃至 Flash等。本文将对目前存在的WebRpc方案(产品)进行列表,并作简单评价。

  评价将在以下几个方面进行:客户端实现方式,服务器端实现方式,是否自行封装协议,是否支持序列化/反序列化,序列化支持是否完备(原子类型,对象类型),是否支持异步/同步方式。注意,由于Web方式的远程调用没有得到大规模运用。笔者自己并没有在企业应用中采用WebRPC的经验,但在娱乐应用、在线游戏中,已经得到了相当好的运用。这些应用已经在《面向异步消息的Web应用(AMOWA)》中得到详细论述,有兴趣的可以在产品指南栏目中阅读这篇文章。

  1 MSRS (Microsoft Remote Scripting)

  地址:http://msdn.microsoft.com/library/default.asp?url=/library/en-us/rmscpt/Html/rmscpt1.asp

 

  简介:在网页出现的早期,浏览器功能有限。Applet的出现,为MSRS提供了平台。在这项方案中,MSRS通过一个applet类以及页面上的参数配置,来与服务器端交互,从而实现了远程调用。采用此项技术实际上将页面不刷新的工作交给了一个名为rsproxy.class的不可见Applet完成。我见过早期的在线Web象棋采用此项方案。优点:轻而易举跨浏览器;缺点:服务器端采用微软asp, applet加载缓慢;不支持数据类型序列化/反序列化。

  2 JSRS (Javascript Remote Scripting)

  地址:http://www.blueshoes.org/en/javascript/jsrs/

 

  简介:支持两种数据访问方式:HTTP GET方式(动态加载JS文件),HTTP POST方式(用JS动态创建一个Iframe, 在其中提交一个表单)。不用刷新页面,支持简单数据的序列化/反序列化。

  3 XML-RPC

  地址:http://www.xmlrpc.org/

 

  简介:XML-RPC定义了一种协议规范,由于它的轻量级、概念完整,因此目前绝大多数语言都有实现,包括Java(Apache xml-rpc), PHP, javascript, VBScript, python等等。最大的交流方式Blog协议,管理方法也遵循XML-RPC规范。优点:绝大多数语言都支持,简单,规范。缺点:Java实现对数据类型序列化支持有限

  4 dwr (Direct Web Remoting)

  地址:https://dwr.dev.java.net/

 

  简介:一个在适当时候提出适当概念的小东西。采用xmlhttp传递请求,服务器端利用反射找到相应方法执行后将结果返回。较有创意的是,他将服务器端需要进行远程调用的代码动态转换为相应的js代码,前端可以直接显式调用。简单,可以作为WebRPC学习入门。不支持数据序列化

  5 JSON-RPC

  地址:http://oss.metaparadigm.com/jsonrpc/

 

  简介:采用一种没听说过的数据交换协议JSON(JavaScript Object Notation, http://www.crockford.com/JSON/) 作为协议基础,在此之上进行数据调用,采用xmlhttp发送/接受请求,支持完整的数据序列化/反序列。目前,jason Web框架采用json-rpc为底层方式。

  6 Burlap (http://caucho.com/burlap/index.xtp)

  简介:也许会奇怪,为什么Burlap也能够算得上远程协议。实际上,与Hessian实现方式基本相同的Burlap(前者为二进制,后者为文本), 在协议完整性上能够超过上述任一产品。目前我已经实现了JS调用Burlap服务的代码,是目前所有远程调用方式中最为优雅的实现。

  7 XINS (XML Interface for Network Services)

  地址:http://xins.sourceforge.net/index.html

  简介:按照官方网站的说法,SOA + Java + XML + code_generation - complexity => XINS。这个庞大的东西需要定义一揽子描述文件然后才能在HTML中进行调用。从外观上看,这是最像样子的解决方案。对其了解不多,不做评价。

  8 WebService, SOAP

  简介:除了微软有一个webservice.htc控件,mozilla也有相应的webservice访问方式。因此,在HTML中访问webservice也是可行的。只是这种协议过于笨重,除非必要,没有人会在web客户端中使用。


客户端实现方式


服务器端实现方式


是否自行封装协议


序列化/反序列化


同步方式/异步方式


MSRS


Applet


Microsoft ASP



不支持


同步+异步


JSRS


Iframe/动态加载js


多种,php, java等



不支持


同步


XML-RPC


Xmlhttp等多种方式


绝大多数语言都有支持


XML-RPC


支持,Java实现有限支持,不支持自定义对象


同步+异步


DWR


Xmlhttp


Java



很弱


同步+异步


JSON-RPC


Xmlhttp


Java


JSON


支持


同步+异步


Burlap


Xmlhttp


Java


Burlap


完全支持


同步+异步


XINS


Xmlhttp


Java



支持


同步+异步


WebService


IE采用.htc, mozilla内置支持


不定,遵循webservice规范以及SOAP协议


SOAP


支持,不同的平台上各有扩展


同步+异步

时间: 2024-12-03 07:24:41

WEB(Javascript)远程调用方案清单的相关文章

架构师之路-在Dubbo中开发REST风格的远程调用

概述 dubbo支持多种远程调用方式,例如dubbo RPC(二进制序列化 + tcp协议).http invoker(二进制序列化 + http协议,至少在开源版本没发现对文本序列化的支持).hessian(二进制序列化 + http协议).WebServices (文本序列化 + http协议)等等,但缺乏对当今特别流行的REST风格远程调用(文本序列化 + http协议)的支持. 有鉴于此,我们基于标准的Java REST API--JAX-RS 2.0(Java API for REST

用Flash远程调用增强J2EE表示层

对Macromedia公司的Flash的远程调用使得Java开发者除了JSP(JavaServer Pages)和Swing之外又有了一种全新的方式来构建J2EE(Java 2 Platform, Enterprise Edition)应用. 本文调查了Flash远程调用,解释了为何它有如此作用,并且提供了一个如何实现的例子 在任何多层体系中选择表示层技术时,Java开发者通常有两种选择: JSP或者Swing/AWT(Abstract Windowing Tookit).借助JSP,开发者可以

C#远程调用技术WebService葵花宝典

一.课程介绍 直接开门见山吧,在学习之前阿笨想问大家一句,关于WebService远程过程调用技术(RPC) 你真的会了吗?不要跟老夫扯什么WebService技术已经过时,如果你的内心有在偷偷告诉你其实我是真的不会WebService的话,那么恭喜你,因为你在这茫茫的IT编程世界里找到了这本<C#远程调用技术WebService葵花宝典>!曾经有一位不知名的讲师说过这么一句名言: 一门RPC技术不会,那么千万万门RPC技术将都不会! 本次阿笨的分享课包含以下知识点. 1.C# WebServ

谷歌启用抓取JavaScript,应对方案!

谷歌启用了抓取JavaScript来深入了解网站,这样,如果网站或黑页是加了跳转代码或判断代码,很有可能将会被识别出来.虽然目前只是谷歌启用识别JavaScript文件,但国内搜索引擎很可能也会跟着模仿,毕竟一直是这样的. 现在不确定到底谷歌抓取JavaScript了以后,对JS的跳转有没有影响,但还是建议预防为主,所以这边推荐几个应对方案.其实之前就觉得有可能JS文件被发现,所以当时我们就已经有很多现成的独家技术及代码教程了! 1.隐藏真实JS代码 通过隐藏真实的JS跳转代码,来达到目的,隐藏

从远程调用框架认识Zookeeper

远程调用是系统或进程间的通信机制,是分布式系统开发的核心技术.远程调用技术可以将一组计算机系统形成一个网络系统,对外提供整体服务,那么这一群的计算机系统就构成了一个更大型.性能更高的计算机系统. 远程调用服务的架构设计总述 首先我们要深入理解以下几个问题:为什么应用软件服务里需要一个远程调用服务?远程调用服务解决了软件设计中的什么问题? 笔者曾写过一篇关于分布式网站架构设计的文章, 在文章开头就把这个新的网站架构方案和传统的企业软件的B/S架构作了对比,笔者将一个网站里提供业务服务的组件抽象为独

android javascript:android与javascript相互调用

               下面这一节来介绍android和javascript是怎么相互调用的,这样我们的UI界面设计起来就简单多了,而且UI设计起来也可以跨平台.现在有好多web app前台框架了,比如sencha和jquery mobile等.相信未来随着web app的发展我们同样可以使用html设计出和本地应用一样漂亮的界面.这些虽然很美好,但是现在还有很多弊端,比如比本地框架调用慢的多,因为手机是受限的设备,所以处理起来和反应都是比较慢的,期望未来会有较大的发展.哈哈!      

在ASP.NET Atlas中调用Web Service—批量调用以提高效率

asp.net|web 对于Atlas程序,在某些情况下,我们需要在短时间内调用大量的Web Service,例如某个列表中用户快速的点击删除.这时网络带宽,稳定程度等等往往会造成较长时间的延迟.如果可以将这些调用包装成一个单一的请求,那么用户只需忍受一次网络延迟,即可得到处理的结果,也间接的提高了效率.似乎这并不是一个很容易实现的功能,但幸运的是,Atlas中内建了对批量调用Web Service的支持,您所需要的只是在程序中简单设置一下. Atlas中每个Web Service的调用请求都有

SQL Server 本机 Web 服务的使用方案

server|web 摘要:获得有关如何设置 SQL Server 以便在异类环境中进行 Web 服务访问的详细讨论,并且了解更多有关 SQL Server 中 Web 服务的主要方案的信息. 下载相关的 WebServicePerlScript.exe 代码示例. 简介在 SQL Server 中,我们向数据库引擎中添加了对本机 XML Web 服务的支持.这一功能是围绕众所周知的标准(如 SOAP 1.2 .WSDL 1.1 和 HTTP)设计的.将解决方案建立在这些标准之上,可以在大多数企

如何远程调用Access数据库方法详解

  如何远程调用Access数据库方法详解: 使用了TCP/IP,ADO及XML(需要安装Microsoft XML 4.0.).分服务器和客户端两部分,服务器可以多用户同时连接.远程连接Access数据库有很多方法,我以前已经比较详细的回答过(见下面所列的5种方法),我现在这个例子属于其中的第3种方法(不需要使用RDS或Web服务器). 远程连接access数据库的几个方法: 1.建立VPN(Virtual Private Network),这样你的电脑和主机的连接就与局域网无异,然后把服务器