在运行时编译 proto 文件

发布于 2024-10-14 15:01:16 字数 243 浏览 3 评论 0原文

我正在工作一个通用的 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

千里故人稀 2024-10-21 15:01:16

我一直想编写自己的解析器,但现在我只是使用“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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文