使用BinaryFormatter序列化不同但相同的对象图会产生相同的二进制表示吗?

时间:2011-04-26 11:27:02

标签: .net serialization binaryformatter

我正在考虑基于对象模型的序列化来散列对象模型。

如果我使用.NET BinaryFormatter序列化对象图,那么序列化表示是否保证完全相同,字节为字节,对于另一个对象图,其中所有涉及的对象都由相同的值组成?

直观地说,我是这么认为的,但我不确定对象/引用ID是否会以某种方式影响实际的序列化表示。

提前致谢。

1 个答案:

答案 0 :(得分:2)

我不知道保证,并且由于缺乏文件保证,我不会个人依赖它。特别是:

  • 任何实现ISerializable(即自定义序列化)的内容都可以 随心所欲
  • 任何涉及字典之类的东西都可能不可靠 - 只是因为字典中没有定义的排序,而且它可能取决于原始空间中的空间与重构等等。
  • 平台,修订版等之间可能存在微妙的兼容但不完全相同的更改

但是,如果你在谈论二进制等价,我推断你正在谈论BinaryFormatter数据的存储,以及随后的比较。请允许我强调:IMO,BinaryFormatter不适合存储;在共享平台和应用程序版本的正在运行的系统之间传输数据是可以的(ish),但是由于版本差异和BinaryFormatter,我看到人们陷入困境的绝对次数是压倒性的。 由于这些原因我对protobuf感兴趣,并编写了我自己的序列化程序, 适合存储和补充现有对象模型,这些对象模型已经“版本化”过渡期。