为什么我不应该将.Net Framework对象作为字节数组发送到Web服务?

时间:2010-11-12 16:12:49

标签: .net web-services serialization

我一直想发送可以跨网站串行化的对象,例如字典或异常(因为我很反常)。

我知道例如在字典中,我不应该发送自定义对象(作为值部分),以防我在Web服务上升级类库,但不在客户端上,因为这会导致不匹配字节数组,它无法在另一端正确反序列化。

但我没有看到异常或图像对象等问题?

是否还有其他原因,例如我应该注意的性能问题?

如果我仔细使用它,这是一种有效的Web服务方法吗?这更像是一个理论问题,因此任何对答案的阐述都将受到赞赏。感谢。

3 个答案:

答案 0 :(得分:5)

我不知道你从哪里得到这个想法,但假装你没有。

您应该不是跨Web服务边界发送特定于平台的类型。这可能会导致.NET Framework版本之间出现问题。

相反,您应该抽象您要发送的值 - 确定Exception中哪些信息很重要,然后发送。

答案 1 :(得分:2)

Web服务通常用作技术无关的集成机制 - 另一端根本不需要是Windows机器。在同类情况下,Windows两端都有更多自然的远程技术。

所以我会尝试坚持可互操作的有效载荷。处理图片之类的附件有各种方法。

答案 2 :(得分:0)

只要二进制数据可以互操作,我就没有错。 BinaryFormatter会很傻,但还有其他的。例如谷歌为完全这个目的设计了“protobuf”/“协议缓冲区”。许多平台都有protobuf实现,包括.NET中的几个。

大多数谷歌的应用程序,从我收集的,以这种方式工作。唯一的缺点(与XML相同)是JavaScript不是很方便。但是从网络服务来看是理想的; CPU和带宽都有效,并且版本容忍。