在我们的客户端/服务器应用程序中,我们一直在使用BinaryFormatter进行序列化过程。 出于性能原因,我们尝试迁移到protobuf-net(http://code.google.com/p/protobuf-net/)。
我们的软件通过客户端和服务器之间的周期传输巨大的图形。
现在我正在寻找一种方法来确保使用protobuf序列化和反序列化的数据与通常由BinaryFormatter处理的数据完全相同。
逐位比较很简单: 我使用BinaryFormatter序列化到一个文件。 使用BinaryFormatter再次反序列化此文件。 然后我使用ProtoBuf序列化到一个文件中。 使用该文件中的ProtoBuf进行反序列化。 使用BinaryFormatter再次序列化到文件中。
然后我可以简单地将该文件与原始文件进行比较。
但是,这两个文件不是100%相等。所以现在我需要找到一种方法来追踪差异。
是否有一些工具可以显示由BinaryFormatter序列化的数据?或者您是否知道其他帮助者进行深入比较并告诉我差异在哪里?
使用XMLSerializer并比较两个XML文件是不可能的,因为BinaryFormatter能够序列化比XMLSerializer更多的数据 - 即使没有明确标记字段。
谢谢你, TH
答案 0 :(得分:5)
如何在启用对象跟踪时使用DataContractSerializer
(在构造函数中为preserveObjectReferences
)。那个应该允许你将它们序列化为xml(至少是一种排序),在那里你可以比较差异。
答案 1 :(得分:5)
我们遇到了同样的问题。我们Json序列化了两个对象(带格式,缩进,换行等),然后使用简单的文本差异。它不仅告诉你它们是不同的,而且确切地说它们的区别在于什么。