在我們的客戶端/服務器應用程序中,我們一直在使用BinaryFormatter進行序列化過程。 由於性能原因,我們正在嘗試遷移到protobuf-net(http://code.google.com/p/protobuf-net/)。如何比較兩個.NET對象圖的差異?
我們的軟件在客戶端和服務器之間傳輸帶有循環的巨大圖形。
現在我正在尋找一種方法來確保使用protobuf序列化和反序列化的數據與通常由BinaryFormatter處理的數據完全相同。
一點一點的比較很簡單: 我使用BinaryFormatter序列化到一個文件。 使用BinaryFormatter重新反序列化此文件。 然後我使用ProtoBuf序列化到一個文件中。 使用該文件中的ProtoBuf反序列化。 再次使用BinaryFormatter對文件進行序列化。
然後,我可以簡單地將該文件與原始文件進行比較。
但是,這兩個文件不是100%相等的。所以現在我需要找到一種方法來追蹤差異。
是否有一些工具可視化BinaryFormatter序列化的數據?還是你知道一些其他幫手,它做了深入的比較,並告訴我差異在哪裏?
使用XMLSerializer並比較兩個XML文件是不可能的,因爲BinaryFormatter能夠序列化多於XMLSerializer的數據 - 即使沒有顯式標記字段。
謝謝 TH
我在這裏有大量的代碼來比較單個對象,但比較整個圖形是非常棘手的。如果我不得不猜測*,我會懷疑是否有微小的日期時間精度差異。 –
嘿馬克。如果文件幾乎相同,我會猜測相同。但是,我缺少大約25%的數據。現在我想知道,例如,實例引用是否被共享,儘管它們不應該(因爲原始引用不指向同一對象),或者我忘記了將某些字段添加到TypeModel。一些工具會很棒,只是將整個對象圖繪製成一個人類可讀的圖形(類似於http://ignatu.co.uk/ViewStateDecoder.aspx)(但是,該算法不適用於我們的巨大圖) – TwinHabit