我正在使用一个非常模块化的系统。消息可以由 src、dest、type 的 3 元组确定。
我正在研究使用协议缓冲区重新实现我们的消息。我已经通读了Protocol buffer polymorphism,使用协议缓冲区进行多态性的正确方法是什么?和http://www.indelible.org/ink/protobuf-polymorphism/
我想知道有没有人实施解决方案:
message header {
required string src = 1
required string dest = 2
required string type = 3
}
并创建单独的消息,其中:
message foo {
required header h = 1
required string a = 2
}
单独的文件:
message bar {
required header h = 1
required uint32 num = 2
}
在接收代码中有类似的东西:
Message.ParseFromString(msgStr)
if (Message.type == foo)
{
FooMessage.ParseFromString(msgStr)
}
else {
BarMessage.ParseFromString(msgStr)
}
如果使用了这种方法,它比上述链接中描述的更好还是更差?