gRPC para C++: guia completo com exemplos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

O que é gRPC e para que serve?

\n\n

gRPC (gRPC Remote Procedure Calls) é um framework de alto desempenho e código aberto para chamadas de procedimento remoto (RPC), desenvolvido pelo Google. Ele permite que um aplicativo cliente chame diretamente métodos em um aplicativo servidor, como se fosse um objeto local, simplificando a criação de sistemas distribuídos e microsserviços.

\n\n

Na base do gRPC está o Protocol Buffers (protobuf), um poderoso mecanismo de serialização de dados estruturados. Você define a estrutura de dados e o serviço em um arquivo .proto, e então o compilador protoc gera código nas linguagens desejadas (no nosso caso, C++).

\n\n

Principais vantagens do gRPC:

\n
    \n
  • Alto desempenho: Utiliza HTTP/2 para multiplexação de requisições e o formato binário Protobuf, que é significativamente mais rápido que JSON/XML.
  • \n
  • Tipagem forte: Os contratos entre serviços são claramente definidos em arquivos .proto.
  • \n
  • Suporte a streaming: Suporta server-streaming, client-streaming e bidirectional-streaming.
  • \n
  • Multilinguagem: Gera clientes e servidores em C++, Java, Python, Go, C#, Ruby e muitas outras linguagens.
  • \n
  • Autenticação e criptografia integradas: Suporte a TLS/SSL e interceptadores (interceptors).
  • \n
\n\n

A biblioteca gRPC para C++ é uma implementação nativa que oferece controle máximo sobre memória e desempenho, o que é crítico para sistemas de alta carga, servidores de jogos, aplicações financeiras e IoT.

\n\n

Instalação do gRPC para C++

\n\n

A instalação do gRPC para C++ é um processo mais complexo do que para Python, pois requer compilação a partir do código-fonte ou o uso do gerenciador de pacotes vcpkg. Veremos duas formas principais.

\n\n

Forma 1: Instalação via vcpkg (recomendada)

\n

vcpkg é um gerenciador de pacotes multiplataforma para C++ da Microsoft.

\n
# 1. Clonamos o vcpkg\ngit clone https://github.com/Microsoft/vcpkg.git\ncd vcpkg\n\n# 2. Instalamos o vcpkg (Windows: bootstrap-vcpkg.bat)\n./bootstrap-vcpkg.sh\n\n# 3. Integramos com o sistema (para Visual Studio ou CMake)\n./vcpkg integrate install\n\n# 4. Instalamos o gRPC (junto com protobuf e dependências)\n./vcpkg install grpc
\n

Após a instalação, no seu CMakeLists.txt você precisa conectar o pacote encontrado:

\n
find_package(gRPC CONFIG REQUIRED)\nfind_package(Protobuf CONFIG REQUIRED)\n\ntarget_link_libraries(my_target\n    gRPC::grpc++\n    gRPC::grpc++_reflection\n    protobuf::libprotobuf\n)
\n\n

Forma 2: Compilação a partir do código-fonte (Linux/macOS)

\n

Esta forma oferece mais controle, mas requer a instalação de dependências (cmake, openssl, zlib, abseil).

\n
# Clonamos o repositório com submódulos\ngit clone --recurse-submodules -b v1.62.0 https://github.com/grpc/grpc\ncd grpc\n\n# Criamos a pasta para compilação\nmkdir -p cmake/build\ncd cmake/build\n\n# Configuramos e compilamos\ncmake ../.. -DgRPC_INSTALL=ON \\\n            -DCMAKE_BUILD_TYPE=Release \\\n            -DCMAKE_INSTALL_PREFIX=/usr/local\nmake -j$(nproc)\nsudo make install
\n\n

Início rápido: Exemplo "Hello World"

\n\n

Vamos criar uma aplicação simples que recebe o nome do usuário e retorna uma saudação.

\n\n

Passo 1: Definimos o serviço no arquivo .proto

\n

Crie o arquivo hello.proto:

\n
syntax = "proto3";\n\npackage helloworld;\n\n// Definimos a mensagem para a requisição\nmessage HelloRequest {\n  string name = 1;\n}\n\n// Definimos a mensagem para a resposta\nmessage HelloReply {\n  string message = 1;\n}\n\n// Definimos o serviço RPC\nservice Greeter {\n  // RPC unário: uma requisição -> uma resposta\n  rpc SayHello (HelloRequest) returns (HelloReply);\n}
\n\n

Passo 2: Geramos o código C++

\n
protoc --grpc_out=. --plugin=protoc-gen-grpc=`wh                    

Recommendations