首页 > 其他分享 >RPC 和 SOAP 有什么区别?

RPC 和 SOAP 有什么区别?

时间:2022-10-21 13:06:36浏览次数:91  
标签:XML web Web service 区别 RPC SOAP

RPC 和 SOAP 有什么区别?_xml

RPC vs SOAP

无论在商业、政治、人际关系,甚至在拯救生命的过程中,通信在任何领域都是至关重要的。通信被证明最重要的另一个领域是计算机网络。如果没有合适的通信手段,一个典型的服务请求者和服务提供者就无法达成。在互联网领域中,有一个叫做 Web Service 的事物。它主要适用于网络中两台电子设备之间的简单通信。截至目前来讲 Web Service 中最常用的就是 RPC (Remote Procedure Call,远程过程访问,更普遍地被称为 XML-RPC) 和 SOAP (Simple Object Access Protocol,简单对象访问协议)。


为了更好地了解它们两个在计算机世界以及互联网领域的工作机制,XML-RPC 是一种用于通过互联网访问信息的技术。一个很好的例子就是当一个 XML-RPC 消息被传输到目标服务器的时候,通常会使用 HTTP post 请求。


同时,SOAP 是一种用于通过 Web Service 交换结构化信息的协议规范。关于其运作方式的一个例子是 SOAP 消息能够被传输到一个启用 web service 的网站,就像通过需要的参数对一个房地产价格数据库中的查询那样来进行一次查询。作为响应,该网站会将比如价格之类的需要的数据封装到一个 XML 格式的文档里进行返回。所获得的数据可以很轻松地集成进一个第三方的应用或者网站,因为其机器解析格式是已经标准化了的。


如果没有 RPC 和 SOAP 这两者 web service 的话,互联网服务将会非常复杂和难以掌控。尽管如此,这两种 web service 之间还是有一些区别的。


首先,它们的设计理念很明显不一样。SOAP 的结构化架构要比 RPC 复杂的多,它具备通过使用 SOAP 信封进行转换的 XML 消息。另一方面,RPC 使用 XML 对远程过程调用里的参数进行编码和解码,相比 SOAP 来讲,它的架构比较简单。


其次,在 SOAP 中,顺序无关而且过程基本上取的是命名参数。在 XML-RPC 中就完全是另外一回事了。与顺序相关而且过程也不必去取命名参数。


SOAP 被认为是比 RPC 更为强大;SOAP 1.2 规范有 44 页而 RPC 规范只有 6 页。


另外一个值得一提的事情是 SOAP 以数据冗余而知名,但它通常比 RPC 更功能丰富。然而,就 Python 支持而言,在标准库中,RPC 相比 SOAP 来讲得到了更大的支持。


事实上,web service 是很实用的而且在 WWW (World Wide Web,万维网) 中发挥着不可或缺的作用。尽管 (对于 web service) 存在一些批评,尤其是在它们的设计和复杂性方面,但是只要互联网用户还在找到方法来利用这些服务,它们就肯定会继续存在下去。


总结

1. SOAP 的设计比 XML-RPC 要复杂的多。


2. 对于 XML-RPC 来讲,顺序比过程重要。而对 SOAP 来讲则恰恰相反。


3. 就能力而言 SOAP 比 RPC 要强大。


4. RPC 的 Python 支持比 SOAP 强大。


原文链接:

​Difference Between RPC and SOAP​​,发布日期:2011 年 4 月 25 日。


作者简介:Differencebetween.net 网站 "internet" 频道。


Differencebetween.net 不仅仅会帮你去理解一个主题,还能让你弄清楚两个类似话题之间的区别。该网站为你提供各种主题的实时信息。话题涉猎 "商业" 到 "技术" 等不同种类。他们将每个主题的多个可靠资源编辑并统一到一个页面上,读者可以藉此轻松快速搜集到充足感兴趣的信息。如果你对他们的内容有相关建议可以通过他们的联系邮箱 [email protected] 进行反馈。

标签:XML,web,Web,service,区别,RPC,SOAP
From: https://blog.51cto.com/defonds/5782374

相关文章

  • Java 多线程编程之一 进程与线程,并发和并行的区别:吃馒头的比喻
    进程与线程,并发和并行的区别:吃馒头的比喻 没有线程编程的程序好比一个人一只手干活,而多线程的程序就比一个人多之手干活.进程是系统资源分配的独立单位,而线程是可调度......
  • MySQL中value和values的区别
    1.概况value和values都是用于插入数据时的关键字,从单词我们会联想到是不是value用于插入单挑数据,values用于插入多条数据,实际上他们并不是这样的,value可以用于插入单......
  • Python2和Python3的区别
    1.性能Py3.0运行pystonebenchmark的速度比Py2.5慢30%。Guido认为Py3.0有极大的优化空间,在字符串和整形操作上可以取得很好的优化结果。Py3.1性能比Py2.5慢15%,还有很大......
  • 数据标准和数据规范到底有什么区别???
    编 辑:彭文华​彭友们好,我是老彭呀。前两天有个彭友问我:到底数据标准和数据规范有啥区别?这哥们可不是小白,他是十几年的老数据人了,最近在做集团数据管理体系设计,写文档都写到......
  • 枚举与接口常量、类常量有什么区别?
    目录一个简单的需求接口常量类常量枚举什么是枚举?枚举常量限制输入的类型枚举可以使用==来比较吗?枚举实现单例作者:小牛呼噜噜|https://xiaoniuhululu.com计算机内功、......
  • 过滤器和拦截器的区别
    过滤器是基于函数回调,拦截器是基于java的反射机制;过滤器依赖于servlet容器,拦截器不依赖servlet容器;过滤器几乎可以对所有请求起作用,但是拦截器只对action请求起作用;拦......
  • Linux不同发行版本的区别(以安装Linux版本QQ为例)
     安装:当前版本的QQLinux版依赖gtk2.0,安装QQLinux版前请确保你的系统已安装gtk2.0。以下是一些使用命令行安装gtk2.0的例子:sudoaptinstalllibgtk2.0-0#Ubuntusu......
  • 嵌入式-C语言基础:理解形参和实参的区别
    #include<stdio.h>//实参:函数原型中声明函数后面带的参数inttest(intx)//函数原型{//函数体printf("test里面的x地址=%p",&x);returnx;}//变量......
  • MySQL之in和exists的使用和区别
     今天我们说下MySQL中in和exists的用法和区别:  exists表示存在,经常和子查询配合使用。我们来举个例子:mysql>select*fromcourse;+----+----------+|id|name ......
  • HTTP和HTTPS的区别
    httpHTTp什么是HTTP超文本传输协议(HTTP)是万维网的基础,用于使用超文本链接加载网页。HTTP是一种应用层协议,旨在在联网设备之间传输信息,并在网络协议栈的其他层之上......