如何比较两个.NET对象图的差异?

Twi*_*bit 10 .net c# serialization protobuf-net

在我们的客户端/服务器应用程序中,我们一直在使用BinaryFormatter进行序列化过程.出于性能原因,我们尝试迁移到protobuf-net(http://code.google.com/p/protobuf-net/).

我们的软件在客户端和服务器之间传输大量图表.

现在我正在寻找一种方法来确保使用protobuf序列化和反序列化的数据与通常由BinaryFormatter处理的数据完全相同.

逐位比较很简单:我使用BinaryFormatter序列化到文件.使用BinaryFormatter再次反序列化此文件.然后我使用ProtoBuf序列化到一个文件中.使用该文件中的ProtoBuf进行反序列化.使用BinaryFormatter再次序列化到文件中.

然后我可以简单地将该文件与原始文件进行比较.

但是,这两个文件不是100%相等.所以现在我需要找到一种方法来追踪差异.

是否有一些工具可以显示由BinaryFormatter序列化的数据?或者您是否知道其他帮助者进行深入比较并告诉我差异在哪里?

使用XMLSerializer并比较两个XML文件是不可能的,因为BinaryFormatter能够序列化比XMLSerializer更多的数据 - 即使没有明确标记字段.

谢谢,TH

Mar*_*ell 5

如何在DataContractSerializer启用对象跟踪的情况下使用(preserveObjectReferences在构造函数中).这应该允许您将它们序列化为xml(至少是一种排序),您可以在其中比较差异.


nga*_*nju 5

我们遇到了同样的问题.我们Json序列化了两个对象(带格式,缩进,换行等),然后使用简单的文本差异.它不仅告诉你它们是不同的,而且确切地说它们的不同之处在于它们.