web服务与二进制数据传输介绍

图片、影音等类似的这些二进制数据如何作为参数传入,或者作为返回值从web服务操作中返回?只有进行类型转换了。基于SOAP的web服务用到的数据类型并不只局限于纯文本,但是这些web服务对于二进制数据的使用引发了重大的效率问题

在基于SOAP的web服务中,可以利用如下两种通用的做法来处理任意的二进制数据:

  • 二进制数据可以通过某种模式编码,比如使用Base64编码规范,然后作为SOAP消息体中的单元进行传送。比如,一个可以向请求者返回图片格式的服务操作可以简单地返回一个java.awt.Image对象,它是java中对二进制图像数据进行包装的类。那么图像所包括的byte数据可以进行编码后作为SOAP消息体进行传输。不利的一面就是Base64编码或类似的编码格式将会导致发送单元相比编码前的二进制数据而言,在内容多少上至少膨胀三分之一。简而言之,像Base64这样的byte编码将导致数据量进一步膨胀。

  • 二进制数据可以作为SOAP消息的一个或多个附件的方式发送。回顾前面,SOAP消息由一个SOAP part组成,在其中包括一个可选的消息报头和可能为空的消息报体以及可选的SOAP附件。附件的数据内容可以是任何定义的MIME类型,包括:audio/x-wav、video/mpeg及image/jpeg等这些多媒体类型。JAX-B提供了MIME类型和Java类型间必需的映射:其中MIME类型image/*map对应java Image类型,剩下其他多媒体类型对应DataHandler。

在web服务中往返于发送者和接收者之间传输的二进制数据,通常采用附件的方式传输而不是对这些数据编码后传输,因为这种选择避免了数据量的膨胀。不利的一面是数据的接收者必须处理这些未经过处理的byte数据,比如将这些byte数据再转换为图像或声音类型。

使用SOAP附件传输二进制数据的3种选择

SOAP附件方式存在3种基本的选择:SwA(SOAP with Attachments),SOAP规范中所指定的附件方式;DIME(Direct Internet Message Encapsulation),轻量级的但是有些过时的编码格式;MTOM(Message Transmission Optimization Mechanism),基于XOP(XML-Binary OPtimized Packaging)。JWS提供了DIME方式的扩展,主要目的就是针对微软客户端的互用性提供支持。一直到Microsoft Office 2003发布为止,由微软宏语言(VBA)编写的web服务客户端只能够处理DIME编码的附件。SwA方式也有严重缺点,SwA很难处理Document绑定样式的服务,而这种绑定样式目前已经成为一种标准。况且,像微软的.Net平台也不支持SwA方式。MTOM通过了W3C认证,享有广泛的支持;因此,在基于SOAP的web服务二进制数据传输中,MTOM代表了目前高效、流行的数据交互方式。



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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值