为什么Protocol Buffers比.NET二进制序列化好得多?

时间:2016-01-20 10:44:18

标签: .net serialization protocol-buffers protobuf-net

为什么Protocol Buffers比.NET二进制序列化好得多?我只能找到比较更好的比较(在性能和尺寸方面),但我找不到原因。是否可以至少部分地解释而不需要过多细节?

2 个答案:

答案 0 :(得分:2)

因为BinaryFormatter在序列化数据中存储类型和属性信息,所以它更大,因此相对较慢。

ProtoBuf将其移动到应用程序端,因此序列化程序和反序列化程序必须确切地知道它们正在做什么,并在代码中指定它们要反序列化的类型和属性。

答案 1 :(得分:1)

最重要的原因是二进制序列化(BinaryFormatter)很脆弱。它编码精确的类型名称等,使其无法用于存档数据,例如以应用程序的文档格式存档。

其他原因包括性能,平台可用性等。

如果您没有任何性能问题(即消息很小),并且您只想临时存储或传递一些数据,那么它可能很有用。例如 - 为了在同一台计算机上的桌面应用程序的两个实例之间传递小消息,它可能很有用,因为您不必为该任务添加另一个库。

相关问题