Choreography en C#: Guía Completa

Introducción: Coordinación por eventos

En Choreography no existe un orquestador central. Cada servicio reacciona a eventos y decide su siguiente acción.

Esto reduce el acoplamiento y elimina un punto único de fallo, pero requiere disciplina en el diseño de eventos y trazabilidad.

La coordinación emerge del flujo de eventos: un servicio publica y otro responde, generando una cadena de reacciones.

Choreography
Prompt: Event-driven choreography flow, clean minimal style.

1. Naturaleza: Bandadas sincronizadas

Las aves vuelan en bandadas sin un líder central. Cada ave reacciona a señales locales de sus vecinas.

La coordinación global es resultado de decisiones locales, igual que en Choreography.

Bandada
Prompt: Birds flocking in coordination, soft natural illustration.

2. Mundo Real: Cadena logística

Un pedido aprobado dispara el empaque; el empaque dispara el envío; el envío dispara la facturación.

No hay un director central: cada etapa reacciona al evento anterior.

Este estilo permite agregar nuevas etapas sin reconfigurar un orquestador, pero obliga a controlar el orden y los duplicados.

Logística
Prompt: Logistics chain event flow, clean flat style.

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

public class OrderCreated { public string OrderId { get; set; } }
public class Packed { public string OrderId { get; set; } }

public class WarehouseService
{
    public event Action PackedEvent;
    public void OnOrderCreated(OrderCreated e)
    {
        // Empacar
        PackedEvent?.Invoke(new Packed { OrderId = e.OrderId });
    }
}

En sistemas reales, estos eventos viajan por un broker y cada servicio maneja su propia persistencia y reintentos.

La observabilidad es clave: sin trazas distribuidas, el flujo se vuelve difícil de entender.

4. Choreography vs Orchestration

Choreography es distribuido y emergente; Orchestration tiene un coordinador que controla el flujo.

Choreography escala mejor en equipos autónomos, pero puede volverse difícil de depurar sin buena telemetría.

5. Diagrama UML

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

⚠️ Cuándo NO Usar Choreography

  • Si necesitas control central estricto del flujo.
  • Si el equipo no tiene experiencia en eventos y observabilidad.
  • Si los errores deben detectarse y revertirse inmediatamente.

💪 Ejercicio

Diseña una coreografía para un pedido: creación, pago, preparación y envío. Define los eventos clave.

Conclusión

Choreography permite sistemas flexibles y desacoplados, ideales para microservicios autónomos.

Con contratos claros y trazabilidad, es una estrategia poderosa para flujos distribuidos.