Protobuf 组和消息

Protobuf groups and messages

我有一个关于 messagegroup 相互兼容性的问题。用第一个 proto 编码的数据可以用第二个 proto 结构解码吗?或者它们有不同的线路格式并且不兼容?

第一个proto:

message SearchResponse {
  repeated group Result = 1 {
    required string url = 2;
    optional string title = 3;
    repeated string snippets = 4;
  }
}

第二个proto:

message SearchResponse {
  message Result {
    required string url = 2;
    optional string title = 3;
    repeated string snippets = 4;
  }

  repeated Result result = 1;
}

group 使用不同的编码风格,大多数序列化器将完全拒绝在它们之间兼容地工作。由于您专门添加了 标记,我会注意到 protobuf-net 在这里更宽容一些,并且 应该 可以互换使用,但我可能不会进入经常这样做的习惯。作为旁注,group 在很大程度上被 Google 弃用,并且 细节 甚至不再出现在编码规范中(它只是提到它们存在并已弃用)。