简单对象访问协议是交换数据的一种协议规范,是一种轻量的、简单的、基于XML(标准通用标记语言下的一个子集)的协议,它被设计成在WEB上交换结构化的和固化的信息。

中文名

简单对象访问协议

英文名

Simple Object Access Protocol

缩写

SOAP

中文缩写

简象访协

基本概念

SOAP是一种基于XML的协议,它用于在分布式环境中发送消息,并执行远程过程调用。使用SOAP,不用考虑任何特定的传输协议(尽管通常选用HTTP协议),就能使数据序列化。用SOAP来构建平台与语言中性的互操作系统是一个好的选择。

总SOAP和Web服务已为在XML上构建分布式应用程序基础结构所需的一切都考虑好了。通过解决COM和Java组件对象模型之间的冲突,SOAP把多个平台在访问数据时所出现的不兼容性问题减至最少。SOAP是一种适用于所有类型的对象实体的理想的媒介即使对于像Brad Pitt和Edward Norton之类的好莱坞电影角色也可用作一种通信媒介。

发展历程

SOAP是“Simple Object Access Protocol”的缩写。

最新版本SOAP1.2版在2003年6月24日成为W3C的推荐版本。

SOAP由Dave Winer,Don Box,Bob Atkinson,Mohsen Al-Ghosein于1998年设计,当时只作为一种对象访问协议。SOAP规范由万维网联盟的XML工作组维护。

主要功能

soapUI是一个开源测试工具,通过soap/http来检查、调用、实现Web Service的功能/负载/符合性测试。该工具既可作为一个单独的测试软件使用,也可利用插件集成到Eclipse,maven2.X,Netbeans和intellij中使用,soapUI pro是soapUI的商业非开源版本,实现的功能较开源的soapUI更多。

相关定义

soap协议:基于类对象的传输协议。

SOAP封装:定义了一个框架,描述消息中的内容是什么,是谁发送的,谁应当接受并处理它以及如何处理它们。

SOAP编码规则:定义了一种序列化机制,用于表示应用程序需要使用的数据类型的实例。

SOAP RPC:定了一个协定,用于表示远程过程调用和应答。

SOAP绑定:定义了SOAP使用哪种协议交换信息。使用HTTP/TCP/UDP协议都可以。[1]

版本差别

SOAP V1.1和SOAP V1.2都是万维网联盟(W3C)标准。可以部署不但支持SOAP 1.1,而且支持SOAP 1.2的Web Service。从SOAP 1.0到SOAP 1.2规范所做的一些更改很重要,而其他更改则不太重要。

SOAP 1.2规范中包含对SOAP 1.1的一些更改。本信息无意深入描述SOAP 1.1和SOAP 1.2的所有新的或已更改的功能部件。本信息而是着重于SOAP的当前版本之间的重要差别。

对SOAP 1.2规范所做的重要更改包括下列更新: SOAP 1.1基于XML 1.0。SOAP 1.2基于XML信息集。 XML信息集提供使用XSD模式描述XML文档的方法。然而,信息集并不一定使用SOAP 1.1所基于的XML 1.0序列化来序列化该文档。这种描述XML文档的新方法有助于显示其他序列化格式,例如二进制协议格式。可以使用二进制协议来将消息压缩成某一可能不需要某些详细标记信息的压缩格式。

在SOAP 1.2中,可以使用绑定至底层协议的规范确定在底层协议数据单元中使用的XML序列化.SOAP1.2-Part2]中指定的HTTP绑定使用XML 1.0作为SOAP消息信息集的序列化。

只要供应商遵从SOAP 1.2中定义的绑定框架,SOAP 1.2就能够提供正式定义传输协议(而不是使用HTTP)的功能。虽然HTTP普遍存在,但它没有其他传输协议(包括TCP/IP和MQ)可靠。

消息格式

SOAP在标准化消息格式环境中,可以做所有它能完成的工作。消息的主体部分是“text/xml”形式的MIME类型,并且包含一个SOAP封套。该封套是一个XML文档。封套包含了报头(可选的)和报文(必须有的)。封套的报文部分总是用于最终接收的消息,而报头项目可以确定执行中间处理的目标节点。附件、二进制数字及其他项目可以附加到报文上。

SOAP提供了一种让客户端指定哪个中间处理节点必须处理报头项目的方法。由于报头与SOAP消息的主体内容是互不相关的,所以可用它们给消息添加信息,而不会影响对消息报文的处理。

例如,报头可用于为报文中包含的请求提供数字签名。在这种情形下,身份验证/授权服务器可以处理报头项目独立于报文可以剥离信息以验证签名。一旦通过验证,封套的其余部分将被传递给SOAP服务器,它将对消息的报文进行处理。深入研究一下SOAP封套,有助于明了SOAP报头和报文元素的位置和用途。