我正在研究基于对象模型的序列化散列它。
如果我使用 .NET BinaryFormatter 序列化对象图,对于所有涉及的对象都由相同值组成的另一个对象图,序列化表示是否保证字节对字节完全相同?
直觉上,我是这么认为的,但我不确定对象/引用 ID 是否会以某种方式影响实际的序列化表示。
提前致谢。
我正在研究基于对象模型的序列化散列它。
如果我使用 .NET BinaryFormatter 序列化对象图,对于所有涉及的对象都由相同值组成的另一个对象图,序列化表示是否保证字节对字节完全相同?
直觉上,我是这么认为的,但我不确定对象/引用 ID 是否会以某种方式影响实际的序列化表示。
提前致谢。
我不知道这是有保证的,并且由于缺乏书面保证,我个人不会依赖它。尤其:
ISerializable
(即自定义序列化)都可以做任何它想做的事情但是,如果您在谈论二进制等价,我推断您正在谈论数据的存储以及BinaryFormatter
以后的后续比较。请允许我强调:IMO,BinaryFormatter
不适合存储;在共享平台和应用程序版本的正在运行的系统之间传输数据是可以的(ish),但是我看到人们由于版本差异而陷入困境的绝对次数BinaryFormatter
是压倒性的。正是由于这些原因,我对 protobuf 产生了兴趣,并编写了我自己的序列化程序,该序列化程序适用于存储和再水合现有对象模型,这些模型在此期间已经“版本化”。