其他语言
protoc,Protocol Buffers 编译器,可以通过插件来扩展以支持新语言。
当前版本包含 C++、Java、Go、Ruby、C# 和 Python 的编译器和 API,但编译器代码的设计使得添加对其他语言的支持非常容易。目前有几个项目正在进行中,旨在为 Protocol Buffers 添加新的语言实现,包括 C、Haskell、Perl、Rust 等。
有关我们所知项目的链接列表,请参阅 第三方插件 wiki 页面。
编译器插件
protoc,Protocol Buffers 编译器,可以通过插件来扩展以支持新语言。插件只是一个程序,它从标准输入读取一个 CodeGeneratorRequest 协议缓冲区,然后将一个 CodeGeneratorResponse 协议缓冲区写入标准输出。这些消息类型定义在 plugin.proto 中。我们建议所有第三方代码生成器都作为插件编写,因为这样可以让所有生成器提供一致的接口并共享一个解析器实现。
插件可以用任何编程语言编写,但 Google 拥有的插件是用 C++ 编写的。如果您要编写自己的插件,您可能会发现使用 C++ 编写插件是最简单的,以便能够遵循这些示例并重用实用工具。
此外,插件能够将代码插入到其他代码生成器生成的文件中。有关这方面的更多信息,请参阅 plugin.proto 中关于“插入点”的注释。例如,这可以用于编写一个为特定 RPC 系统量身定制的 RPC 服务代码生成插件。有关每种语言生成的代码的文档,请查找它们提供的插入点。