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

6
我有一个Web服务,返回一个对象的二进制数组。是否有更简单的方法通过SOAP传输它,或者它需要包含在XML中?虽然这种方式可以工作,但我不得不增加发送和接收缓冲区的值。多大才算太多呢?
在XML中传输二进制数组似乎非常低效,但是我无法看到使用.NET添加二进制附件的任何方法。
3个回答

4
作为一个数组?你的意思是你正在发送一个包含多个元素的数据集合。
<byte>8</byte>
<byte>127</byte>

等等?如果是这样,那么您可以通过先将字节数组转换为十六进制字符串来改进它,例如:

<codedArray>087F09AFBD.....</codedArray>

这是通过SOAP发送图片等内容的最常见方法。然而,即使如此,你也是正确的去质疑它。在我看来,你应该真正考虑其他更具有RESTful特性的传输协议。


是的,我认为它就是这样编码的。将其转换为十六进制是一个很好的解决方案。 - Jason

2

1

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


我可能不理解从基于Web的数据库向我的应用程序传输信息的最佳实践。使用SOAP,我可以在Web端使用LINQ,并且它很容易绑定到我的应用程序中的对象。有没有更简单的方法来做到这一点?该对象被转换为二进制数组以更有效地存储在数据库中。作为XML,它太大了。 - Jason

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接