¿Qué es gRPC y para qué sirve?
\n\ngRPC (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\nLa 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++).
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
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\nInstalación de gRPC para C++
\n\nLa 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\nMétodo 1: Instalación mediante vcpkg (recomendado)
\nvcpkg es un gestor de paquetes multiplataforma para C++ de Microsoft.
# 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\nDespués de la instalación, en su CMakeLists.txt debe conectar el paquete encontrado:
\nfind_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\nMétodo 2: Compilación desde el código fuente (Linux/macOS)
\nEste 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\nInicio rápido: Ejemplo "Hello World"
\n\nCrearemos una aplicación simple que recibe el nombre de un usuario y devuelve un saludo.
\n\nPaso 1: Definimos el servicio en el archivo .proto
\nCree el archivo hello.proto:
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\nPaso 2: Generamos el código C++
\nprotoc --grpc_out=. --plugin=protoc-gen-grpc=`wh