temporales sierra que pasa navegador mac limpiar imagenes htaccess high eliminar chrome caché cache borro borrar archivos aprovechar almacenamiento caching repository-pattern

caching - que - limpiar cache mac high sierra



Patrón de repositorio: almacenamiento en caché (2)

No estoy seguro de dónde debo implementar el almacenamiento en caché en mi patrón de repositorio.

¿Debería implementarlo en la lógica de servicio o en el repositorio?

GUI -> BusinessLogic (Servicios) -> DataAccess (Repositorios)


Es una buena idea no poner la lógica de almacenamiento en caché directamente en su repositorio, ya que eso viola el Principio de Responsabilidad Individual (SRP) y la Separación de Preocupaciones. SRP esencialmente establece que sus clases solo deberían tener un motivo para cambiar. Si combina las preocupaciones sobre el acceso a los datos y la política de caché en la misma clase, entonces, si alguna de estas necesidades cambia, deberá tocar la clase. También es probable que descubra que está violando el principio DRY, ya que es fácil tener la lógica de almacenamiento en caché extendida entre muchos métodos de repositorio diferentes, y si alguno de ellos necesita cambiar, terminará teniendo que cambiar muchos métodos.

El mejor enfoque es usar el patrón Proxy o Estrategia para aplicar la lógica de almacenamiento en caché en un tipo separado, por ejemplo, un repositorio en caché, que luego usa el repositorio db-centric actual según sea necesario cuando el caché está vacío. He escrito dos artículos que demuestran cómo implementar esto usando .NET / C #, que encontrarás en mi blog, aquí:

Si prefieres el video, también describo el patrón en Proxy Design Pattern en Pluralsight, aquí:


Lo manejaría en la capa de acceso al repositorio / datos. El razonamiento se debe a que no depende de la capa empresarial de dónde obtener los datos, ese es el trabajo del repositorio. El repositorio decidirá de dónde obtener los datos, la caché (si no es demasiado antigua) o de la fuente de datos en vivo en función de las circunstancias de la lógica de acceso a datos.

Es una cuestión de acceso a los datos más que un problema de lógica empresarial.