¿Por qué su proyecto C# necesita un API Gateway?
\n\nImagine 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\nAquí 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\nUn 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
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\nDos herramientas principales para API Gateway en C#
\n\nEn el ecosistema .NET, hay dos soluciones potentes que merecen su atención:
\n\nOcelot C#
\nProbablemente 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
YARP .NET (Yet Another Reverse Proxy)
\nUn 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\nEn este artículo, nos centraremos en Ocelot — es más fácil para empezar y cubre el 90% de las tareas típicas.
\n\nCreando un API Gateway en C# con Ocelot: guía paso a paso
\n\nEscribamos código real. Crearemos una puerta de enlace API .NET que enrutará solicitudes a dos microservicios: UserService (puerto 5001) y OrderService (puerto 5002).
Paso 1: Crear el proyecto
\nAbra la terminal y ejecute:
\ndotnet new webapi -n ApiGatewayDemo\ncd ApiGatewayDemo\n\nInstale el paquete Ocelot:
\ndotnet add package Ocelot\n\nPaso 2: Configurar el enrutamiento
\nCree un archivo ocelot.json en la raíz del proyecto. En él describiremos las reglas de enrutamiento:
{\n "Routes": [\n {\n "DownstreamPathTemplate": "/api/users/{everything}",\n "DownstreamScheme": "http",\n "DownstreamHostAndPorts": [\n