2

我对 WCF 以及通过 WCF 发送二进制数据的知识有限,所以这个问题可能有点初级。

我想知道用BinaryMessageEncodingBindingElement和发送数据的区别MtomMessageEncodingBindingElement在阅读了 MSDN 关于大数据和流式传输的此页面后,我仍然不清楚何时使用哪种方法。

还有一个小问题:带附件的消息和 MTOM 消息是一回事吗?

4

1 回答 1

8

MTOM 是一种标准,它使用多部分 mime 编码的消息来发送消息的一部分,这些部分很大并且对于 base64 编码为纯二进制来说过于昂贵。SOAP 消息本身作为消息的初始部分发送,并包含对二进制部分的引用,然后像 WCF 这样的 Web 服务软件堆栈可以将其拉回到一起以创建消息的单个表示。

二进制编码完全是 WCF 专有的,实际上不仅仅与大型消息有关。它提供了 XML 信息集的二进制表示,它比基于文本的格式更紧凑,解析速度更快。如果您碰巧正在发送大的二进制数据块,那么它恰好适合正在发送的其他字节。

流式传输可以与任何消息格式一起使用。这更多的是关于数据何时通过网络写入,而不是在呈现给网络传输之前完全在内存中缓冲。较小的消息在发送前缓冲更有意义,而较大的消息,尤其是那些包含大二进制块或流的消息,需要流式传输或将耗尽内存资源。

于 2011-07-27T14:53:49.377 回答