如何解决如何为protobuf原型文件建模
我的应用程序具有各种客户端(例如,Client1,Client 2,Client3 ...等)。客户共享一些通用属性并拥有一些唯一数据。
在我的.proto文件中,我想对这种行为进行建模。我想出了:
message MyClientsData {
BaseClientData baseData;
Client1SpecificData client1;
Client2SpecificData client2;
... and so forth...
}
BaseClientData
是所有客户端之间的通用数据。
这在客户端数量非常有限的情况下适用于简单的用例,但是如果数量增加,将变得难以阅读。 当在不同的反序列化请求中有唯一的数据时,是否有一些好的做法来处理这种情况?
解决方法
使用google.protobuf.Any
import "google/protobuf/any.proto"
message Client1SpecificData {
}
message Client2SpecificData {
}
message MyClientsData {
BaseClientData baseData = 1;
google.protobuf.Any specificData = 2;
}
使用其中一个
message MyClientData {
BaseClientData baseData = 1;
oneof specificData {
Client1SpecificData = 2;
Client2SpecificData = 3;
}
}
拆分为不同的消息
message Client1SpecificData {
BaseClientData baseData = 1;
// other data specific to client1
}
message Client2SpecificData {
BaseClientData baseData = 1;
// other data specific to client1
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。