BinaryFormatter中的引用完整性
Protobuf-net中AsReference选项的存在以及BinaryFormatter是一个“图形序列化器”这个词让我认为BinaryFormatter不维护引用并且它会复制每个对象。
但我做了一些测试,发现即使对于递归引用,单个BinaryFormatter Serialize()或Deserialize()调用中的所有引用都会被维护。
我可以确认BinaryFormatter确实维护了引用吗? 这与Protobuf-net有何不同? 好像我理解“图形序列化”不正确? 我还应该注意什么?
提前致谢。
TL;博士; version – BinaryFormatter
始终保留引用。
BinaryFormatter
是“图形序列化器”的事实与“它保留参考”同义,因为这是精确再现图形所必需的。 另一种选择是树序列化器( 大多数是它们; XmlSerializer
, DataContractSerializer
(没有启用特定选项), JavascriptSerializer
和没有AsReference
protobuf-net都是基于树的)。 树序列化程序通常不保留引用(除非它们使用一些技巧,即如果启用全图模式, DataContractSerializer
执行什么操作,或者使用AsReference
执行protobuf-net)。 树序列化器(没有启用伏都教)倾向于在一个带有递归模型的混乱中爆炸,这使得它们很容易被发现。