“简单对象访问协议”(SOAP)是用于在分散的分布式环境中交换信息的轻量级协议。SOAP 消息是从发送方到接收方的信息传输。多个 SOAP 消息可以组合起来执行请求/响应模式。
SOAP 不依赖于传输,但通常通过 HTTP 来应用,以便使用现有因特网基础结构进行运行。SOAP 通过定义路由消息的消息路径来允许绑定和使用发现的 Web Service。SOAP 用来为 Web Service 查询 UDDI。Rational® Developer 产品支持 SOAP 1.1。
SOAP 是一种基于 XML 的协议,它定义每条消息的三个部分:
SOAP 支持两种不同的通信样式:
远程过程调用(RPC): 调用一种将返回结果的操作。通常与不符合 WS-I 的 SOAP 编码配合使用。
文档样式: 也称为面向文档或面向消息的样式。此样式提供较低层的抽象,如果您使用的是 IBM® SOAP 或 Apache Axis 运行时环境,则需要进行更多的编程工作。
在分布式计算环境中,编码样式定义可以如何在应用程序中定义的数据值与特定协议格式之间进行转换。转换过程称为序列化和反序列化。
SOAP 规范定义 SOAP 编码样式:
SOAP 编码:SOAP 编码样式允许您对 SOAP 数据模型中数据类型的值进行序列化/反序列化。此编码样式是在 SOAP 1.1 标准中定义的,并且不符合 WS-I。
WSDL 定义了“文字 XML”编码样式:
文字 XML:文字指的是应该按原样或未编码的格式阅读文档。文档被序列化为 XMI,这意味着消息 XML 符合 WSDL 中的模式。当使用“文字”编码时,每个消息部件都引用具体的模式定义。文字编码符合 WS-I。
SOAP 数据模型的目的是为公共编程语言类型使用的数据类型提供与语言无关的抽象概念。它由下列各项组成:
组成 SOAP 数据模型的所有元素和标识都是在名称空间 URI 中定义的。SOAP 标准定义可以如何构造数据类型的规则。特定于项目的 XML 模式必须定义实际的数据类型。SOAP 规范的元素是在 http://schemas.xmlsoap.org/soap/envelope/ 和 http://schemas.xmlsoap.org/soap/encoding/ 中定义的。
现在,可获得 SOAP 协议的不同实现。例如,Apache Foundation 提供了 Apache SOAP,它是由称为 SOAP4J 的 IBM 项目以及 Apache Axis 和 IBM WebSphere® 运行时环境发展而来的。Rational Developer Tools 中的此发行版 Web Service 工具同时支持 Apache SOAP 2.3、Axis 1.0 和 IBM WebSphere 实现。
映射定义限定 XML 元素名称、Java™ 类名和编码样式之间的关联。映射指定在给定的编码下如何将一个具有标准名称的进入 XML 元素转换为 Java 类,反之亦然。
要了解有关 Apache SOAP 的更多信息,请参阅 xml.apache.org/soap。要了解有关 SOAP 的更多信息,请参阅 www.w3.org/TR/SOAP。要了解有关 Web Service 和 WebSphere Application Server SOAP 运行时的更多信息,请参阅 WebSphere Application Server 文档。