Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么不应该';我是否将.Net Framework对象作为字节数组发送到Web服务?_.net_Web Services_Serialization - Fatal编程技术网

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

为什么不应该';我是否将.Net Framework对象作为字节数组发送到Web服务?,.net,web-services,serialization,.net,Web Services,Serialization,我一直希望通过网站发送可以用XML序列化的对象,比如字典或异常(因为我有点反常) 我知道,例如在字典中,如果我在web服务上升级类库,我不应该发送自定义对象(作为值部分),但不应该在客户机上发送,因为这会导致字节数组不匹配,并且无法在另一端正确地反序列化 但我看不出异常或图像对象等有什么问题 是否还有其他原因,例如我应该注意的性能问题 如果我仔细使用它,这是一种有效的web服务方法吗?这更多的是一个理论性问题,因此任何关于答案的详细说明都将不胜感激。谢谢。我不知道你是从哪里得到这个主意的,但假装

我一直希望通过网站发送可以用XML序列化的对象,比如字典或异常(因为我有点反常)

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

但我看不出异常或图像对象等有什么问题

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


如果我仔细使用它,这是一种有效的web服务方法吗?这更多的是一个理论性问题,因此任何关于答案的详细说明都将不胜感激。谢谢。

我不知道你是从哪里得到这个主意的,但假装你没有

您不应该跨web服务边界发送特定于平台的类型。即使在.NET Framework版本之间,这也可能导致问题


相反,您应该抽象您正在发送的值-确定
异常中的哪些信息是重要的,然后发送它。

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


所以我会尽量坚持使用可互操作的有效载荷。处理图片等附件的方法有很多种。

只要二进制数据是可互操作的,就没有问题。BinaryFormatter可能很傻,但还有其他的。例如,谷歌设计的“protobuf”/“protocolbuffers”正是为了这个目的。在许多平台上都有protobuf实现,包括.NET中的几个平台


据我所知,谷歌的大多数应用程序都是这样工作的。唯一的缺点(与XML相同)是JavaScript不太方便。但从一个web服务是理想的;CPU和带宽效率都很高,并且具有版本容限。

此外,如果您没有在Web服务中捕获异常,那么它将被封装在soap异常中,这实际上可能是一种安全风险,因为它可能会暴露更多的代码基工作,等等。我现在要做的是发送一个适配器对象,该对象公开了我要发送的数据,所以不要担心这个想法来自何方-我知道这是个坏主意,我只是想知道尽可能多的原因,为什么这是个坏主意。谢谢@djna,你有没有一个关于处理图片之类的附件的各种方法的例子,我从来没有这样做过?我以前用过MTOM,但只用于文件,这就是你的意思吗?是的,MTOM。带附件的SOAP是另一种,但并非所有供应商都支持,尤其是Microsoft。