通过SOAP Web服务传输二进制数据?

我有一个Web服务,它返回一个对象的二进制数组。 是否有更简单的方法使用SOAP传输它,还是需要包含在XML中? 它工作正常,但我必须将发送和接收缓冲区增加到一个很大的值。 多少是太多了?

将XML中的二进制文件作为数组传输似乎效率很低,但我看不到任何使用.NET添加二进制附件的方法。

作为arrays? 你的意思是你要发送

8 127 

等等? 如果是这样,那么你可以通过事先将字节数组转换为hex字符串来改进它,例如。

 087F09AFBD..... 

这是通过SOAP发送图像等的最常用方法。 但是,即便如此,你也可以质疑它。 你应该真正关注其他更多RESTful传输协议,恕我直言。

在HTTP协议中,您将发送一条包含SOAP消息的mime类型text / xml消息。 但HTTP协议允许您发送多条消息,例如由消息和附件组成的电子邮件。 这就是所谓的“带附件的肥皂” http://en.wikipedia.org/wiki/SOAP_with_Attachments这是用mime类型“multipart / related”完成的。

检查有关如何使用WCF http://msdn.microsoft.com/en-us/library/ms733742.aspx

那么你真的不应该通过webservice发送二进制信息。 这样做会使使用Web服务的兼容性无效。 理想情况下,您将对象序列化为xml。 但是,如果您发送的信息本质上是二进制的,比如图像,那么您可以确定将其放在SOAP消息的有效负载中。 多少信息实际上取决于您希望等待多长时间以及您的网络速度。 我不相信您可以发送的信息的大小有任何实际限制。 如果它真的很多(50兆+似乎是一个任意大的数字),那么你可能希望考虑替代传输协议,如通过套接字流式传输。