我想使用protobuf生成使用RpcChannel和RpcController服務。我提到谷歌的protobuf的語言引導和:谷歌protobuf編譯器不會生成服務標籤的類?
我有樣品原型文件是這樣的:
語法=「proto2」;
protoc --cpp_out=./ examples.proto
我的.h和.cc文件:
message SearchRequest
{
required string Request = 1;
}
message SearchResponse
{
required string Response = 2;
}
service SearchService {
rpc Search (SearchRequest) returns (SearchResponse);
}
然後我編譯它。但是,當我搜索生成的代碼,我只找到了「請求」和「響應」類,而不是「SearchService」一類:
examples.pb.h:class SearchRequest;
examples.pb.h:class SearchResponse;
examples.pb.h:class SearchRequest : public ::google::protobuf::Message {
examples.pb.h: // @@protoc_insertion_point(class_scope:SearchRequest)
examples.pb.h:class SearchResponse : public ::google::protobuf::Message {
examples.pb.h: // @@protoc_insertion_point(class_scope:SearchResponse)
語言指南網頁提供了一個示例(https://developers.google.com/protocol-buffers/docs/proto#services)的需要使用「SearchService」類:但在生成的代碼中,沒有搜索服務。該指南沒有提供RpcChannel/RpcController用法的完整示例。
那麼我該如何修復這個例子才能使它工作?我搜索谷歌,但沒有找到任何好的cpp示例,給出了RpcChannel/RpcController如何工作的完整示例。任何提示或鏈接?
謝謝!
謝謝,如果GRPC是不是默認安裝的,那麼爲什麼protoc支持編譯.proto文件,其中「服務」標籤支持?如果我沒有獲得gRPC,它會如何使用?謝謝。 –
將服務標籤視爲RPC的抽象接口或抽象規範。有了它,您就可以使用ServiceDescriptor中的信息實現您的插件 - 實質上是代碼生成器。 – xosp7tom
和歷史原因。雖然谷歌是開源的,谷歌選擇分裂1)序列化部分2)rpc部分。序列化部分是首先發布的,而rpc部分是故意留給用戶自己實現的。谷歌的rpc部分(grpc)稍後/最近開源。 – xosp7tom