我对protoc-gen-go与protoc-gen-go-grpc之间的关系有点困惑。我知道:
protoc-gen-go包含用于序列化/反序列化原型消息的代码。protoc-gen-go-grpc包含gRPC服务器和客户端的代码但是,我使用以下命令
protoc -I $protodir --go_out=plugins=grpc:./genproto/ $protodir/v1/foo.proto生成的foo.pb.go包含用于消息序列化的代码和用于gRPC服务器/客户端的。另外,我只在我的系统上安装了protoc-gen-go。
我觉得这是在GO中做gRPC的老方法,而new-way是protoc --go_out=. --go-grpc_out=.的。
问题:
protoc --go_out=. (为什么它还生成gRPC客户机/服务器代码?)谢谢你,DC
发布于 2020-11-15 19:46:07
旧式正在使用github.com/golang/protobuf模块.它附带了protoc-gen-go,它生成原型消息的序列化和grpc代码(当使用--go_out=plugins=grpc时)。
所谓的新方法正在使用google.golang.org/protobuf模块=对用于协议缓冲区的Go绑定的主要修订。它附带了一个不同的protoc-gen-go,不再支持生成gRPC服务定义。对于gRPC代码,Go gRPC项目开发了一个名为protoc-gen-go-grpc的新插件。不建议使用plugins标志,它提供了以旧方式调用gRPC代码生成器的方法。
重要注意:用户应该努力在运行时库和用于生成Go绑定的plugin Go插件中使用相同的版本。
更长的答案是论堆叠溢出。
发行说明也解释了这一点。
https://stackoverflow.com/questions/64828054
复制相似问题