我们有一个发送 protobuf 的通信通道。为了能够发送不止一种类型的 protobuf,我们双重序列化:
message Coprolite {
enum Bezoar {
KBezoarUndef = 0;
KBezoarFriedEggs = 1;
KBezoarHam = 2;
}
Bezoar payload_type = 1;
bytes payload = 2;
}
如果我有一个FriedEggs
protobuf,我将其序列化,将其分配给 Coprolite 的有效负载,将 payload_type 设置为 KBezoarFriedEggs,序列化 Coprolite,然后将其发送。
收到后,我反序列化,检查我有什么,然后反序列化。
这适用于我们所有的平台。但是,我还没有找到其他人这样做的例子(实际上也没有任何其他方式)。所以这表明我应该征求意见。有没有更好的策略或理由让我对此保持警惕?