动态和静态生成的grpc代码有什么区别?

What is the difference between dynamically and statically generated grpc code?

在GRPC客户端的examples中有两种实现方式,一种是在运行时加载和处理.proto文件,另一种是使用[=11=编译] ].

我的问题是:有什么区别?文档只说 'they behave identically',但肯定有区别吧?

从根本上说,主要区别在于您提到的区别:使用动态代码生成,.proto 文件在 运行 次加载和解析,而使用静态代码生成,.proto文件被预处理成JavaScript.

动态代码生成更易于使用,可能更易于调试,并生成接受常规 JavaScript 对象的代码。

静态代码生成(使用protoc)需要用户创建protobuf对象,这意味着输入验证会更早完成。也是与其他语言更加一致的工作流程。