适用于 Windows Phone 7 的快速而全面的二进制序列化框架
Posted
技术标签:
【中文标题】适用于 Windows Phone 7 的快速而全面的二进制序列化框架【英文标题】:Fast and comprehensive binary serialization framework for Windows Phone 7 【发布时间】:2011-07-08 22:34:00 【问题描述】:我正在寻找一个快速二进制序列化框架,以便在 Windows Phone 7 中用于我从 Windows Mobile 6.5 迁移的项目 Protobuf-net 在 WM6.5 中运行良好,但距离 WP7 的黄金时间还很远,所以我想知道是否有人知道同时有一个好的替代方案。
我需要一个支持序列化多种类型的框架:自定义类型、自定义类型的数组、自定义类型的集合、内置类型、框架中的可序列化类型等。
我找到了几个,但它们并没有比 DataContractSerialization 快多少(但肯定更紧凑)。到目前为止我已经尝试过:
Mike Talbot 的 Silverlight 序列化器:http://whydoidoit.com/silverlight-serializer/
Silverlight 的 Alt 序列化程序:http://slserializelzo.codeplex.com/
Alt 的性能更好,但严重依赖反射,不像它的完整框架对应物那样编译序列化程序,但两者都通过了我的第一个相对复杂类型的基本测试。
还有其他我可以尝试的序列化框架吗?我很乐意衡量他们的表现并分享我的发现。
【问题讨论】:
查看这里***.com/questions/4717389/… 并在此处查看keyboardP的解决方案:***.com/questions/6627898/fastest-way-to-load-data。它链接到 WP7 中序列化方法的比较,包括测试 谢谢。我不知道 SharpSerializer。它通过了我的第一次兼容性测试。它似乎很全面,但也很慢。对于我运行的测试(简单自定义类型的数组),它甚至比 XmlSerializer 还要慢。虽然它的输出非常小。我需要验证 AltSerializer(似乎快 3 倍)是否可以处理 SharpSerializer 示例中的复杂类型。 【参考方案1】:通过使用提供类似于本机代码调用性能的通用委托,我显着提高了 SilverlightSerializer 的性能。我的测试工具的性能提高了 61%。更多详情here.
【讨论】:
【参考方案2】:Json.NET (http://json.codeplex.com) 和 Sterling Database (http://www.sterlingdatabase.com/) 的优势。两者都是免费的。
【讨论】:
【参考方案3】:Marc Garvell 的 protobuf-net 是 Google 协议缓冲区的 .NET 实现,速度非常快。如果性能是优先事项,我建议您检查一下。
【讨论】:
确实如此。问题是它在 WP7 中还不能很好地工作。但真的考虑到所有其他选项的性能,我正在考虑花一些时间让它发挥作用。以上是关于适用于 Windows Phone 7 的快速而全面的二进制序列化框架的主要内容,如果未能解决你的问题,请参考以下文章
适用于 Windows Phone 的 OCRing 7 段显示器的任何 API?
适用于 windows phone 7.1、WP7.8 和 WP8.0 的应用程序的应用程序图标和磁贴大小
适用于 Windows Phone 8 的 MediaElement 速度比
适用于 Windows Phone 8.1 的 XMPP 库