¿ObjectCache o campos locales para mi servicio WCF?

Tengo un servicio en el que quería implementar algún tipo de almacenamiento en caché, pero no estoy seguro de si debo usar ObjectCache de .NET 4 o simplemente tener campos privados en el servicio que, después de un tiempo, se actualizan.

La situación es la siguiente: el servicio se utiliza para devolver grandes cantidades de datos. Actualmente, buscamos en la base de datos los datos de cada solicitud al servicio. Estos datos solo se actualizan una vez al día a la medianoche. Quiero almacenar en caché estos datos en el servicio y actualizarlos todas las noches después de que se actualice la base de datos (digamos alrededor de las 12:30 a. m.).

Ahora, en el pasado, llenábamos los campos locales y creábamos un "hilo de control" que se ejecutaba constantemente y, después de un período de tiempo específico, volvíamos a llenar esos campos. Una desventaja que vi fue que la clase de servicio tenía un código adicional para el almacenamiento.

Si cambio a ObjectCache, un beneficio es la eliminación automática cuando vence. Lo que estaba pensando hacer era asignar un método de devolución de llamada al delegado CacheEntryRemovedCallback y cuando se llamara, simplemente volver a almacenar en caché los datos en algún momento en el futuro (~30 minutos una vez que se actualice la base de datos).

Mi pregunta es, para un servicio WCF, ¿cuál es la opción más deseable para almacenar datos en caché?

preguntado el 28 de agosto de 12 a las 14:08

1 Respuestas

Utilice las System.Runtime.Caching. Es mejor que la bicicleta de cosecha propia.

Puedes usar SqlChangeMonitor si sus datos se actualizan solo a medianoche. Eso simplificará significativamente la lógica y su caché se sincronizará con los datos.

http://www.codeproject.com/Articles/167282/NET-4-0-MemoryCache-with-SqlChangeMonitor

Respondido 29 ago 12, 03:08

Gracias por su respuesta. No estoy seguro de poder usar SqlChangeMonitor porque la base de datos de la que extraigo se reconstruye todas las noches... no simplemente se actualiza. - telonias

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.