【问题标题】:Silverlight Binary Serialization over the wireSilverlight 在线二进制序列化
【发布时间】:2012-10-12 20:48:33
【问题描述】:

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

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

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

【问题讨论】:

  • 二进制序列化返回字节[]。通过有线发送有什么问题吗?
  • 所以它会像让服务返回一个 byte[] 对象一样简单吗?

标签: c# wcf silverlight serialization binary-serialization


【解决方案1】:

首先,尝试内置二进制编码( in config,见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[] 返回(但您还需要使用上面的 来防止WCF 来自对数据进行 base64 编码以使其成为有效的 XML)。您也可以使用 Stream 而不是 byte[],这不会在 Silverlight 客户端为您提供真正的流式传输行为,但可以在服务器端为您提供真正的流式传输。

【讨论】:

  • 谢谢,第二个链接特别有用。我仍然在将其转换为我的工作环境时遇到问题,但它表明我们甚至没有在 web.config 中进行绑定和定义服务。一旦我做到了这一点,这只是语法正确的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-21
  • 2014-01-04
  • 2016-07-27
  • 1970-01-01
  • 2012-09-12
  • 2017-10-18
相关资源
最近更新 更多