Protocol buffers 生产中的协议——Isn';在产品中包含编译器不是很重吗?

Protocol buffers 生产中的协议——Isn';在产品中包含编译器不是很重吗?,protocol-buffers,Protocol Buffers,我没有广泛地使用Protobufs,但最近有人要求我这样做 在本地安装上安装Protobuf编译器相当繁重。我应该使用Protobuf对服务器上的消息进行序列化和反序列化烧瓶为简单起见 这不意味着在服务器上我也必须安装这个Protobuf编译器吗 看起来很重不是吗?当我只想序列化和反序列化消息时 顺便说一下,我听说我不需要在生产中包含编译器。。。但这怎么行呢 通常,protobuf的工作原理是有一个构建时步骤来解析.proto模式文件(通常为“protoc”),该文件用您选择的语言生成代码。然后

我没有广泛地使用Protobufs,但最近有人要求我这样做

在本地安装上安装Protobuf编译器相当繁重。我应该使用
Protobuf
对服务器上的消息进行序列化和反序列化<代码>烧瓶为简单起见

这不意味着在服务器上我也必须安装这个Protobuf编译器吗

看起来很重不是吗?当我只想序列化和反序列化消息时

顺便说一下,我听说我不需要在生产中包含编译器。。。但这怎么行呢


通常,protobuf的工作原理是有一个构建时步骤来解析.proto模式文件(通常为“protoc”),该文件用您选择的语言生成代码。然后用你的应用程序编译它,实际工作就是生成的代码。DSL解析器/生成器不会出现在你的应用程序中,你也不需要包含它们。实际运行时代码是。。。只是普通代码

一些protobuf工具使用的另一个选项是元编程,其中模型(生成的或手工编码的)包含足够的信息来推断序列化应该如何发生,但没有生成实际的序列化代码。在这种情况下,通常会根据模型在运行时发出策略—通常是在第一次需要时发出,然后积极地重用。这种方法确实需要一些运行时元素(策略发射器)

还可以在运行时以各种方式调用完整的DSL解析器。实际上,解析器不是一个庞大的软件,只要您不是每次调用都使用它,它通常就可以了