Vit*_*mud 5 java protocol-buffers
I have a protobuf:
enum Type {
UNDEFINED = 0;
SMALL = 1;
MEDIUM = 2;
BIG = 3;
}
Run Code Online (Sandbox Code Playgroud)
The last value was changed (not by me):
enum Type {
UNDEFINED = 0;
SMALL = 1;
MEDIUM = 2;
VERY_BIG = 3;
}
Run Code Online (Sandbox Code Playgroud)
这种变化对我解析 protobuf 消息(包含 BIG 的消息)的能力有什么影响?解析二进制编码或文本编码的消息是否有所不同?
弃用 BIG 并引入 VERY_BIG 值的最佳做法是什么?
如果您使用的是二进制 protobuf 格式,那么:没问题。仅发送原始值 - 作为 varint,而不是作为名称。曾经映射到的数据BIG现在将显示为VERY_BIG. 你将无法区分两者。
更改架构并重新运行 protoc 可能会给您带来一些构建错误,直到您在自己的代码中修复相同的更改,但 protobuf 本身不会在意,甚至不会注意到。
如果您使用的是 JSON 格式:您需要对其进行测试。我对 JSON 规则了解不够(我尽量避免 JSON 输出)。
一般来说,重命名不是一个好的选择。最好添加具有新唯一值的新条目并将旧条目标记为已弃用,但请注意,您可能仍然期望旧值。
由于EnumValueOptions有一个deprecated标志,您应该能够使用[deprecated=true]旧值将其标记为过时。
| 归档时间: |
|
| 查看次数: |
2703 次 |
| 最近记录: |