任何客户端都可以从服务器生成 .proto 文件吗?
Can the .proto file be generated from the server by any client?
我看到 Evans CLI 可用于从客户端设置中确定服务器上公开的消息和会话。服务器正在使用的 .proto 文件(包含消息和会话详细信息)是否有可能在客户端设置上生成?如果是,如何以及如果否,那么埃文斯如何访问这些消息?
我对 gRPC 的概念不熟悉,所以这会很有帮助。我唯一知道的是,在 GoLang 中我们使用反射器来启用 Evans CLI 来访问消息和服务。
服务器可以选择启用反射,以便您可以看到已注册的 RPC 和原型消息。这是关于它的一般介绍:
https://github.com/grpc/grpc/blob/master/doc/server-reflection.md
您可以使用作为 gRPC 的一部分打包的 grpc_cli 来获取 RPC 列表和消息原型,如下所述:
https://grpc.github.io/grpc/cpp/md_doc_server_reflection_tutorial.html
$ grpc_cli ls localhost:50051
输出:
helloworld.Greeter
grpc.reflection.v1alpha.ServerReflection
$ grpc_cli ls localhost:50051 helloworld.Greeter -l
输出,其中 "service" 部分显示原型应该是什么样子并且还包含原型文件名。
filename: helloworld.proto
package: helloworld;
service Greeter {
rpc SayHello(helloworld.HelloRequest) returns (helloworld.HelloReply) {}
}
要获取有关邮件的信息,您可以使用:
$ grpc_cli type localhost:50051 helloworld.HelloRequest
输出:
message HelloRequest {
optional string name = 1;
}
grpc_cli是grpc官方打包的工具。 Evans CLI 是使用 public API 生成相同信息的第三方客户端。只要服务器导出它,您就可以在代码中以编程方式访问它(第一个 link 也包含指向其他语言的指针),在使用 grpc_cli 的脚本中,或使用第三方客户端。然后,您可以使用从服务器导出的信息来创建自己的原型文件。
但是,如果服务器不支持反射,那你就不走运了。
我看到 Evans CLI 可用于从客户端设置中确定服务器上公开的消息和会话。服务器正在使用的 .proto 文件(包含消息和会话详细信息)是否有可能在客户端设置上生成?如果是,如何以及如果否,那么埃文斯如何访问这些消息?
我对 gRPC 的概念不熟悉,所以这会很有帮助。我唯一知道的是,在 GoLang 中我们使用反射器来启用 Evans CLI 来访问消息和服务。
服务器可以选择启用反射,以便您可以看到已注册的 RPC 和原型消息。这是关于它的一般介绍:
https://github.com/grpc/grpc/blob/master/doc/server-reflection.md
您可以使用作为 gRPC 的一部分打包的 grpc_cli 来获取 RPC 列表和消息原型,如下所述:
https://grpc.github.io/grpc/cpp/md_doc_server_reflection_tutorial.html
$ grpc_cli ls localhost:50051
输出:
helloworld.Greeter
grpc.reflection.v1alpha.ServerReflection
$ grpc_cli ls localhost:50051 helloworld.Greeter -l
输出,其中 "service" 部分显示原型应该是什么样子并且还包含原型文件名。
filename: helloworld.proto
package: helloworld;
service Greeter {
rpc SayHello(helloworld.HelloRequest) returns (helloworld.HelloReply) {}
}
要获取有关邮件的信息,您可以使用:
$ grpc_cli type localhost:50051 helloworld.HelloRequest
输出:
message HelloRequest {
optional string name = 1;
}
grpc_cli是grpc官方打包的工具。 Evans CLI 是使用 public API 生成相同信息的第三方客户端。只要服务器导出它,您就可以在代码中以编程方式访问它(第一个 link 也包含指向其他语言的指针),在使用 grpc_cli 的脚本中,或使用第三方客户端。然后,您可以使用从服务器导出的信息来创建自己的原型文件。
但是,如果服务器不支持反射,那你就不走运了。