这样的信息是否可行?
message A {
required int64 some_number = 1;
// .... some more fields
optional A sub_a = 123;
}
原因是我的当前协议直接存储一组A,将A包装在另一个消息中会导致大量存储的数据进行转换。
2.2.0 protoc可以成功编译它。 这会对序列化/反序列化造成任何问题吗?protobuf-net支持吗?
这样的信息是否可行?
message A {
required int64 some_number = 1;
// .... some more fields
optional A sub_a = 123;
}
原因是我的当前协议直接存储一组A,将A包装在另一个消息中会导致大量存储的数据进行转换。
2.2.0 protoc可以成功编译它。 这会对序列化/反序列化造成任何问题吗?protobuf-net支持吗?
这个定义完全没问题,应该在任何实现中(包括 protobuf-net)都可以正常工作;你有看到任何问题吗?但是!你可能需要考虑序列化的计算影响 - 特别是要序列化子消息,必须首先知道子消息的大小。一个深度递归的方法(如此链表所需)可能会带来一些问题。
有什么理由不能只将其作为repeated
消息呢?那绝对是我更喜欢的方法。