简单对象访问协议

来源:互联网 发布:重装系统开票软件 编辑:程序博客网 时间:2024/05/03 15:29

简单对象访问协议(Simple Object Access Protocol, SOAP)

使用 XML 进行系统通信

简单对象访问协议(Simple Object Access Protocol, SOAP)允许您使用 XML 在通过低层 Internet 协议连接的系统之间进行通信。它为通过网络消息传输的 XML 信息提供了标准的信封,并为这类消息体提供了可选的约定。了解 SOAP 的历史,以及它与 Web 服务、面向服务架构(SOA)和具象状态传输(Representational State Transfer,REST)之间的关系。

投稿者: W3C

2007 年 8 月 28 日

简单对象访问协议(Simple Object Access Protocol, SOAP)允许您使用 XML 在通过低层 Internet 协议连接的系统之间进行通信。它为通过网络消息传输的 XML 信息提供了标准的信封,并为这类消息体提供了可选的约定。了解 SOAP 的历史,以及它与 Web 服务、面向服务架构(SOA)和具象状态传输(Representational State Transfer,REST)之间的关系。

SOAP [W3C 推荐标准](尽管使用大写,但已经成为正式的名词而不再是缩写词了)协议允许您使用 XML 在通过低层 Internet 协议连接的系统之间进行通信。很多人认为 SOAP 是XML Web 服务的基础,这是一组用来管理和组织使用 XML 数据格式和 Internet 通信协议连接的系统之间交互的技术。SOAP 最初是在数量不多、临时拼凑的个人之间开发的,这些人来自各种不同的公司,其中包括 IBM。之所以能够得到迅速普及,是因为它提供了与早期对 XML 消息的研究成果相似的功能,并且有更牢固的架构和更多的商业支持。SOAP 开发被提交到 World Wide Web Consortium (W3C),后者开发了 SOAP 1.2,进行了大量架构改善,同时也做了很多有争议的折衷。SOAP 协议定义了 XML 信封格式,其中可以包含伪 XML 载荷(SOAP 实际载荷被限制使用 XML 的全部功能,这一点存在很大争议)。

XML Web 服务与一个更泛化的概念面向服务架构(SOA)紧密相关,但是所有这些概念都没有强制使用 SOAP(尽管常常被误解)。很多人提倡在 HTTP 之上直接交换原始 XML 文档,这种方法在 Representational State Transfer (REST) 的名义下得到了一些人的提倡。REST 是其架构师之一 Roy Fielding 为一种 Web 架构风格所起的名字。REST 风格的 Web 服务鼓吹者抱怨 SOAP 过于复杂,不利于 XML 有效载荷,并且没有充分利用 Web 的基本功能。通过将关注点从 SOAP 的远程过程调用(remote procedure call,RPC)源头转移到称为实文档(document-literal)样式的 SOAP,SOAP 拥护者已经着手解决这些问题。在 RPC 样式中,传输数据被编组为使用特殊 XML 有效载荷格式(称为SOAP 编码)的离散数据类型。在实文档样式中,XML 有效载荷由更自然的 XML 格式组成,通常更具描述性,并且更易于人阅读。

SOAP 体系

建立在 SOAP 基础之上的大量标准并不属于这个规范的范围。以下资源提供了有关这些标准的信息:

  • developerWorks 中国网站 SOA 与 Web 服务专区
  • IBM developerWorks 的 Web 服务标准列表
  • W3C Web Services Activity 主页

仍然被广泛使用的 SOAP 先驱是 XML Remote Procedure Calls (XML-RPC) [社区规范]。XML-RPC 定义了使用 XML 编码并通过 HTTP 通信的过程调用。之所以流行至今是因为它的简单性(其完整规范打印出来也不过十页纸),并且多数语言和应用程序框架都具有标准的或现成的 XML-RPC 实现。它确实有些明显的不足,包括原始的数据类型化和缺乏字符编码支持(这对 XML 使用来说是个令人吃惊的缺陷)。

参考资料

  • 您可以参阅本文在 developerWorks 全球网站上的 英文原文。
  • 有关 SOAP 的最新介绍文章,请参阅 Nicholas Chase 撰写的 了解 Web 服务规范,第 1 部分:SOAP(developerWorks,2006 年 9 月)。
  • W3C 提供了正式的 SOAP 初级读物,推荐它的原因是因为其对 XML 传输格式的关注。
  • Python 编程人员可以查看 developerWorks 中 Python Web 服务开发人员专栏。
  • 了解实文档样式的 SOAP。请参阅由 James McCarthy 撰写的 获得文档样式 Web 服务的好处(developerWorks,2002 年 6 月)。
  • 有关 REST 的观点和动机,请参阅由 Paul Prescod 撰写的 Second Generation Web Services(XML.com,2002 年 2 月)和 REST and the Real World(XML.com,2002 年 2 月)。
  • 通过 James Snell 撰写的 面向资源与面向活动的 Web 服务(developerWorks,2004 年 11 月)了解 REST 风格和 SOAP 风格的 Web 服务之间的关系。
  • REST Wiki 提供了很多有关 REST 的介绍性资料的链接。
  • 对 XML-RPC 感兴趣的 Perl 用户应该从 Joe Johnston 撰写的 用 XML-RPC 开发 Web 服务: 针对 Perl 的 XML-RPC 入门 及其姊妹文章 用 XML-RPC 开发 Web 服务: XML-RPC 中间件(developerWorks,2004 年 4 月)入手。
  • 对 XML-RPC 感兴趣的 Python 用户应该从 Mike Olson 和 Uche Ogbuji 撰写的 Python Web 服务开发者: 针对 Python 的 XML-RPC(developerWorks,2002 年 8 月)入手。
  • Eric Kidd 的 XML-RPC HOWTO 讨论了如何在 Java™ 语言、C、C++、Perl、Ruby 和 .NET 语言中使用协议。
  • 阅读其他 XML 标准:XML 标准索引。
  • 参与任何面向 XML 的论坛: XML 专区讨论论坛。
  • 加入 developerWorks 社区:developerWorks blogs。
  • 查看 IBM XML认证,了解如何成为 IBM 认证的 XML 及相关技术的开发人员。
  • XML 技术文档库,访问 developerWorks XML 专区,提供了大量技术文章、技巧、教程、标准和 IBM 红皮书。
  • developerWorks 技术事件和网络广播,随时关注技术最新进展。
  • 使用 IBM 试用版软件构建您的下一个开发项目,可直接从 developerWorks 下载:IBM 试用版软件。
0 0
原创粉丝点击