c# - 使用 Protobuf-net 时的项目分隔符
问题描述
我正在使用 protobuf-net nuget 包来序列化和反序列化我的数据。我唯一的问题是对象之间没有项目分隔符。所以,如果我只想读取一个对象,那么它会从给定的偏移量读取所有对象。就像在 Json 中一样,如果我们提供它读取的偏移量,直到它找到一个有效的 json 对象。之后它丢弃。我想要 protobuf 的类似功能。
解决方案
Protobuf - 数据格式 - 实际上:没有任何明确表示对象的开始/结束的内容。这是设计使然(以便 append === 合并),并且是协议规范的一部分,并且不是特定于库的(每个实现都有相同的限制)。
一个常见的选项/解决方法是为每个对象添加长度前缀,以便您至少可以从单个流中使用多个对象。为此:请参阅SerializeWithLengthPrefix
和DeserializeWithLengthPrefix
方法。
推荐阅读
- php - 如何从数据库中获取新闻并将其打印在 PHP 页面上?
- latex - 带多列的乳胶表文本换行 - 保持间距的方法?
- ios - 升级到 Xcode 版本 10.2 (10E125) 后如何更正错误
- c# - 如果字符串值不为空或为空,则在字符串中添加“|”
- jetty - 带有 Jersey 和嵌入式 Jetty 的 CrossOriginFilter
- android - 如果项目存在于数据库中,Android Firestore 更新字段值
- wordpress - 如何在 wordpress 发布后向 mailchimp 自动化发送电子邮件
- typescript - 将值传递到量角器中黄瓜的不同步骤
- javascript - Angular:你能提取文本响应类型的状态吗?
- javascript - 离线时此测验如何获得答案?