gpt4 book ai didi

c# - protobuf-net 版本 2.X 到 3.X 迁移

转载 作者:行者123 更新时间:2023-12-04 12:00:09 27 4
gpt4 key购买 nike

我正在更新我的 protobuf-net 库引用,特别是来自 2.4.4 3.0.101 .以前,我们使用 null在列表中,因为它们包含对业务有意义的信息(例如, new[] { "one", "two", null, null, "five" } )。但是,据我了解( https://protobuf-net.github.io/protobuf-net/releasenotes# ),它们在 3.x 中尚不支持。
是否有针对具有空值的集合的建议迁移策略?
我可以通过附加字段来减轻 future 的变化(例如,将集合转换为字典并在序列化/反序列化时再次返回),但是对于使用 2.x 库序列化的数据,向后兼容性似乎被破坏了。是否有任何迁移指南?

最佳答案

鉴于 3.x 尚不支持空保留,您的选择有些有限:

  • 提交 PR 以添加缺少的功能。快速浏览 protobuf source code让我觉得实现起来相当简单。在链接的源文件的第 161 行中,似乎有一个空值抛出,这就是我要开始的地方。不过,我可能对这有多复杂是非常错误的。
  • 看看您是否可以同时使用这两个库。您需要知道(或检测)要序列化的数据是 v2 格式还是 v3 格式(我没有检查过,但如果没有办法通过查看前几个字节来检测这种情况,我会感到惊讶)。您可能需要编译一个自定义版本来为其提供不同的命名空间,以便两者共存。
  • 将数据迁移到 v3。您可以作为一次性操作(由您控制​​的少量数据)或按需(大量数据或外部接收的数据)来执行此操作。您需要使用空值重新设计列表中使用的类型,以便不再有空值(例如,通过具有逻辑上表示空值的自定义值)。
  • 继续使用 v2。它很稳定并且运行得非常好,所以除非你有特定的升级需求,否则它可能不值得付出努力。
  • 关于c# - protobuf-net 版本 2.X 到 3.X 迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67394631/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com