Once written, a protobuf specification can be compiled using protoc
to a variety of implementations in different languages (e.g. python, c++, go). That's great. But to compile that generated code, you need a protobuf development library and, if I am not mistaken, a runtime is required as well.
有没有一种方法可以以纯语言,独立的方式生成实现代码?因此,例如,我可以将实现编译为C ++和Python,进行分发,然后人们只需使用标准库就可以使用它。
如果不是,是否有框架(在原则上类似于protobuf),在给出规范的情况下,可以生成独立的序列化代码,并且不需要给定语言的其他非标准库?
这个问题源于一个事实,最近我不得不在不同的系统上使用protobuf,并且每个人都有一个不同的开发库。规范是否应在每个系统上分别编译?如果编译器具有不同的版本怎么办?
“所有平台”目标都必须提供一个最小公分母的API,这意味着从大多数语言使用它是不友好的,而且不是惯用的。否定:通常的方法是偏爱特定于平台/语言的工具,每种工具都可以利用API中针对该平台/语言的最合适的API和技术。
编译器版本不同并不重要-在protobuf公开可用之时,底层序列化格式完全没有改变。只要语言解析器支持您使用的语法版本,它仍然可以工作。