【发布时间】:2016-04-26 04:01:04
【问题描述】:
为什么 Protocol Buffers 比 .NET 二进制序列化好这么多?我只能找到关于它有多好(在性能和大小方面)的比较,但我找不到原因。是否可以在不涉及太多细节的情况下至少部分解释?
【问题讨论】:
标签: .net serialization protocol-buffers protobuf-net
为什么 Protocol Buffers 比 .NET 二进制序列化好这么多?我只能找到关于它有多好(在性能和大小方面)的比较,但我找不到原因。是否可以在不涉及太多细节的情况下至少部分解释?
【问题讨论】:
标签: .net serialization protocol-buffers protobuf-net
最主要的原因是二进制序列化(BinaryFormatter)比较脆弱。它对确切的类型名称等进行编码,使其无法用于归档数据,例如应用程序的文档格式。
其他原因包括性能、平台可用性等。
如果您没有任何性能问题(即消息很小),并且您只想临时存储或传递一些数据块,那么它可能会很有用。例如 - 对于在同一台计算机上的两个桌面应用程序实例之间传递小消息,它可能很有用,因为您不必为该任务添加另一个库。
【讨论】:
因为 BinaryFormatter 将类型和属性信息存储在序列化数据中,所以它更大,因此相对较慢。
ProtoBuf 将此移动到应用程序端,因此序列化器和反序列化器都必须准确地知道它们在做什么,并在代码中指定它们想要反序列化的类型和属性。
【讨论】: