首页 > 解决方案 > 使用 Protobuf-net 时的项目分隔符

问题描述

我正在使用 protobuf-net nuget 包来序列化和反序列化我的数据。我唯一的问题是对象之间没有项目分隔符。所以,如果我只想读取一个对象,那么它会从给定的偏移量读取所有对象。就像在 Json 中一样,如果我们提供它读取的偏移量,直到它找到一个有效的 json 对象。之后它丢弃。我想要 protobuf 的类似功能。

标签: c#.netserializationprotobuf-net

解决方案


Protobuf - 数据格式 - 实际上:没有任何明确表示对象的开始/结束的内容。这是设计使然(以便 append === 合并),并且是协议规范的一部分,并且不是特定于库的(每个实现都有相同的限制)。

一个常见的选项/解决方法是为每个对象添加长度前缀,以便您至少可以从单个流中使用多个对象。为此:请参阅SerializeWithLengthPrefixDeserializeWithLengthPrefix方法。


推荐阅读