为什么协议缓冲区比 .NET 二进制序列化好得多



为什么Protocol Buffers比.NET二进制序列化好得多?我只能找到谈论它有多好(在性能和尺寸方面)的比较,但我找不到原因。是否可以在不涉及太多细节的情况下至少部分解释它?

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

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

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

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

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

最新更新