简单了解soap协议

SOAP的是什么的简写

soap是(Simple Object Access Protocal)的简写,即简单对象访问协议,它描述了一种在分散或分布式的环境中如何交换信息的轻量级协议。

soap用来干什么的

SOAP在http协议的基础上,是基于XML的简易协议,可使应用程序在HTTP之上进行信息交换,也就是用于访问网络服务的协议。SOAP的优点是可以传递结构化的数据,客户生成的SOAP请求会被嵌入在一个HTTP POST请求中,发送到Web服务器。Web服务器再把这些请求转发给Web service请求处理器,它解析收到的SOAP请求,调用Web service,处理后再生成相应的SOAP应答。Web服务器得到SOAP应答后,会再通过HTTP应答的方式把它送回到客户端。从HTTP协议的角度看,最基本的四种操作是GET(查),POST(改),PUT(增),DELETE(删),我们用的比较多的是POST和GET方式。而SOAP可视为POST的一个专用版本,遵循一种特殊的XML消息格式。

soap的组成部分

包括四个部分

  • SOAP封装:它定义了一个整体框架用来表示消息中包含什么内容,谁来处理,以及这些内容是可选的或是必需的。
  • SOAP编码规则:定义了用以交换应用程序定义的数据类型的实例的一系列机制。
  • SOAP RPC:表示定义了一个用来表示远程调用和应答的协议。
  • SOAP绑定:定义了一种使用底层传输协议来完成在节点间交换SOAP封装的约定。

soap协议的语法规则

构建模块
  一条SOAP消息就是一个普通的XML文档,包含下列元素:
      1)必需的Envelope元素,可把此XML文档表示为一条SOAP消息。
      2)可选的Header元素,包含头部信息。
      3)必需的Body元素,包含所有的调用和响应消息;
      4)可选的Fault元素,提供有关在处理此消息发生错误的信息
语法规则
      1)SOAP消息必须用XML来编码;
      2)SOAP消息必须使用SOAP Envelope命名空间
      3)SOAP消息必须使用SOAP Encoding命名空间
      4)SOAP消息不能包含DTD引用
(文档类型定义(DTD,Document Type Definition)是一种特殊文档,它规定、约束符合标准通用标示语言(SGML)或SGML子集可扩展标示语言(XML)规则的定义和陈述。)
      5)不能包含XML处理指令

SOAP基本的消息结构

  <?xml  version="1.0"?>
    <soap:Envelope  xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
        soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
      <soap:Header>
    <!--示例-->
    </soap:Header>  
    <soap:Body>
    <!--示例-->
    <soap:Fault>
    <!--示例-->
    </soap:Fault>
    </soap:Body>
    </soap:Envelope>

soap协议的优点

  • 可扩展的
    SOAP无需中断已有的应用程序, SOAP客户端、 服务器和协议自身都能发展。而且SOAP能极好地支持中间介质和层次化的体系结构。
  • 简单的
    客户端发送一个请求,调用相应的对象, 然后服务器返回结果。这些消息是XML格式的,并且封装成符合HTTP协议的消息。因此,它符合任何路由器、 防火墙或代理服务器的要求。
  • 完全和厂商无关
    SOAP可以相对于平台、 操作系统、 目标模型和编程语言独立实现。另外,传输和语言绑定以及数据编码的参数选择都是由具体的实现决定的。
  • 与编程语言无关
    SOAP可以使用任何语言来完成,只要客户端发送正确SOAP请求( 也就是说, 传递一个合适的参数给一个实际的远端服务器)。SOAP没有对象模型,应用程序可以捆绑在任何对象模型中。
  • 与平台无关
    SOAP可以在任何操作系统中无需改动正常运行。

总结

SOAP与XML的关系:所有的SOAP消息都使用XML形式编码
SOAP简单的理解就是这样的一个开放协议SOAP=RPC+HTTP+XML:
采用HTTP作为底层通讯协议;RPC作为一致性的调用途径,XML作为数据传送的格式,允许服务提供者和服务客户经过防火墙在INTERNET进行通讯交互。
一个SOAP方法可以简单地看作遵循SOAP编码规则的HTTP请求和响应, 一个 SOAP终端则可以看作一个基于HTTP的URL, 它用来识别方法调用的目标。像CORBA/IIOP一样, SOAP不需要具体的对象绑定到一个给定的终端, 而是由具体实现程序来决定怎样把对象终端标识符映像到服务器端的对象。

posted @ 2019-11-17 22:19  jason小蜗牛  阅读(4670)  评论(0编辑  收藏  举报