Silverlight二进制序列化通过电线

时间:2012-10-12 20:48:33

标签: c# wcf silverlight serialization binary-serialization

虽然几乎完成了新版本,但我们忽略了我们的WCF服务返回到Silverlight客户端的大量XML数据。现在我们正在研究如何缩小数据,以便结果不在10-100mb范围内。

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

希望有人可以借给我一些帮助。如果我应该提供更多信息,请告诉我。

1 个答案:

答案 0 :(得分: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-silverlight-3)。

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

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