我有一个在NodeJs和C ++中使用的Proto文件。

C ++使用协议编译器,而NodeJS使用动态代码生成器,我担心的是,如果C ++使用与NodeJS动态代码生成器不同的编译器版本,对我们来说这可能是个问题吗?

如果是,你们建议如何解决?我应该使用静态代码生成器吗?两者的优缺点是什么?如果有人可以帮助我理解,谢谢

最佳答案

一起使用这两种不同的protobuf / gRPC代码生成方法应该没有问题。不同的代码生成方法会影响API,但它们仍在使用相同的序列化格式,因此它们可以彼此毫无问题地发送消息。实际上,gRPC具有连续的互操作性测试套件,以确保这些不同的客户端和服务器可以相互通信。

要记住的一个潜在问题是a bug,当前的Node.js gRPC动态代码生成器处理重复的原始字段的方式。为避免此问题,应在任何重复的原始字段上显式设置packed属性。

07-27 13:29