WebService 服务中MTOM 和Base64传输附件的区别

       在于银联对接过程中需要获取附件,银联规范中传输附件的形式有2中,一种是MTOM,一种是Base64,那么这2种方式有什么区别呢?

Base64:如果是做支付系统的话,系统之间的报文交互都需要使用Base64对明文进行转码,然后再进行签名或加密,之后再进行传输。所以做支付系统的都会用到base64进行转码,那么base64到底有什么用呢?

       其实系统之间的报文交互无非就是参数的传输,参数都是英文的当然没有什么问题,但是如果传输一个文件呢?或者是传输一个图片?base64就是通过使用64个可打印的字符来表示二进制的文件或者是图片或者是特殊字符,把二进制的数据转换为字符串,当图片或者是特殊字符通过base64的转码之后,都能通过64个可打印的字符来表示,那么就可以通过报文来传输了。

当作为传输方的时候,要使用base进行编码,当作为接收方的时候,要进行解码。

但是base64编码后的文本要比原来大了三分之一左右,如果传输的数据量太大的话,额外消耗的性能也是非常明显的。

 

MTOM:MTOM(Message Transmission Optimization Mechanism)消息优化传输机制,用来以原始字节的方式传输包含SOAP消息的较大二进制附件,从而使所传输的消息较小。MTOM传输方式就是针对base64弊端而改进的方式,对于大量数据的传递,不会进行Base64编码,而是直接以附件的二进制原始数据的形式封装在SOAP消息的 MIME 部分,进行传输。简而言之,就是MTOM会把附件通过二进制的方式进行传输,我们拿到的就是byte数组,而使用base64的话,我们拿到的就是String字符串。
 

 

你可能感兴趣的:(架构)