gRPC para C++: guía completa con ejemplos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

¿Qué es gRPC y para qué sirve?

\n\n

gRPC (gRPC Remote Procedure Calls) es un framework de alto rendimiento y código abierto para llamadas a procedimientos remotos (RPC), desarrollado por Google. Permite que una aplicación cliente llame directamente a métodos en una aplicación servidora como si fuera un objeto local, lo que simplifica la creación de sistemas distribuidos y microservicios.

\n\n

La base de gRPC es Protocol Buffers (protobuf), un potente mecanismo de serialización de datos estructurados. Usted define la estructura de datos y el servicio en un archivo .proto, y luego el compilador protoc genera código en los lenguajes necesarios (en nuestro caso, C++).

\n\n

Principales ventajas de gRPC:

\n
    \n
  • Alto rendimiento: Utiliza HTTP/2 para multiplexar solicitudes y el formato binario Protobuf, que es significativamente más rápido que JSON/XML.
  • \n
  • Tipado estricto: Los contratos entre servicios están claramente definidos en archivos .proto.
  • \n
  • Soporte de transmisión: Admite server-streaming, client-streaming y bidirectional-streaming.
  • \n
  • Multilenguaje: Genera clientes y servidores en C++, Java, Python, Go, C#, Ruby y muchos otros lenguajes.
  • \n
  • Autenticación y cifrado integrados: Soporte para TLS/SSL e interceptores (interceptors).
  • \n
\n\n

La biblioteca gRPC para C++ es una implementación nativa que brinda el máximo control sobre la memoria y el rendimiento, algo crítico para sistemas de alta carga, servidores de juegos, aplicaciones financieras e IoT.

\n\n

Instalación de gRPC para C++

\n\n

La instalación de gRPC para C++ es un proceso más complejo que para Python, ya que requiere compilación desde el código fuente o el uso del gestor de paquetes vcpkg. Veremos dos métodos principales.

\n\n

Método 1: Instalación mediante vcpkg (recomendado)

\n

vcpkg es un gestor de paquetes multiplataforma para C++ de Microsoft.

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

Después de la instalación, en su CMakeLists.txt debe conectar el paquete 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

Método 2: Compilación desde el código fuente (Linux/macOS)

\n

Este método brinda más control, pero requiere instalar dependencias (cmake, openssl, zlib, abseil).

\n
# Clonamos el repositorio con submódulos\ngit clone --recurse-submodules -b v1.62.0 https://github.com/grpc/grpc\ncd grpc\n\n# Creamos la carpeta de compilación\nmkdir -p cmake/build\ncd cmake/build\n\n# Configuramos y compilamos\ncmake ../.. -DgRPC_INSTALL=ON \\\n            -DCMAKE_BUILD_TYPE=Release \\\n            -DCMAKE_INSTALL_PREFIX=/usr/local\nmake -j$(nproc)\nsudo make install
\n\n

Inicio rápido: Ejemplo "Hello World"

\n\n

Crearemos una aplicación simple que recibe el nombre de un usuario y devuelve un saludo.

\n\n

Paso 1: Definimos el servicio en el archivo .proto

\n

Cree el archivo hello.proto:

\n
syntax = "proto3";\n\npackage helloworld;\n\n// Definimos el mensaje para la solicitud\nmessage HelloRequest {\n  string name = 1;\n}\n\n// Definimos el mensaje para la respuesta\nmessage HelloReply {\n  string message = 1;\n}\n\n// Definimos el servicio RPC\nservice Greeter {\n  // RPC unario: una solicitud -> una respuesta\n  rpc SayHello (HelloRequest) returns (HelloReply);\n}
\n\n

Paso 2: Generamos el código C++

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

Recommendations