SOAP1.1与SOAP1.2

目前SOAP协议有两个版本,分别是1.1和1.2。通常开发web服务时,SOAP1.1和SOAP1.2之间的差异影响有限,尤其是基于JAX-WS。当然也有例外,比如,在这两个版本中,SOAP消息头结构上的差异,可能对web服务的开发带来一定的影响。下图描绘了SOAP1.1和SOAP1.2版本下消息的大体结构:

SOAP1.1与SOAP1.2

无论是SOAP1.1还是SOAP1.2,均可以通过Handler(处理程序)来操作SOAP消息,这里所说的Handler是一个由程序员编写的其中包括了回调方法的Java类。在服务运行时,通过调用这个回调方法,使得应用程序可以访问处理底层SOAP消息。那么在所谓的web服务应用层,SOAP消息通常是隐藏的。而在Handler层面,SOAP消息被暴露出来,这样程序员可以直接操作入站或出站的各种SOAP消息。

即使在Handler层面,SOAP1.1和1.2版本之间的大部分差异通常也是可以忽略的。比如,SOAP1.1技术上允许在SOAP体后面出现XML元素,而在SOAP1.2中,SOAP体本来就是SOAP信封的最后一个XML元素。即使是在SOAP1.1中,也只有在一些特定的例子中,SOAP信封所包括的XML元素会孤立地出现在SOAP消息体和SOAP信封之间。SOAP1.1只可以绑定到HTTP协议,而SOAP1.2除了HTTP协议之外还支持SMTP绑定。在JAX-WS中,类似于大多数框架,SOAP1.1作为默认实现,尽管如此在JAX-WS中可以随时采用SOAP1.2。

转载于:https://my.oschina.net/fhd/blog/221329