ObjectCache или локальные поля для моей службы WCF?

У меня есть сервис, на котором я хотел реализовать какое-то кэширование, но не уверен, стоит ли мне использовать ObjectCache в.NET 4 или просто иметь частные поля в сервисе, которые через некоторое время обновляются.

Ситуация следующая: служба используется для возврата больших порций данных. В настоящее время мы попадаем в базу данных для каждого запроса к сервису. Эти данные обновляются только один раз в день в полночь. Я хочу кэшировать эти данные в сервисе и обновлять их каждую ночь после обновления базы данных (скажем, около 12:30).

Теперь, в прошлом, мы заполняли локальные поля и создавали "поток мониторинга", который работал бы постоянно и через какое-то определенное время повторно заполнял эти поля. Одним из недостатков, который я увидел, было то, что у класса обслуживания был некоторый дополнительный код для хранения.

Если я переключаюсь на ObjectCache, одним из преимуществ является автоматическое удаление по истечении срока действия. Я думал о том, чтобы назначить метод обратного вызова делегату CacheEntryRemovedCallback и, когда он был вызван, просто повторно кэшировать данные в какой-то момент в будущем (~30 минут после обновления базы данных).

Мой вопрос для службы WCF, что является более желательным вариантом для кэширования данных?

1 ответ

Решение

Использование System.Runtime.Caching, Это лучше, чем доморощенный велосипед.

Ты можешь использовать SqlChangeMonitor если ваши данные обновляются только в полночь. Это значительно упростит логику, и ваш кеш будет синхронизирован с данными.

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

Другие вопросы по тегам