繁体   English   中英

Silverlight XAML对象的二进制序列化

[英]Binary serialization of Silverlight XAML object

我正在开发需要显示复杂的2d矢量图形的Silverlight应用程序。 它从服务器下载压缩的XAML文件,解析它(XamlRead)并注入页面上的布局根目录。 这适用于相当小的xaml文件。 问题是我需要使用更大的文件(更多的内容)。 例如,我的一个未压缩的xaml文件大20 MB,而XamlRead方法需要很长的工具来解析它。 我的问题是,是否有办法在服务器端进行所有解析。 最好只将XamlRead方法的序列化二进制输出存储为数据库中的BLOB。 但是,当我尝试序列化它时,我收到一条消息“Canvas对象未标记为可序列化”。 我真的很感激任何建议。

Silverlight内置了很多二进制序列化; 然而, protobuf-net适用于Silverlight,可能有助于填补这一空白。 在当前版本中,您只能真正序列化您控制的类型(由于添加属性) - 但是,我正处于一个大型重构的中间(除其他外)添加对没有属性的序列化类型的支持。

我希望它还有2个星期可以作为(希望)稳定的版本,但是欢迎你来看看它。

请注意,您仍然需要提供一些帮助(告诉它您希望它序列化的内容),但它可能很有用。

特别是,数据格式(“协议缓冲区”)被设计为密集且高效的处理,这应该提高解析速度。 请参阅此处了解更多信息(数字来自主.NET,而不是Silverlight)

我发现SharpSerializer软件包非常容易用于Silverlight中的快速二进制serlization: http//www.sharpserializer.com/en/index.html 您不需要使用Serializable属性 - 但它只序列化公共成员。

如果解析确实是问题,那么使用名为'BAML'的预编译XAML可能会有所帮助。 这是XAML文件的二进制表示。 由于二进制格式具有更便宜的解析器而不是太通用的XML,这有很大帮助。 .NET编译器也在内部使用BAML来生成更紧凑的文件。

有关详细信息,另请参阅http://stuff.seans.com/2008/07/13/hello-wpf-world-part-2-why-xaml/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM