Skip to content

Soporte para gRPC

En este tutorial, exploraremos cómo añadir soporte gRPC a un microservicio existente, utilizando el generador codedesignplus:microservice. Veremos cómo configurar gRPC y cómo exponer los servicios de tu microservicio para ser consumidos por otros servicios a través de este protocolo. Tomaremos el microservicio de Clientes creado en el artículo anterior como ejemplo.

¿Por qué gRPC?

gRPC es un framework moderno de alto rendimiento para RPC (Remote Procedure Call), desarrollado por Google. Utiliza Protocol Buffers (protobuf) como lenguaje de definición de interfaz y soporta varios lenguajes de programación. gRPC ofrece ventajas significativas sobre REST, especialmente en microservicios, gracias a su:

  • Eficiencia: Serialización binaria con protobuf que reduce el tamaño de los mensajes y el tiempo de procesamiento.
  • Rendimiento: Permite comunicación bidireccional y streams, ideal para escenarios de baja latencia.
  • Tipado Fuerte: Los archivos .proto aseguran una comunicación consistente entre cliente y servidor.
  • Generación Automática de Código: Facilita la creación de clientes y servidores en varios lenguajes.

Prerrequisitos

Para seguir este tutorial, necesitarás:

  1. Tener creado el microservicio Clients siguiendo el tutorial anterior.

¿Qué Aprenderás?

  1. Cómo agregar soporte gRPC a un microservicio existente utilizando el generador codedesignplus:microservice.
  2. Cómo definir servicios gRPC utilizando archivos .proto.
  3. Cómo configurar un servidor gRPC en tu microservicio.
  4. Cómo implementar los servicios gRPC en el código de tu microservicio.

Añadiendo Soporte gRPC

El generador codedesignplus:microservice facilita la incorporación de gRPC a tu microservicio. Usaremos el generador con la opción grpc.

  1. Abre tu terminal y navega al directorio raíz de tu microservicio de Clientes y ejecuta el siguiente comando:

    Terminal window
    yo codedesignplus:microservice grpc
    gRPC Output
  2. Después de la ejecución del comando, deberás ver una nueva estructura de archivos con los componentes de gRPC.

    gRPC VSCode

Modificando el Servicio gRPC

Ahora que hemos añadido gRPC a nuestro microservicio, vamos a personalizar el servicio gRPC.

Archivo .proto

El archivo clients.proto define los servicios y mensajes gRPC para nuestro microservicio. El generador habrá creado un archivo base.

Para este ejemplo, vamos a definir un servicio bidireccional para consultar el cliente por su id.

gRPC Proto

Implementación del Servicio gRPC

El generador ha creado una clase base ClientService. Ahora, debemos implementar cada uno de los métodos definidos en el archivo .proto.

Para este ejemplo, implementamos el método GetClient que recibe un mensaje GetClientRequest y lo convierte a la query GetClientByIdQuery para ser procesado por el handler.

Archetype

Configuración de Mapster

Para mapear la respuesta del handler al mensaje gRPC, necesitamos configurar Mapster.

gRPC Mapster

Configuración del Servidor gRPC

El generador también actualizó el archivo Program.cs para registrar el servicio gRPC. Generalmente, no necesitarás modificar esto, pero es importante conocer dónde se configura el servidor gRPC.

app.MapGrpcService<ClientService>().RequireAuthorization();

Compilación

Para asegurarnos de que nuestro microservicio con gRPC se compila correctamente, ejecutaremos el comando dotnet build en la raíz del proyecto. El resultado de la compilación se mostrará en la consola y se generará una carpeta bin con los archivos binarios necesarios para ejecutar el microservicio.

gRPC Build

Conclusiones

En este tutorial, hemos aprendido cómo agregar soporte gRPC a un microservicio existente utilizando el generador codedesignplus:microservice. Hemos visto cómo definir un archivo .proto, cómo implementar los servicios gRPC, y cómo configurar el servidor gRPC en nuestro microservicio. Ahora, tu microservicio de Clientes puede ser consumido a través de gRPC, además de REST.

Esto te proporcionará una base sólida para construir microservicios eficientes y escalables, utilizando la combinación de REST y gRPC según tus necesidades.


Espero que este borrador sea de utilidad. ¡Avísame si tienes alguna otra solicitud o quieres hacer ajustes!