protobuf를 사용하여 RpcChannel 및 RpcController를 사용하여 서비스를 생성하려고합니다. 나는 구글 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)
언어 가이드 웹 페이지는 예 (https://developers.google.com/protocol-buffers/docs/proto#services)를 제공하는 "SearchService"클래스를 사용해야하지만 생성 된 코드에는 검색 서비스가 없습니다. 이 가이드에서는 RpcChannel/RpcController 용도의 전체 샘플을 제공하지 않았습니다.
그럼 어떻게하면 문제가 해결 될까요? Google을 검색했지만 RpcChannel/RpcController가 작동하는 방법에 대한 완전한 샘플을 제공하는 좋은 cpp 예제를 찾지 못했습니다. 힌트 또는 링크?
감사합니다.
감사합니다, gRPC 기본적으로없는 경우 설치 후 왜 .proto 파일을 컴파일하는 protoc 지원하는 "서비스"태그가 지원됩니다? 그리고 gRPC를 얻지 못하면 어떻게 사용합니까? 감사. –
서비스 태그를 추상 인터페이스 또는 RPC의 추상 사양으로 생각하십시오. 이를 통해 ServiceDescriptor의 정보로 플러그인 (코드 생성기)을 구현할 수 있습니다. – xosp7tom
그리고 역사적인 이유. Google은 오픈 소싱하는 동안 Google이 1) 직렬화 부분 2) RPC 부분을 분리하기로 선택했습니다. rpc 부분은 의도적으로 사용자 자신의 구현을 위해 그 때 남겨둔 반면 직렬화 부분이 먼저 릴리스되었습니다. Google의 rpc 부분 (grpc)은 나중에/최근에 오픈 소스입니다. – xosp7tom