(我相信这个问题主要是关于协议缓冲区,而不是grpc,但我可能错了。)
有一个 .proto
作为helm项目的一部分存在的文件:https://github.com/kubernetes/helm/blob/v2.5.0/_proto/hapi/rudder/rudder.proto
作为helm构建过程的一部分,在这里生成go绑定(他们签入它,但它是生成的,即不以任何方式手工编辑):https://github.com/kubernetes/helm/blob/v2.5.0/pkg/proto/hapi/rudder/rudder.pb.go
我对这个函数有个问题:https://github.com/kubernetes/helm/blob/v2.5.0/pkg/proto/hapi/rudder/rudder.pb.go#l536
这个函数是如何产生的 .proto
上面提到的文件?
作为背景,我已经做了java等价的(用java生成绑定,而不是go,完全相同) .proto
文件)。你可以看到 pom.xml
如果有问题,在这里执行此操作的部分:https://github.com/microbean/microbean-helm/blob/microbean-helm-2.5.0.0/pom.xml#l290-l310既然我是从相同的源代码生成的,使用基本相同的方法,为什么不生成类似的java方法呢?
2条答案
按热度按时间kcwpcxri1#
快速搜索可在此处找到这些字符串文字:https://github.com/golang/protobuf/blob/master/protoc-gen-go/grpc/grpc.go#l214
“包grpc以go代码输出grpc服务描述。它作为go协议缓冲区编译器插件的插件运行。”
这个代码生成是通过同时使用protoc编译器、protoc的go插件和所述插件的grpc模式来调用的。看到了吗https://github.com/grpc/grpc-go/tree/master/examples.
af7jpaap2#
grpcjavaapi只是略有不同。而不是打电话:
在上调用方法
io.grpc.ServerBuilder
:生成的代码实现
BindableService
生成器使用它来配置服务。