Read-Through en C#: Guía Completa

Introducción: Caché auto-cargada

En Read-Through, la caché actúa como fachada: cuando hay un miss, ella misma consulta la base y guarda el resultado.

La aplicación simplifica su lógica de lectura, delegando la carga en el proveedor de caché.

Es ideal cuando quieres centralizar el comportamiento de caché en un solo punto.

Read-Through
Prompt: Read-through cache auto-load, clean minimal style.

1. Naturaleza: Biblioteca con bibliotecario

El lector pide un libro. Si no está en estantería, el bibliotecario lo trae del depósito.

El lector no necesita conocer la ubicación: todo pasa por la misma interfaz.

Bibliotecario
Prompt: Librarian fetching book, soft illustration.

2. Mundo Real: Perfil de usuario

Una API consulta caché; si no existe el perfil, la caché lo trae del repositorio y lo deja listo.

Esto evita duplicar lógica de caché en múltiples servicios.

Perfil
Prompt: User profile read-through flow, clean flat style.

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

// Pseudocódigo: proveedor de caché con loader
var profile = await cache.GetOrLoadAsync(
    key, () => repo.GetByIdAsync(key));

Requiere soporte del proveedor (Redis, Memcached, etc.) o un wrapper propio.

Define TTL y políticas de invalidación para evitar datos obsoletos.

4. Read-Through vs Cache-Aside

Read-Through centraliza la carga en la caché; Cache-Aside lo controla la aplicación.

Read-Through reduce código duplicado, pero exige una caché más inteligente.

5. Diagrama UML

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

⚠️ Cuándo NO Usar Read-Through

  • Si necesitas lógica de carga específica por caso.
  • Si tu caché no soporta loaders confiables.
  • Si el costo de fallos de carga es alto.

💪 Ejercicio

Implementa un wrapper de caché con GetOrLoadAsync y TTL configurables.

Conclusión

Read-Through simplifica lecturas y centraliza el comportamiento de caché.

Es una buena opción cuando quieres consistencia de acceso y menos código duplicado.