0

在即将完成新版本的同时,我们忽略了 WCF 服务返回给 silverlight 客户端的大量 XML 数据。现在我们正在研究如何缩小数据,使结果不在 10-100mb 范围内。

二进制序列化是解决方案似乎很清楚,使用例如 SharpSerializer 将数据序列化为二进制似乎很容易,但是通过我遇到的所有关于二进制序列化和其他教程的 SO 帖子,没有人解决如何通过线路将序列化数据发送到客户端。我希望我在 WCF 服务难题中遗漏了一些明显但至关重要的部分。

希望有人可以借给我一些帮助。让我知道我是否应该包含更多信息。

4

1 回答 1

1

首先,尝试内置的二进制编码(<binaryMessageEncoding> 在配置中,见http://www.mostlydevelopers.com/blog/post/2009/10/14/Silverlight-3-WCF-Binary-Message-Encoding.aspxhttp://www.silverlight.net/learn/data-networking/network-services-(soap,-rest-and-more)/how-do-i-use-binary-encoding-for-wcf-with-银光-3)。

您的数据可能会缩小,但请注意,内置的二进制编码旨在尽可能快,而不是尽可能小。

如果这还不够,并且您想使用 3rd=party 组件对二进制数据进行序列化,您确实可以将此数据作为 byte[] 返回(但您还需要使用上面的 <binaryMessageEncoding> 来防止 WCF 来自 base64 -对数据进行编码以使其成为有效的 XML)。您也可以使用 Stream 而不是 byte[],这不会在 Silverlight 客户端为您提供真正的流式传输行为,但可以在服务器端为您提供真正的流式传输。

于 2012-10-13T08:53:13.580 回答