私はprotobufを使ってRpcChannelとRpcControllerを使ってサービスを生成しようとしています。私はGoogleのいるProtobufの言語ガイドを参照して:Googleのprotobufコンパイラはサービスタグのクラスを生成しませんか?
は、私はこのようなサンプルプロトファイルを持っている:
構文=「proto2を」。私は.Hとの.ccファイルを持っ
protoc --cpp_out=./ examples.proto
:
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)
言語ガイドのWebページは、例(https://developers.google.com/protocol-buffers/docs/proto#services)を提供しました"SearchService"のクラスを使用する必要がありますが、生成されたコードには検索サービスはありません。このガイドでは、RpcChannel/RpcControllerの使用方法の完全なサンプルを提供していませんでした。
私はどのように動作させるために例を修正できますか?私はGoogleを検索しましたが、RpcChannel/RpcControllerがどのように動作するかを示す完全なサンプルを提供する良いcppの例は見つかりませんでした。ヒントやリンクは?
ありがとうございます!
gRPCがインストールされ、デフォルトではない場合おかげで、なぜprotocサポートは、「サービス」のタグがサポートされている.protoファイルをコンパイルするには?私がgRPCを手に入れないと、どうやって使用されますか?ありがとう。 –
RPCの抽象的なインターフェイスまたは抽象的な仕様としてサービスタグを想定します。これにより、ServiceDescriptorからの情報で、プラグイン(コードジェネレータ)を実装することができます。 – xosp7tom
歴史的な理由。 Googleはオープンソーシングですが、Googleは分割することを選択しました。1)シリアル化パート2)RPCパート。 rpcの部分は意図的にユーザ自身の実装のために放置されていましたが、最初に直列化部分がリリースされました。 Googleのrpcの部分(grpc)は、後で/最近オープンソースです。 – xosp7tom