究竟这是什么意思时,他们说,attachement是SOAP消息之外?我想可能是附件是作为一个不同的TCP包发送的,但我认为我错了?
与第一个选项不同,附件不是实际肥皂消息有效负载的一部分,而是引用到SOAP文档中。 MTOM和SWA之间的区别在于引用文件的位置。对于MTOM,它嵌入到响应中,而在SWA中,您可以例如获取到Web上资源的链接。它遵循3点最小的例子:
MTOM(所有类型XOP + XML的一个响应)
Content-type: multipart/related;
type="application/xop+xml";
start-info="text/xml"
--uuid:c73c9ce8-6e02-40ce-9f68-064e18843428
Content-Type: application/xop+xml;charset=utf-8;type="text/xml"
Content-Transfer-Encoding: binary
<?xml version="1.0" ?>
<S:Envelope xmlns:S="...">
<S:Body>
<ns2:downloadImageResponse xmlns:ns2="...">
<return>
<xop:Include xmlns:xop="http://www.w3.org/2004/08/xop/include"
href="cid:[email protected]">
</xop:Include>
</return>
</ns2:downloadImageResponse>
</S:Body>
</S:Envelope>
--uuid:c73c9ce8-6e02-40ce-9f68-064e18843428
Content-Id: <[email protected]>
Content-Type: image/png
Content-Transfer-Encoding: binary
SWA(仅供参考)
Content-Type: application/xml;charset=utf-8;
<?xml version="1.0" ?>
<S:Envelope xmlns:S="...">
<S:Body>
<ns2:downloadImageResponse xmlns:ns2="...">
<return>
https://server.com/downloadImagehere.png
</return>
</ns2:downloadImageResponse>
</S:Body>
</S:Envelope>
内嵌
Content-Type: application/xml;charset=utf-8;
<?xml version="1.0" ?>
<S:Envelope xmlns:S="...">
<S:Body>
<ns2:downloadImageResponse xmlns:ns2="...">
<return>
YTM0NZomIz...potentiallyLargeBase64encodedFileGoesInHere...I2OTsmIzM0NTueYQ==
</return>
</ns2:downloadImageResponse>
</S:Body>
</S:Envelope>
上面哪个选项是推荐的,具体哪个最适合Spring的Spring-WS框架?
它们都支持,使用的依赖于你的用例。根据我的研究,MTOM似乎是事实上的标准。根据我的说法,如果您有大量文件附件或多个文件附件,它尤其有用。由于它将消息拆分为逻辑组件,它可能会给解析器更多的选项来高效地处理二进制数据。
然而,对于较小的数据我可能会去的资源的嵌入,因为它是标准SOAP协议的一部分,并且仅直接使用已编码的字节数组,然后将其直接嵌入到消息中。如果可移植性/兼容性很重要,这可能是选择的方法。
最后一种方法显然需要你自己处理的参考,这可能是也可能不是你想要的。
我不清楚上面哪个选项在传输过程中对二进制内容进行了编码。什么是这里描述的二进制MIME - http://www.crosschecknet.com/intro_to_mtom.php?二进制数据在传输过程中是否仍然转换为文本?
MTOM和Inline都将文件通常编码为Base64encoded字符串。对于外部链接,它不相关。
什么是使用SWA当数据的格式?
Base64encoded字节数组
不能给你一个完整的答案,但这个环节应该有所帮助:HTTP://wso2.org/library/1148。部分看到彩色图表。这是一个MIME多部分消息,肥皂文本显示为一个部分,并通过其“Id”引用二进制部分。这不需要二进制的base64编码。这种方法是相当普遍的,是一个HTTP标准等都不是连肥皂 – davidfrancis 2012-04-01 23:09:45
... ...续或Web服务特定的,所以我会感到惊讶,如果你的框架不支持它。 GL HTH – davidfrancis 2012-04-01 23:10:42
看起来像mtom透明地将base 64 enc数据变成MIME多部分消息,所以它是一个主题的变体! – davidfrancis 2012-04-01 23:13:31