欢迎来到天天文库
浏览记录
ID:11566631
大小:55.17 KB
页数:10页
时间:2018-07-12
《web service 附件技术的发展及演变》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、WebService数据交换协议WebService使用SOAP作为其标准的数据交换协议。SOAP是一个基于XML的轻量级协议,用于在无中心、分布式环境中交换结构化的数据,该协议完全独立于具体的系统平台、软件架构和编程语言,提供了一种开放和统一的方式支持应用间的集成和互操作。SOAP的设计目标是简单性和扩展性,有助于大量异构程序和平台之间的互操作性,从而使存在的应用程序能够被广泛的用户访问。目前,SOAP已经成为开放性互联网络应用中标准的数据交换技术。2000年W3C推出了SOAP1.1版本,最新的SOAP1.2在2007年4月推出,并成为W3C的推荐规范。SOAP只是为上层应
2、用提供一个数据的载体,数据的具体语义由上层应用定义。SOAP报文最外层元素为Envelope,即SOAP信封。Envelope之下有两个子元素:Header元素和Body元素。其中Body元素是SOAP报文的主要数据载体,该元素是必需的。用于存放待交换的信息,具体表示为Body的子元素;Body的每个直接子元素称为BodyBlock,用于存放具体应用中在逻辑上相关的一组数据;Header元素是可选的,主要用于扩展机制,Header的直接子元素称为HeaderBlock,每个HeaderBlock的扩展语义由基于SOAP的上层应用来定义,常用的扩展包括安全、事务、消息相关性等。S
3、OAP故障(Fault)报文是一种特殊的SOAP报文,用于在发生故障的场景中运载错误信息。在SOAP故障报文中,Body有且仅有一个名为Fault的直接子元素,用于存放和具体故障有关的详细错误信息,包括故障代码、故障原因、发生故障的SOAP结点等。图1为SOAP数据报文和SOAPFault报文示意图。图1.SOAP数据报文和SOAPFault报文 在WebService的实现中,经常需要在SOAP报文中携带各种类型的附件(如图像、文档等)一起传输。例如,在典型的电子商务应用中,客户向商家询问某种商品的详细信息,商家向客户发回SOAP格式的回复消息,其中包含有商品的详细说明,商品
4、的图片等供客户参考。这些附件可能是文本文件,XML片段,二进制文件等等。然而,SOAP是一种基于XML的文本协议,只能使用可见字符组成的文本来表示数据,无法在报文中直接包含其他格式的附件。因此,如何将SOAP报文同其他格式的附件组织在一起进行传输便成为一个需要解决的重要问题。为了对SOAP及其他WebService标准进行支持,Java社区进程组织(JCP:JavaCommunityProcess)提供并实现了Java方面的Web服务的原始标准JAX-RPC1.x(JavaTMAPIsforXMLbasedRPC)和JAX-WS(JavaTMAPIforXML-BasedWeb
5、Services2.0)。JAX-RPC最早版本是JAX-RPC1.0,进过一段时间使用便更新到JAX-RPC1.1,在J2EE1.4中包含JAX-RPC1.1。JAX-RPC1.1使用约1年后JCP再次对其进行更新,考虑到Web服务中不单有RPCWeb服务,还有面向消息的Web服务,因而将其更名为更合理的JAX-WS。目前JAX-WS2.0仍在进行当中。JAX-RPC1.1提供对SOAP1.1的支持,JAX-WS2.0对SOAP1.1和SOAP1.2进行支持。Base64编码的二进制SOAP附件为了简单和通用性,XML被设计成了以文本的格式来表示数据。使用SOAP进行传递的数
6、据首先被序列化,也就是将数据转换成字符串在XML文档中传送。在目的地,字符串再被反序列化,即再被转换成表示原来的值的数据类型。把二进制数据放入SOAP报文的最简单的方法,就是使用Base64编码的方式对其进行编码,以实现数据的序列化和反序列化。Base64是一种很常见的编码规范,其作用是将二进制序列转换为可读的ASCII字符序列,常用在需用通过文本协议传输二进制数据的情况下,例如HTTP和SMTP协议。Base64编码基本原理是把每三个8bit的字节转换为四个6bit的字节,然后把6bit再添两位高位0,组成四个8bit的字节,不满四个字节的以'='填充。因为Base64将输入
7、的数据编码成只含有{'A'-'Z','a'-'z','0'-'9','+','/'}这64个字符的串,所以称之为Base64编码。可以看出,转换后的字符串理论上将要比原来的长1/3。在W3C的XMLSchemaPart2:Datatypes规范中,定义了base64Binary类型,SOAP报文中使用Base64编码的二进制内容可以定义为该类型。一个使用Base64编码的图片数据在SOAP报文中的结构如清单1所示:清单1.一个使用Base64对数据进行编码的SOAP报文
此文档下载收益归作者所有