【问题标题】:Should the Protobufs from two different repositories be aligned是否应该对齐来自两个不同存储库的 Protobuf
【发布时间】:2021-04-23 15:42:46
【问题描述】:

问题描述

我们在不同的存储库中有两个代码。一个是Java,另一个是C++。我们共享一个共同的 protobuf。问题在于,在我们这边,即 C++ 方面,我们的成员比 JAVA 方面的成员少。如您所见,在我们的work 上分配了id 4,而在Java 端分配了id 5。两个成员都有相同的名字,这是工作。

问题

如果 protobuf 没有对齐,我们会遇到什么问题? protobufs不对齐可以吗?


message CPPContext {
  optional string date              = 1;
  optional string time              = 2;
  optional string hour              = 3;
  optional string work              = 4;
}

message JAVAContext {
  optional string date              = 1;
  optional string time              = 2;
  optional string hour              = 3;
  optional string currency          = 4;
  optional string work              = 5;
}

【问题讨论】:

    标签: c++ protobuf-c


    【解决方案1】:

    Protobuf 根据字段编号而不是字段名称对消息进行序列化和反序列化。

    例如,如果CPPContext 消息在另一端被反序列化为JAVAContext,那么您的work 字段将在另一端被视为currency 字段。

    最好在通信双方使用相同的 proto 文件。或者至少(向后)兼容的原型文件。例如,可以先在 proto 文件的一侧添加带有新字段 id 的新可选字段(在另一侧将被忽略),但不能更改字段的 id 或删除必填字段。

    【讨论】:

      猜你喜欢
      • 2021-12-07
      • 2010-09-19
      • 1970-01-01
      • 2014-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多