pau*_*eld 6 protocol-buffers proto3
假设我有一个定义如下的 proto3 消息,用作 gRPC 请求(即使用 protobuf 的二进制编码):
message MyRequest {
  string name = 1;
}
Run Code Online (Sandbox Code Playgroud)
我是否可以更改我的服务器(即消息的读取器)以使用以下定义而不破坏现有客户端(即写入器)的线路兼容性?
message MyRequest {
  repeated string names = 1;
}
Run Code Online (Sandbox Code Playgroud)
在proto2 语言指南中,我看到以下内容:
optional兼容repeated. 给定重复字段的序列化数据作为输入,optional如果它是原始类型字段,则期望此字段的客户端将采用最后一个输入值,如果它是消息类型字段,则合并所有输入元素。
但是,proto3 文档不包含等效声明。我认为这可能与packedproto3中重复字段的编码使用有关。
string是的,这是可能的,因为可选元素和单个元素的二进制编码repeated string是相同的。然而,这种变化可能会让代码的读者感到困惑,因为通过这种方式重新解释消息并不是立即显而易见的。
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           3316 次  |  
        
|   最近记录:  |