gpt4 book ai didi

protocol-buffers - proto3 可选字段可以更改为重复而不破坏线路兼容性吗?

转载 作者:行者123 更新时间:2023-12-04 08:30:25 24 4
gpt4 key购买 nike

假设我有一个定义如下的 proto3 消息,用作 gRPC 请求(即使用 protobuf 的二进制编码):

message MyRequest {
string name = 1;
}

我可以更改我的服务器(即消息的阅读器)以使用以下定义而不破坏现有客户端(即编写器)的线路兼容性吗?
message MyRequest {
repeated string names = 1;
}

proto2 language guide ,我看到以下内容:

optional is compatible with repeated. Given serialized data of a repeated field as input, clients that expect this field to be optional will take the last input value if it's a primitive type field or merge all input elements if it's a message type field.



但是,proto3 文档不包含等效声明。我认为这可能与 packed的使用有关。 proto3 中重复字段的编码。

最佳答案

是的,这可以作为可选 string 的二进制编码。而对于 repeated string与单个元素相同。但是,这种更改可能会使代码的读者感到困惑,因为以这种方式重新解释消息并不是很明显。

关于protocol-buffers - proto3 可选字段可以更改为重复而不破坏线路兼容性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45849903/

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