通过WCF发送二进制数据:二进制与MTOM编码

Wil*_*Niu 2 binary wcf encoding binding mtom

我对WCF知识有限以及通过WCF发送二进制数据,所以这个问题可能有点基础.

我想知道用BinaryMessageEncodingBindingElement和发送数据之间的区别MtomMessageEncodingBindingElement.在从大数据和流媒体上的MSDN阅读此页面之后,我还不清楚何时使用哪种方法.

另外,一个小问题:带附件的消息和MTOM消息是一回事吗?

Dre*_*rsh 8

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

二进制编码完全是WCF专有的,实际上并不仅仅与大型消息有关.它呈现了XML Infoset的二进制表示,它在线上更加紧凑,并且比基于文本的格式更快地解析.如果您碰巧发送大量二进制数据块,那么它恰好适合正在发送的其他字节.

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