Write-Through en C#: Guía Completa

Introducción: Escritura consistente

Write-Through escribe en la caché y en la base de datos en la misma operación.

Esto garantiza que la caché siempre tenga el dato más reciente, a costa de mayor latencia en escritura.

Es útil cuando la consistencia inmediata es más importante que la velocidad de escritura.

Write-Through
Prompt: Write-through cache flow to database, clean minimal style.

1. Naturaleza: Doble registro

Un banco registra un movimiento en el libro diario y en el sistema digital al mismo tiempo.

El doble registro evita discrepancias y asegura trazabilidad inmediata.

Registro
Prompt: Double ledger recording, soft illustration.

2. Mundo Real: Inventario crítico

En retail, cada venta actualiza el stock en cache y base para evitar sobreventa.

El costo es mayor latencia, pero se evita servir datos inconsistentes.

Inventario
Prompt: Inventory update flow, clean flat style.

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

public async Task UpdateAsync(Producto p)
{
    await repo.UpdateAsync(p);
    await cache.SetAsync(p.Id, p, TimeSpan.FromMinutes(10));
}

Si la base falla, la caché no debe actualizarse. Maneja transacciones o consistencia en la capa de aplicación.

El patrón funciona bien con escrituras moderadas y lecturas intensas.

4. Write-Through vs Write-Behind

Write-Through escribe sincrónicamente en base y caché. Write-Behind difiere la escritura en base.

Write-Through prioriza consistencia; Write-Behind prioriza rendimiento.

5. Diagrama UML

UML Write-Through
Prompt: UML diagram of write-through cache, clean vector layout.
Flujo Write-Through
Prompt: Write-through flow diagram, minimal infographic style.

⚠️ Cuándo NO Usar Write-Through

  • Si las escrituras son muy altas y la latencia es crítica.
  • Si puedes tolerar consistencia eventual y prefieres rendimiento.
  • Si la base de datos no escala con el volumen de escrituras.

💪 Ejercicio

Implementa Write-Through para un inventario y mide latencia antes y después.

Conclusión

Write-Through ofrece datos frescos y coherentes en caché.

Úsalo cuando la consistencia sea prioritaria y la latencia de escritura sea aceptable.