SOAP 简单对象访问协议

来源:互联网 发布:洛阳农村淘宝招聘 编辑:程序博客网 时间:2024/05/01 04:48

简单对象访问协议 (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),目前 SOAP 1.1 版是业界共同的标准,属于第二代的XML协定(第一代具主要代表性的技术为XML-RPC以及WDDX)。

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

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

目录

[隐藏]
  • 1 历史
  • 2 传输方式
  • 3 SOAP 消息实例
    • 3.1 请求
    • 3.2 回应
  • 4 参见
  • 5 外部链接

[编辑] 历史

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 消息实例

[编辑] 请求

<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/axis2/services/MyService/">      <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>

[编辑] 参见

  • XML
  • XML-RPC
  • WDDX
  • WSDL
  • UDDI
  • WS-Security

[编辑] 外部链接

  • W3C的SOAP页面
  • SOAP1.2版说明书
  • 教学网站