我有一个protobuf消息,其中包含另一个重复消息。看起来像这样:
message AddGroupsRequest
{
message GroupProperties
{
string name = 1;
int32 some_property_1 = 2;
int32 some_property_2 = 3;
}
repeated GroupProperties group_properties = 1;
}
我的问题是,这是编码消息的最佳方法,还是应该像这样将它们分开:
message GroupProperties
{
string name = 1;
int32 some_property_1 = 2;
int32 some_property_2 = 3;
}
message AddGroupsRequest
{
repeated GroupProperties group_properties = 1;
}
以一种或另一种方式定义消息是否有含义?
谢谢
使用二进制输出时,这两个规范的基础编码将相同。
$> echo 'group_properties { name: "Bob", some_property_1: 6 }' \
| protoc nested.proto --encode='AddGroupsRequest' \
| xxd
00000000: 0a07 0a03 426f 6210 06 ....Bob..
$> echo 'group_properties { name: "Bob", some_property_1: 6 }' \
| protoc sibling.proto --encode='AddGroupsRequest' \
| xxd
00000000: 0a07 0a03 426f 6210 06 ....Bob..
唯一的决定点是要生成的C ++类名是AddGroupsRequest_GroupProperties
(嵌套形式)还是要使用独立GroupProperties
类型,这在很大程度上是优先选择的事情。请注意,您可以稍后更改此设置,而不会破坏已编码的消息。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句