[英]protobuf serialization of language specific data structures
使用Google的Protocul Buffers ,我已经用Java编写了一个服务,该服务已经具有自己的数据结构。 我想使用pb传递消息,并且正在寻找一种将Java中现有的数据结构序列化为pb的方法。 我可以从头开始定义pb中的所有数据结构,这也许是正确的方法,但是我太懒了。 因此,假设我有一个使用Java(或其他受支持的语言)的Person类或其中包含数十个属性的Plane类,是否有办法将该类序列化为pb? 我可以拥有Plane类型的pb属性吗? (当Plane不是pb时,它是一个Java类)
不,你不能。 protobuf消息中的字段始终是原语(基本上是数字,字符串和字节数组),protobuf枚举(作为Java枚举生成)或protobuf消息,当然还有所有这些的重复版本。
您可能会编写一个工具,该工具使用反射来从Java类创建.proto文件,但我怀疑您会发现手动完成它会更快。 特别是,如果您确实使用了反射,则需要确保始终使用相同的名称来生成字段,以保持兼容性。 您可以做的一件事是注释Java类并编写代码以基于这些注释生成.proto文件-甚至可能使用这些注释直接序列化为proto格式。 我个人建议以某种方式创建.proto文件,而不是有效地重写PB项目-否则,在已经经过全面测试的代码中存在引入错误的巨大风险。
如果您确实创建了注释系统,我相信Kenton Varda(以及PB社区的其他成员)将有兴趣看到它。
我能想到的一种方法是在protobuf中有一个字符串字段,并使用Java的原始序列化将Java类序列化到该字段。 这样,假设消息的接收者知道如何读取/反序列化,我可以轻松地将Java序列化为Java消息。
但是,这种技术也有缺点。 仅举几例:
但是-它可以在短期内完成工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.