SOAP(以前称为“简单对象访问协议”)是用于在分散的分布式环境中交换信息的轻量级协议。SOAP 消息是从发送方到接收方的信息传输。多个 SOAP 消息可以组合起来执行请求/响应模式。
虽然 SOAP 独立于传输,但为了使用现有的互联网基础结构,它通常是通过 HTTP 传输的。SOAP 实现了通过定义用于路由消息的消息路径来绑定和使用所发现的 Web Service。SOAP 用来为 Web Service 查询 UDDI。工作台支持 SOAP 1.1。
SOAP 是一种基于 XML 的协议,它定义每条消息的三个部分:
SOAP 支持两种不同的通信样式:
远程过程调用(RPC):调用将返回结果的操作。通常与不符合 WS-I 的 SOAP 编码配合使用。
文档样式:也称为面向文档的样式或面向消息的样式。此样式提供较低层的抽象,并要求进行更多的编程工作。
在分布式计算环境中,编码样式定义如何对应用程序中定义的数据值进行特定协议格式转换。转换过程称为序列化和反序列化。
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,它基于 IBM® 项目 SOAP4J 以及 Apache Axis 和 IBM WebSphere® 运行时环境。
映射定义限定的 XML 元素名、Java™ 类名和编码样式之间的关联。映射指定使用给定编码时如何在具有标准名称的入局 XML 元素和 Java 类之间进行转换。
要了解有关 Apache SOAP 的更多信息,请参阅 xml.apache.org/soap。要了解有关 SOAP 的更多信息,请参阅 www.w3.org/TR/SOAP。