SOAP协议初解

网络 网络管理
下面我们来讲解一下SOAP协议的内容。对于这部分内容。我们先看看其定义是怎样的。然后再来看看它的功能。

对于网络协议,它的种类非常多,这里我们来讲解一下SOAP协议的使用。我们规定SOAP协议为一种标准化的通讯规范。那么这个SOAP协议的意思则是:简单对象访问协议(SOAP,全写为Simple Object Access Protocol),它主要用于Web服务(web service)中。SOAP的出现是为了简化网页服务器(Web Server)在从XML数据库中提取资料时,无需花时间去格式化页面,并能够让不同应用程式之间透过HTTP通讯协定,以XML格式互相交换彼此的资料,使其与程式语言、平台和硬体无关。此标准由IBM、Microsoft、UserLand和DevelopMentor在1998年共同提出,并得到IBM,莲花(Lotus),康柏(Compaq)等公司的支持,于2000年提交给全球资讯网联盟(World Wide Web Consortium;W3C),目前SOAP1.1 版是业界共同的标准,属于第二代的XML协定(***代具主要代表性的技术为XML-RPC以及WDDX)。

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

相关定义

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

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

SOAPRPC表示(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曾经代表“Simple Object Access Protocol”,但是这种缩写已经在标准的1.2版后被废止了。1.2版在2003年6月24日成为W3C的推荐版本。这种缩写容易与SOA——Service-oriented architecture产生歧义,虽然它们之间存在非常大的差异。

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

传输方式

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

SOAP的消息格式采用XML。

SOAP协议的消息实例

请求

  1. <soapenv:Envelope 
  2.     xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
  3.     xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
  4.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
  5.   <soapenv:Body> 
  6.     <req:echo xmlns:req="http://localhost:8080/axis2/services/MyService/"> 
  7.       <req:category>classifieds</req:category> 
  8.     </req:echo> 
  9.   </soapenv:Body> 
  10. </soapenv:Envelope> 

回应

  1. <soapenv:Envelope 
  2.     xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
  3.     xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"> 
  4.   <soapenv:Header> 
  5.     <wsa:ReplyTo> 
  6.       <wsa:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address> 
  7.     </wsa:ReplyTo> 
  8.     <wsa:From> 
  9.       <wsa:Address>http://localhost:8080/axis2/services/MyService</wsa:Address> 
  10.     </wsa:From> 
  11.     <wsa:MessageID>ECE5B3F187F29D28BC11433905662036</wsa:MessageID> 
  12.   </soapenv:Header> 
  13.   <soapenv:Body> 
  14.     <req:echo xmlns:req="http://localhost:8080/axis2/services/MyService/"> 
  15.       <req:category>classifieds</req:category> 
  16.     </req:echo> 
  17.   </soapenv:Body> 
  18. </soapenv:Envelope> 
责任编辑:佟健 来源: hi.baidu.com
相关推荐

2010-06-21 14:23:13

连续ARQ协议

2010-09-02 16:39:30

SOAP协议

2010-07-14 17:29:36

SOAP协议

2010-06-25 15:48:56

网络协议套件

2010-06-11 16:59:09

DSR路由协议

2010-09-10 15:18:28

SOAP协议

2010-08-03 11:32:30

NFS网络文件系统

2012-01-16 09:54:37

大型网站

2010-09-02 16:46:52

SOAP协议

2010-07-14 17:26:36

SOAP协议

2010-07-14 17:16:35

SOAP协议

2010-09-25 13:07:50

DHCP协议结构

2010-07-13 13:59:04

ICMP协议

2010-09-10 15:33:26

SOAP协议应答编码

2009-11-04 14:44:44

AOP.NET SOA

2010-09-10 14:48:05

2009-11-11 10:21:25

路由选择协议

2014-10-10 15:28:08

TCP

2010-09-10 10:36:13

VxWorks网络协议

2009-11-12 14:44:21

RIP路由协议
点赞
收藏

51CTO技术栈公众号