我们可以从protobuf邮件中删除现有字段吗?

我收到一封protobuf邮件-

message Sample{
    string field1 = 1;
    string field2 = 2;
    string field3 = 3;
}

这些消息以二进制格式存储在数据存储中。 因此,如果我要删除上述消息中的任何已定义字段,是否会导致从数据存储区反序列化消息时出现任何问题?

iCMS 回答:我们可以从protobuf邮件中删除现有字段吗?

不。尽管可以将字段标记为保留,以便没有人以不兼容的方式重用它,但是删除字段也可以。具有旧数据(带有字段)的新代码将静默忽略它;由于新数据proto3中的所有内容都是隐含的optional,因此只会加载没有新字段的旧代码。当proto2是一个问题时,这在required中更是一个问题。另一种选择是离开该字段,但用[deprecated = true]进行标记-它仍然存在并被填充,但是某些工具会使用该语言/框架针对该平台的过时标记来标记该成员。

本文链接:https://www.f2er.com/1976433.html

大家都在问