在运行时编译 proto 文件
我正在工作一个通用的 protobuf 解码器,其工作原理如下:
用户可以在运行时指定 .proto 文件并指定数据文件,程序将根据 .proto 定义显示文件中的数据。
要执行上述操作,最明显的事情似乎是我需要解释 .proto 文件(或编译它),然后使用它解码 protobuf 消息。关于我如何继续这个问题有什么想法吗?有没有一个图书馆可以帮助我解决这个问题。
一如既往,我们非常感谢任何反馈。
谢谢!
I'm working a generic protobuf decoder that works as follows:
The user can specify the .proto file at runtime and specify the data file and the program would display the data in the file based on the .proto definition.
To do the above, the most obvious things seems like I would need to interpret the .proto file (or compile it) and then decode the protobuf message using it. Any ideas on how I can proceed on this? Is there a library out there that would help me with this.
As always, any feedback is much appreciated.
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我一直想编写自己的解析器,但现在我只是使用“protoc”将 .proto 解析为 protobuf 二进制文件。然后,我使用自己的 protobuf 库对其进行反序列化,为我提供了一个可使用的填充对象模型。
我不知道你已经走了多远,但你可能也对 protobuf-net v2 中的一些运行时支持感兴趣,它允许将 protobuf 数据动态映射到类型。或者,还有一个相当可重用的阅读器实现,可能会满足您的需求。
如果您可以使用 XML,我在 protobuf-net 中包含了一个工具“protogen”,它可以进行代码生成;但传入
-t:xml
,它应该为您将 .proto 转换为 XML。Iirc,“protoc”使用 google 包中的“descriptor.proto”输出 protobuf。
I keep meaning to write my own parser, but for now I just use "protoc" to parse the .proto to a protobuf binary. I then deserialize that using my own protobuf library, giving me a populated object model to work with.
I don't know how far along you are, but you might also be interested in some of the runtime support in protobuf-net v2, which allows on-the-fly mapping of protobuf data to types. Alternatively there's also a fairly re-usable reader implementation that might suit your needs.
If you could work from XML, I include a tool in protobuf-net, "protogen", which does code-gen; but pass in a
-t:xml
and it should transform a .proto into XML for you.Iirc, "protoc" outputs a protobuf using "descriptor.proto" from the google package.