`
sangei
  • 浏览: 334190 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

JSON-RPC、XML-RPC、SOAP三者的关系(转)

    博客分类:
  • SOA
阅读更多

JSON-RPC规范:http://json-rpc.org/wiki/specification

XML-RPC规范:http://www.xmlrpc.com/spec

SOAP规范:http://www.w3.org/TR/2000/NOTE-SOAP-20000508/#_Toc478383487

参考:http://weblog.masukomi.org/writings/xml-rpc_vs_soap.htm

三者都是为了实现远程过程调用RPC中的消息交换,并且都没有定义传输协议。不过为了更方便在网络中传输,而且由于HTTP的无状态性,都使得HTTP为这三者的常用的传输协议。下面例子也是基于HTTP协议的

XML-RPC和SOAP都是基于XML格式的消息交换:

XML-RPC非常简单,定义了几种基本类型、匿名结构体、匿名数组;

SOAP除了基本类型、命名结构体、命名数组以外,还可以自定义类型,能使用多态的方法调用方式

而JSON-RPC是基于JSON格式的消息交换,JSON比XML更加轻巧,并且非常容易在页面JS中使用,其他特点与XML-RPC类似

下面是使用这几种协议发送请求的例子:

XML-RPC

Xhtml代码
  1. POST /RPC2 HTTP/1.0  
  2. User-Agent: Frontier/5.1.2 (WinNT)  
  3. Host: betty.userland.com  
  4. Content-Type: text/xml  
  5. Content-length: 181  
  6.   
  7.   
  8.   
  9. <?xml version="1.0"?>  
  10. <methodCall>  
  11.    <methodName>examples.getStateName</methodName>  
  12.    <params>  
  13.       <param>  
  14.          <value><i4>41</i4></value>  
  15.          </param>  
  16.       </params>  
  17.    </methodCall>  

SOAP:

Xhtml代码
  1. POST /StockQuote HTTP/1.1  
  2. Host: www.stockquoteserver.com  
  3. Content-Type: text/xml; charset="utf-8"  
  4. Content-Length: nnnn  
  5. SOAPAction: "Some-URI"  
  6.   
  7. <SOAP-ENV:Envelope  
  8.   xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"  
  9.   SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>  
  10.    <SOAP-ENV:Header>  
  11.        <t:Transaction  
  12.            xmlns:t="some-URI"  
  13.            SOAP-ENV:mustUnderstand="1">  
  14.                5  
  15.        </t:Transaction>  
  16.    </SOAP-ENV:Header>  
  17.    <SOAP-ENV:Body>  
  18.        <m:GetLastTradePrice xmlns:m="Some-URI">  
  19.            <symbol>DEF</symbol>  
  20.        </m:GetLastTradePrice>  
  21.    </SOAP-ENV:Body>  
  22. </SOAP-ENV:Envelope>  

JSON:

Javascript代码
  1. --> { "method""echo""params": ["Hello JSON-RPC"], "id": 1}  
  2. <-- { "result""Hello JSON-RPC""error"null"id": 1} 
分享到:
评论

相关推荐

    国人:JSON-RPC之初识

    1. **版本**:标识JSON-RPC的版本,例如`"jsonrpc": "2.0"`。 2. **方法**:表示要调用的远程方法名,例如`"method": "add"`。 3. **参数**:一个JSON数组或对象,传递给远程方法的参数,例如`"params": [1, 2]`。 4...

    json.rar_Soap To json_java webservice json_json rpc SOAP_json we

    标题中的“json.rar_Soap To json_java webservice json_json rpc SOAP_json we”提到了几个关键点: 1. **SOAP to JSON**:SOAP(Simple Object Access Protocol)是一种基于XML的协议,用于在Web上交换结构化和...

    XML-RPC 实现C++和C#交互.docx

    然而,随着JSON的普及和性能优势,现代的远程调用系统更倾向于使用JSON-RPC或者更高级别的协议,如gRPC、SOAP或RESTful API。在实际项目中,选择哪种方式取决于具体的需求、性能要求以及开发团队的熟悉程度。

    javascriptRPC

    然而,由于其复杂性和较大的开销,JavaScript RPC更常使用JSON-RPC或XML-RPC。 **AJAX在JavaScript RPC中的角色** AJAX是实现异步通信的关键技术,它允许网页在不重新加载整个页面的情况下与服务器交换数据并更新...

    dubbo rest rpc相关jar包

    再来看`dubbo-rpc-webservice-2.8.4.jar`,这个组件是Dubbo对Web Services(通常基于SOAP协议)的支持。Web Services是一种标准的跨语言、跨平台的通信方式,通过XML格式传输数据。虽然REST在现代微服务中更受欢迎,...

    RPC的简单实现

    - ** 调用协议 **:定义请求和响应的结构,如SOAP、JSON-RPC或gRPC的protobuf。 **4. RPC的实现方式** - **基于接口的RPC**:如Java的RMI(Remote Method Invocation),通过接口来定义服务。 - **基于HTTP的RPC**...

    Dubbo-RPC分布式服务框架.pptx

    Dubbo-RPC分布式服务框架 Dubbo 是阿里巴巴开发的一个分布式服务框架,每天为2千多个服务提供大于30亿次...5. Webservice – 基于 SOAP 协议的 RPC 框架,支持多种数据类型,例如 XML、JSON 等,适合企业之间的集成。

    33-基于XML的SOAP协议:不要说NBA,请说美国职业篮球联赛1

    【基于XML的SOAP协议】是网络通信中的一种标准协议,主要解决了远程过程调用(RPC)中的诸多问题,尤其在跨平台、跨语言环境下的互操作性方面具有显著优势。SOAP,即Simple Object Access Protocol,它利用XML作为...

    32-RPC协议综述:远在天边,近在眼前1

    RPC(Remote Procedure Call)协议是一种在分布式计算环境中实现程序间通信的技术,它的核心思想是让调用者(客户端)能够像调用本地函数一样去调用远程计算机上的服务(服务端)。RPC协议解决了本地调用与远程调用...

    rpc.rar_rpc

    常见的RPC协议有gRPC、SOAP、XML-RPC、JSON-RPC等。 6. **调用模型(Invocation Model)**:RPC调用可以采用同步或异步模型。同步模型中,客户端等待服务端的响应;异步模型中,客户端发送请求后立即返回,服务端的...

    zend-framework-3-cookbook.pdf

    本书会向读者展示如何使用zend-json-server、zend-xmlrpc和zend-soap分别实现JSON-RPC、XML-RPC和SOAP服务器。 7. 安全性:安全也是本书讨论的一个重点,包括如何使用zend-escaper进行上下文特定的转义,以及如何...

    API协议设计的十种技术0122.pdf

    除了以上提到的,还有诸如 AMF(Action Message Format)、XML-RPC(XML 远程过程调用)、JSON-RPC 以及 MQTT(轻量级发布/订阅消息协议)等。每种都有其特定的应用场景和优缺点。AMF 主要用于 Adobe Flash 应用程序...

    Python库 | djangomodernrpc-0.1.1.tar.gz

    - **多协议支持**:除了XML-RPC和JSON-RPC,djangomodernrpc还可能支持其他协议扩展,如gRPC或SOAP,以便于服务间的通信。 - **权限控制**:可以利用Django的权限系统来限制对RPC方法的访问,确保只有授权的用户或...

    delphi_xml练习

    8. **XML与JSON互转** - 当今API交互中,JSON格式更常用,Delphi提供了TJSONObject和TJSONArray等类进行转换。 - 可以用`SimpleXMLToJSON`和`JSONToSimpleXML`函数在XML与JSON之间进行转换。 9. **性能优化** - ...

    RPC.rar_rpc

    - **协议**:定义了客户端和服务器之间交互的数据格式,如gRPC使用Protobuf,SOAP使用XML。 - **序列化/反序列化**:负责数据在不同进程间传递时的转换。 - **传输层**:负责在网络中传输数据,如TCP/IP协议栈。 - *...

    SOAP协议规范——SOAP详解

    一个基本的SOAP消息包括三部分: - **Envelope(信封)**:定义了消息的边界,并指明消息的版本和包含的内容。 - **Header(头部)**:可选部分,用于携带与消息处理相关的元信息,如认证、路由等。 - **Body...

    axis2开发webservice

    Axis2支持SOAP、RESTful、JSON-RPC等多种WebService协议,能够满足不同的业务需求。 WebService概念 WebService是一种基于网络的分布式系统,允许不同的应用程序之间进行交互和通信。WebService的核心是SOAP协议,...

    递归rpc转化小工具

    - TXT文件通常包含纯文本,而RPC文件则可能包含结构化的数据,如XML或JSON,用于在网络间传递方法调用和参数。 - 转化过程可能涉及解析TXT文件的内容,将其映射到RPC格式的结构,然后写出新的RPC文件。 3. **RPC*...

    实战XML

    - XML-RPC(XML Remote Procedure Call):通过XML实现远程调用的一种简单协议,常用于Web服务。 5. 学习资源 - "实战XML"这本书可能是深入理解XML及其应用的好资料,包括基本概念、实例解析、高级特性等。 - ...

Global site tag (gtag.js) - Google Analytics