问题描述
我正在使用protobuf-net nuget软件包对我的数据进行序列化和反序列化。我唯一的问题是对象之间没有项目分隔符。因此,如果我只想读取一个对象,那么它将从给定的偏移量读取所有对象。 就像在Json中一样,如果我们提供偏移量,它会一直读取直到找到有效的json对象为止。之后,它将丢弃。我希望protobuf具有类似的功能。
解决方法
Protobuf-数据格式-实际上:没有任何明确表示对象开始/结束的内容。这是设计使然(以便append === merge),并且是协议规范的一部分,并且不是特定于库的(每个实现都有相同的限制)。
一个常见的选择/解决方法是为每个对象添加长度前缀,以便您至少可以从单个流中使用多个对象。为此,请参见SerializeWithLengthPrefix
和DeserializeWithLengthPrefix
方法。