For faster navigation, this Iframe is preloading the Wikiwand page for 简单对象访问协议.

简单对象访问协议

维基百科,自由的百科全书

SOAP(原为Simple Object Access Protocol首字母缩写,即简单对象访问协议)是交换数据的一种协议规范,使用在计算机网络Web服务(web service)中,交换带结构的信息。SOAP为了简化网页服务器(Web Server)从XML数据库中提取数据时,节省去格式化页面时间,以及不同应用程序之间按照HTTP通信协议,遵从XML格式执行资料互换,使其抽象于语言实现、平台和硬件。此标准由IBMMicrosoft、UserLand和DevelopMentor在1998年共同提出,并得到IBM、莲花(Lotus)、康柏(Compaq)等公司的支持,于2000年提交给万维网联盟World Wide Web Consortium,W3C),目前SOAP 1.1版是业界共同的标准,属于第二代的XML协议(第一代具主要代表性的技术为XML-RPC以及WDDX)。

用一个简单的例子来说明SOAP使用过程,一个SOAP消息可以发送到一个具有Web Service功能的Web站点,例如,一个含有房价信息的数据库,消息的参数中标明这是一个查询消息,此站点将返回一个XML格式的信息,其中包含了查询结果(价格,位置,特点,或者其他信息)。由于数据是用一种标准化的可分析的结构来传递的,所以可以直接被第三方站点所利用。

相关定义

  • SOAP封装(envelope):定义了一个框架,描述消息中的内容是什么、是谁发送的、谁应当接受并处理它以及如何处理它们;
  • SOAP编码规则(encoding rules):定义了一种序列化的机制,用于表示应用程序需要使用的数据类型的实例;
  • SOAP RPC表示(RPC representation):定义了一个协定,用于表示远程过程调用和应答;
  • SOAP绑定(binding),它定义了SOAP使用哪种协议交换信息。使用HTTP/TCP/UDP协议都可以。

把SOAP绑定到HTTP的方式,同时利用了SOAP的样式和分散的灵活性特点以及HTTP的丰富特征库的优点。在HTTP上传送SOAP并不意味着SOAP会覆盖现有的HTTP语义,而是HTTP上的SOAP语义会自然地映射到HTTP语义。在使用HTTP作为协议绑定的场合中,RPC请求映射到HTTP请求上,而RPC应答映射到HTTP应答。然而,在RPC上使用SOAP并不仅限于HTTP协议绑定。

历史

SOAP.svg

SOAP曾经代表“Simple Object Access Protocol”,但是这种缩写已经在标准的1.2版后被废止了。1.2版在2003年6月24日成为W3C的推荐版本。这种缩写容易与SOA——Service-Oriented Architecture产生歧义,即使它们之间存在非常大的差异。

SOAP由Dave Winer、Don Box、Bob Atkinson、 Mohsen Al-Ghosein于1998年设计,当时只作为一种对象访问协议。现在,SOAP规范万维网联盟XML工作组页面存档备份,存于互联网档案馆)维护。

传输方式

SOAP使用因特网应用层协议作为其传输协议。SMTP以及HTTP协议都可以用来传输SOAP消息,但是由于HTTP在如今的因特网结构中工作得很好,特别是在网络防火墙下仍然正常工作,所以被广泛采纳。SOAP亦可以在HTTPS上传输。

SOAP的消息格式采用XML

语法规则

  • SOAP消息必须用XML来编码
  • SOAP消息必须使用SOAP Envelope名字空间
  • SOAP消息必须使用SOAP Encoding名字空间
  • SOAP消息不能包含DTD引用
  • SOAP消息不能包含XML处理指令

SOAP消息实例

请求

<soapenv:Envelope
	xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
	xmlns:xsd="http://www.w3.org/2001/XMLSchema"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
	<soapenv:Body>
		<req:echo xmlns:req="http://localhost:8080/wxyc/login.do">
			<req:category>classifieds</req:category>
		</req:echo>
	</soapenv:Body>
</soapenv:Envelope>

回应

<soapenv:Envelope
	xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
	xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">
	<soapenv:Header>
		<wsa:ReplyTo>
			<wsa:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address>
		</wsa:ReplyTo>
		<wsa:From>
			<wsa:Address>http://localhost:8080/axis2/services/MyService</wsa:Address>
		</wsa:From>
		<wsa:MessageID>ECE5B3F187F29D28BC11433905662036</wsa:MessageID>
	</soapenv:Header>
	<soapenv:Body>
		<req:echo xmlns:req="http://localhost:8080/axis2/services/MyService/">
			<req:category>classifieds</req:category>
		</req:echo>
	</soapenv:Body>
</soapenv:Envelope>

参见

外部链接

{{bottomLinkPreText}} {{bottomLinkText}}
简单对象访问协议
Listen to this article

This browser is not supported by Wikiwand :(
Wikiwand requires a browser with modern capabilities in order to provide you with the best reading experience.
Please download and use one of the following browsers:

This article was just edited, click to reload
This article has been deleted on Wikipedia (Why?)

Back to homepage

Please click Add in the dialog above
Please click Allow in the top-left corner,
then click Install Now in the dialog
Please click Open in the download dialog,
then click Install
Please click the "Downloads" icon in the Safari toolbar, open the first download in the list,
then click Install
{{::$root.activation.text}}

Install Wikiwand

Install on Chrome Install on Firefox
Don't forget to rate us

Tell your friends about Wikiwand!

Gmail Facebook Twitter Link

Enjoying Wikiwand?

Tell your friends and spread the love:
Share on Gmail Share on Facebook Share on Twitter Share on Buffer

Our magic isn't perfect

You can help our automatic cover photo selection by reporting an unsuitable photo.

This photo is visually disturbing This photo is not a good choice

Thank you for helping!


Your input will affect cover photo selection, along with input from other users.