我已经创建了GRPC
服务器,并希望向其分发各种语言的“ SDK
”客户端。
我可以使用proto
命令(例如python
)相对容易地生成客户端:
python -m grpc_tools.protoc -I. --python_out=/tmp/python --grpc_python_out=/tmp/python MyProtoc.proto
,以及类似的java/ruby
等。
此生成的代码需要手动复制到客户端应用程序。
我宁愿让自己的消费者不必自己创建生成的库并将其集成,也不会给他们带来负担。 (尤其是在向服务添加新功能时)
例如,在python
的上下文中,沿着
pip install MyProtoClient
是否存在将生成的库打包到适当的规范包管理器(即pip
/ maven
/ npm
等的机制)?
还有,有没有一种方法可以调用服务本身以生成源库(或返回其正在实现的适当原型?)
答案 0 :(得分:0)
没有一个项目专门为生成的源制作软件包。 googleapis的Artman / GAPIC Generator是一个适用于多种语言的项目,但它也进行自己的代码生成,并且混合在一起。您可以看到output for some languages(对于所有这些对象,请查看特定的API,例如Pub / Sub)。
gRPC服务器可以通过reflection API公开其定义。每种语言都有一个预先构建的服务实现。例如,在Java中为io.grpc.protobuf.services.ProtoReflectionService
,在Go中为google.golang.org/grpc/reflection
。该服务不会返回.proto文件,而是返回“描述符”,这是protobuf反射和代码生成工具使用的常规格式。