Backend for Frontend (BFF) en C#: Guía Completa

Introducción: Backends por cliente

BFF crea backend específico para cada cliente (web, móvil, partners). Sin BFF: una API para todos (compromiso). Mobile necesita datos comprimidos, web necesita relaciones full, desktop batch. Con BFF: cada cliente su propio backend. Mobile BFF retorna comprimido. Web retorna full. Cada BFF adapta a cliente. Ventaja: mejor UX per client. Desventaja: multiplicar backends (maintenance). Usa cuando clients tienen necesidades diferentes (mobile vs web).

BFF
Prompt: BFF layers per client, clean minimal style.

1. Naturaleza: Menús personalizados

Un restaurante ofrece menús distintos para desayuno, almuerzo y cena.

El mismo “backend” ajusta la oferta según el cliente y el contexto.

Menús
Prompt: Different menus for different customers, soft illustration.

2. Mundo Real: Web vs Mobile

La web necesita vistas ricas; el móvil prioriza payloads livianos.

Un BFF para móvil agrega y simplifica datos, mientras el BFF web expone más detalle.

Clientes
Prompt: Web and mobile tailored APIs, clean flat style.

3. Implementación en C#: Código Paso a Paso

// BFF Mobile
app.MapGet("/mobile/home", async () =>
{
    var feed = await servicios.GetFeed();
    return new { feed, limit = 20 };
});

El BFF debe ser delgado: solo orquesta y adapta, no concentra lógica de negocio.

Usa contratos versionados para evitar romper clientes antiguos.

4. BFF vs Gateway único

Gateway único sirve a todos; BFF crea backends por cliente.

Si tus UIs son muy distintas, BFF reduce fricción. Si son similares, un gateway puede bastar.

5. Diagrama UML

UML BFF
Prompt: UML diagram of BFF pattern, clean vector layout.
Flujo BFF
Prompt: BFF flow diagram, minimal infographic style.

⚠️ Cuándo NO Usar BFF

  • Si solo tienes un cliente o UIs muy similares.
  • Si no puedes mantener múltiples capas de backend.
  • Si el equipo no tiene autonomía para gestionar cada BFF.

💪 Ejercicio

Diseña un BFF móvil que consolide datos de pedidos y tracking en un solo endpoint.

Conclusión

BFF mejora la experiencia del cliente al ofrecer APIs específicas y optimizadas.

Es ideal cuando existen múltiples UIs con necesidades distintas.