SOAP

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 实现

现在,可获得 SOAP 协议的不同实施。例如,Apache Foundation 提供了 Apache SOAP,它是由称为 SOAP4J 的 IBM® 项目以及 Apache Axis 和 IBM WebSphere® 运行时环境发展而来的。所提供的 Web service 工具支持 Apache SOAP 2.3、Axis 1.0 和 IBM WebSphere 实现。

映射

映射定义了限定 XML 元素名称、Java™ 类名和编码样式之间的关联。映射指定如何在给定编码的情况下将一个有标准名称的进入 XML 元素转换为 Java类,或从 Java 类转换为 XML 元素。

有关 Apache SOAP 的更多信息,请参阅 xml.apache.org/soap;有关 SOAP 的更多信息,请参阅 www.w3.org/TR/SOAP