作者:骏天天在线 | 来源:互联网 | 2023-02-07 15:59
在GRPC客户端的示例中,有两种类型的实现,一种.proto
是在运行时加载和处理文件,另一种是使用它们编译的protoc
.
我的问题是:有什么区别?文档只是说'他们表现得一样',但肯定会有差异吗?
1> murgatroid99..:
从根本上讲,主要的不同是您提到的:动态代码生成,.proto
在运行时加载和解析文件,而静态代码生成,将.proto
文件预处理为Javascript。
动态代码生成更易于使用,可能更易于调试,并生成接受常规Javascript对象的代码。
静态代码生成(使用协议)要求用户创建protobuf对象,这意味着输入验证将在更早之前完成。这也是与其他语言更加一致的工作流程。
好的,这样看起来好像动态代码生成将永远是正确的方式,对吗?我的意思是,如果只将`.proto`文件放到grpc库中并用它完成,那为什么会遇到这么多麻烦呢?我还注意到,在使用静态代码时,必须使用生成的getter和setter,这使得使用起来更加麻烦,所以我明白了为什么动态代码会更容易。