SOAP协议调研
1.SOAP(Simple Object Accrss Protocol)简单对象访问协议,是一种简单基于XML的协议,可以使应用程序在分散或分布式的环境中通过Http协议来交换信息。
2.是WebService的通信协议,通过UUID找到WSDL描述文档后,它可以调用Web服务一个或者多个操作。它是XML文档规范,可以支持不同底层的接口。
3.从发送端到接收端的单项传输,类似于请求、应答模式。SOAP不需要把SOAP消息绑定到特定的协议,可以运行在HTTP、SMTP、FTP等传输协议上。
4.基于XML语言和XSD标准,它定义了一套编码规则,编码规则定义如何将数据表示为消息,以及怎样通过Http协议传输SOAP消息。
5.由四部分组成:
(1).SOAP信封(Envelope):定义一个框架,框架描述消息中的内容是什么,包括消息的内容、发送者、接收者、处理者和如何处理消息。
(2).SOAP编码规则(Encoding Rules):定义系列化机制,用于交换应用程序所定义的数据类型的实例。
(3).SOAP RPC表示(RPC Representation):用于表示远程过程调用和应答。
(4).SOAP绑定(Binding):定义一种使用底层传输协议完成在节点交换SOAP信封的约定。
1.一种轻量级别的通信协议
2.用于应用程序之间的通信
3.SOAP很简单并且可扩展
4.允许绕过防火墙
5.独立于编程语言
6.基于XML
1.SOAP结点表示SOAP消息路径的逻辑实体,用于进行消息路由或处理。SOAP结点可以是SOAP消息的发送者、接收方、消息中介。
2.在SOAP消息模型中,中间方为一种SOAP结点,负责提供发送消息的应用程序和接收方间的消息交换和协议路由功能。中间方结点驻留在发送结点和接收结点之间,负责处理SOAP消息头中定义的部分消息。SOAP发送方和接收方之间可以有0个或多个SOAP中间方,为SOAP接收方提供分布式处理机制。
3.一般SOAP消息中间方分为两种:
(1).转发中间方:转发中间方通过在所转发消息的SOAP消息头中描述和构造语义和规则,从而实现消息处理。
(2).活动中间方:活动中间方利用一组功能为接收方结点修改外部绑定消息,从而提供更多的消息处理操作。
4.无消息提供者的客户端:
不使用消息提供者的应用程序只能交换同步消息,即扮演客户端角色的应用程序只能发送请求 、响应消息。客户端采用SAAJ API的SOAP Connection方法。不使用消息提供者的客户端优点如下:
a.可以采用J2SE平台编写应用程序。
b.不需要在Servlet或J2EE容器中部署应用程序。
c.不需要配置消息提供者。
5.使用消息提供者的客户端:
如果想要获得并且保存在任何时间发送给你的请求,必须使用消息提供者。使用消息提供者的客户端还能发送异步消息。JAXM API提供了使用消息提供者发送和接收消息的框架。需要在容器中运行客户端,容器提供了消息基础结构让提供者使用。使用消息提供者的客户端优点如下:
a.客户端能扮演客户端或者服务角色。
b.客户端能切换消息传递给提供者。
c.在客户端传递消息到最终接收者之前,它能发送消息到一个或多个目的地。这些中间的消息接收者 被称为Actor,它们在消息的SOAPHeader对象中被指定。
d.客户端利用任何提供者支持的SOAP消息协议和影响消息类型与可靠性的“服务质量”,以及消息传递服务的质量。
所有的SOAP消息都使用XML编码,一条SOAP消息就是一个普通的XML文档,文档有如下元素:
Envelope(信封):必选,可把此XMl文档标识位一条SOAP消息。代表消息的XML文件的根元素,它为消息如何处理,由谁处理定义了框架。
Header(报头):可选,包含头部信息,消息在达到最终目的之前,能够被路由到一个或多个中间节点的信息。添加特性到SOAP消息的基本机制,它可以容纳任何数目的扩展基础协议的子元素。例:header子元素可能定义认证信息,事务信息,本地信息等。处理消息的软件可以在没有事先约定的情况下,使用这个机制定义谁应该处理某个特性,以及该特性是强制的还是可选的。
Body(主体):必选,包含所有调用和响应信息。它是发给消息最终接收者的强制信息的容器,SOAP消息还可以容纳一个附件,它不一定非得是XML文件。所有以上的元素均被声明于针对SOAP封装的默认命名空间中:
http://www.w3.org/2001/12/soap-envelope
以及针对SOAP编码和数据类型的默认命名空间:
http://www.w3.org/2001/12/soap-encoding
Fault:位于Body内,可选,提供有关处理此消息所发生的错误的信息。
Attachment(附件):可选,可通过添加一个或多个附件扩展SOAP消息
SOAP消息必须用XML来编码。
SOAP消息必须用SOAP Envelope命名空间
SOAP消息必须用SOAP Encoding命名空间
SOPA消息不能包含DTD引用
SOAP消息不能包含XML处理指令
SOAP基本消息结构:
1 <?xml version="1.0"?> 2 <soap:Envelope 3 xmlns:soap="http://www.w3.org/2001/12/soap-envelope" 4 soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> 5 6 <soap:Header> 7 ... 8 ... 9 </soap:Header> 10 11 <soap:Body> 12 ... 13 ... 14 <soap:Fault> 15 ... 16 ... 17 </soap:Fault> 18 </soap:Body> 19 20 </soap:Envelope>
附上摘要,点我跳转。