轻量级跨平台消息传递协议XML-RPC深度解析

前端之家收集整理的这篇文章主要介绍了轻量级跨平台消息传递协议XML-RPC深度解析前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

一、引言

实现跨平台通信的协议主要有简单对象访问协议(Simple Object Access Protocol,SOAP)、代表性状态传输(Representational State Transfer,REST)以及 XML 远程过程调用协议(XML Remote Procedure Call,XML-RPC)等。

二、为什么选择 XML-RPC?

集成 C/C++ 的挑战可以通过多种方式加以解决。C/C++ 代码集成的典型方法包括通过公共对象请求代理体系结构(Common Object Request Broker Architecture,CORBA)、分布式组件对象模型(Distributed Component Object Model,DCOM)、远程方法调用(Remote Method Invocation,RMI)Internet ORB互联协议(Internet Inter-ORB Protocol,IIOP)以及 Java™ 本机接口(Java™ Native Interface,JNI)等进行集成。

图 1 显示了利用现有 C++ 代码集成(使用上面提到的典型方法)的采用不同编程语言(Java、VC++、PL/1)开发的三个不同应用程序。

图 1. 没有 XML-RPC 的当前方案

正如您看到的,C++ 代码应为每个 RMI/IIOP/JNI、CORBA 和 DCOM 客户端集成技术公开相应的接口。这就要求进行三次开发工作,显然会使部署和管理此类复杂接口的过程变得更为困难和麻烦。

在这些情况下,XML-RPC 是一个更好的选择,因为它可能帮助简化开发、部署和管理工作。

关于 XML-RPC 和 REST

XML-RPC 是 UserLand Software 的 Dave Winer 于 1998 年提出的。请访问Dave Winer 的博客,以了解他关于 XML-RPC 的最初想法。

REST 最初是由 Roy Thomas Fielding 作为其在加州大学尔湾分校的博士论文的一部分提出的。

图 2. 使用 XML-RPC

图 2 显示了如何使用 XML over HTTP 通过远程过程调用调用 C++ 程序。SOAP 和 REST 等备选技术也能用于相同的目的。不过,您将在下一部分中了解到,这些技术之间存在一些关键区别。

三、SOAP、XML-RPC 及 REST 间的对比

尽管这三个协议都支持 XML-RPC over HTTP,但就 C++ 而言,它们彼此之间是有区别的。表 1 提供了这些协议的各个元素间详细的比较。

表 1. SOAP、XML-RPC 及 REST 间的对比
SOAP XML-RPC REST
定义 SOAP 是用于在分散的分布式环境中进行信息交换的轻量级协议。该协议基于 XML,包括三个部分:信封、一组编码规则以及用于表示远程过程调用和响应的约定。 这是使用 HTTP 作为传输协议和使用 XML 作为编码方式的远程过程调用。XML-RPC 的设计力求简单,并同时允许传输、处理和返回复杂数据结构。 代表性状态传输旨在反映设计良好的 Web 应用程序的行为图像:由网页组成的网络,其中用户通过选择链接继续进行使用,选择链接将导致将下一页传输给用户并进行呈现,以供其使用。
目标 SOAP 可实现用户定义的数据类型,提供指定接收者的功能、消息特定的处理控制以及其他功能,从而对 XML-RPC 进行了扩展。 非常简单且条理清楚的可扩展格式。HTML 编码人员应该能够查看包含 XML-RPC 过程调用文件,理解其进行的工作,并能够对其进行修改,只需一两次尝试就能使其正常工作。此协议非常容易实现,可以快速对其进行调整,以在其他环境或其他操作系统上运行。 创建 REST 的目的是为了提供有关 Web 应该如何运行的设计模式,并作为 Web 标准和设计 Web 服务的指导框架。
支持的数据类型 整数、Boolean、ASCII 字符串、双精度带符号浮点数、日期时间、结构、数组、字节数组、枚举、用户定义数据类型、多态访问器 整数、Boolean、ASCII 字符串、双精度带符号浮点数、日期时间、结构、数组。 特定于实现。通常支持的类型有整数、Boolean、ASCII 字符串、双精度带符号浮点数、日期时间、集合、列表、属性
简单性 比 XML-RPC 略微复杂 易于理解和进行开发 特定于实现
稳定性 W3C 接受的标准 不是标准 体系结构参考。不需要标准
互操作性 无法与 REST/XML-RPC 互操作 无法与 REST/SOAP 互操作 无法与 SOAP/XML-RPC 互操作
工具 很多主要公司(包括 IBM 和 Microsoft)均已开始在其工具中支持 SOAP。 工具仍在开发中。 并没有很多工具支持
自定义能力 高度可自定义,不受数据类型和协议限制 轻量级,只能在 HTTP 上工作,具有有限的数据类型支持 只能在 HTTP 上工作
有很多开放源代码库可用。 有很多开放源代码库可用。将在下面的部分进行说明 并没有很多实现库可用
注:以上参考IBM。

猜你在找的XML相关文章