API Gateway para microservicios en C#: guía completa

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

¿Por qué su proyecto C# necesita un API Gateway?

\n\n

Imagine que está construyendo una aplicación web moderna en C#. Tiene un servicio de usuarios, un servicio de pedidos, un servicio de pagos — y cada uno vive en su propio puerto, e incluso en diferentes servidores. La aplicación cliente (frontend o aplicación móvil) debe conocer todas estas direcciones, formatos de datos, protocolos de autenticación. Una pesadilla, ¿verdad?

\n\n

Aquí entra en escena el API Gateway para servicios C# — un punto de entrada único que se encarga de todo el "trabajo sucio": enrutamiento, agregación de respuestas, verificación de tokens, almacenamiento en caché y balanceo de carga. En este artículo, analizaremos cómo implementar una puerta de enlace API .NET en la práctica, utilizando herramientas modernas como Ocelot C# y YARP .NET.

\n\n

¿Qué es un API Gateway y por qué lo necesitan los microservicios?

\n\n

Un API Gateway es una capa intermedia entre los clientes y sus servicios backend. Funciona como un "despachador": recibe solicitudes HTTP entrantes, las analiza y las redirige a los microservicios C# correspondientes. Además, la puerta de enlace puede realizar tareas adicionales:

\n\n
    \n
  • Enrutamiento de solicitudes — dirigir solicitudes a diferentes servicios según la URL, los encabezados o los parámetros.
  • \n
  • Agregación de datos — recopilar respuestas de varios servicios y devolver un único JSON al cliente.
  • \n
  • Autenticación API Gateway — verificar tokens JWT o claves API antes de que la solicitud llegue al servicio.
  • \n
  • Balanceo de carga — distribuir solicitudes entre instancias de un mismo servicio.
  • \n
  • Almacenamiento en caché — almacenar temporalmente respuestas para datos solicitados con frecuencia.
  • \n
  • Rate Limiting — limitar el número de solicitudes de un solo cliente.
  • \n
\n\n

Sin una puerta de enlace API .NET, cada cliente debe conocer la arquitectura de todo el sistema. Con ella, el cliente se comunica solo con un endpoint, y todo lo demás ocurre "bajo el capó".

\n\n

Dos herramientas principales para API Gateway en C#

\n\n

En el ecosistema .NET, hay dos soluciones potentes que merecen su atención:

\n\n

Ocelot C#

\n

Probablemente el API Gateway para servicios C# más popular. Ocelot es una biblioteca de código abierto que agrega funciones de puerta de enlace a cualquier aplicación ASP.NET Core. Soporta:

\n
    \n
  • Enrutamiento basado en configuración JSON
  • \n
  • Agregación de respuestas
  • \n
  • Autenticación y autorización
  • \n
  • Rate limiting
  • \n
  • Balanceo de carga (RoundRobin, LeastConnection)
  • \n
  • WebSockets
  • \n
\n\n

YARP .NET (Yet Another Reverse Proxy)

\n

Un proyecto de Microsoft que se posiciona como un proxy inverso de alto rendimiento. YARP es más flexible y eficiente, pero requiere más configuración manual. Es ideal si necesita control total sobre cada solicitud.

\n\n

En este artículo, nos centraremos en Ocelot — es más fácil para empezar y cubre el 90% de las tareas típicas.

\n\n

Creando un API Gateway en C# con Ocelot: guía paso a paso

\n\n

Escribamos código real. Crearemos una puerta de enlace API .NET que enrutará solicitudes a dos microservicios: UserService (puerto 5001) y OrderService (puerto 5002).

\n\n

Paso 1: Crear el proyecto

\n

Abra la terminal y ejecute:

\n
dotnet new webapi -n ApiGatewayDemo\ncd ApiGatewayDemo
\n\n

Instale el paquete Ocelot:

\n
dotnet add package Ocelot
\n\n

Paso 2: Configurar el enrutamiento

\n

Cree un archivo ocelot.json en la raíz del proyecto. En él describiremos las reglas de enrutamiento:

\n\n
{\n  "Routes": [\n    {\n      "DownstreamPathTemplate": "/api/users/{everything}",\n      "DownstreamScheme": "http",\n      "DownstreamHostAndPorts": [\n                

Blogs

Book Recommendations