Мне нужно разработать специальную службу кэширования (либо службу WCF, либо службу удаленного взаимодействия .Net, либо другую реализацию) для кэширования данных (данных мониторинга приложения для измерения задержки .net3.5) из базы данных (SQL Server 2005), котораязатем могут быть использованы 2-3 службами Windows (службы .net 3.5 WCf), поэтому им не нужно повторно вызывать БД.Таким образом, по сути, это дополнительный уровень сервисного уровня между этими сервисами и БД, чтобы уменьшить потери производительности при вызове БД. Данные в БД большие и очень динамичные (события непрерывно вставляются в БД в течение дня), которые мы хотим кэшировать.Каждый из обслуживающих окон сервисов зависит от другого (один сервис извлекает данные из одной таблицы в Db и агрегирует данные и помещает в другую таблицу в БД, которая затем будет использоваться другим сервисом).у нас есть следующие требования:
- Может иметь модель Push или Pull для передачи или извлечения данных в / из БД и Сервисов.
- Кэш должен уменьшить общее влияние на БДи загружать данные по дельте, а не перезагружать данные полностью
- Данные кэша должны обновляться, если изменились исходные данные в БД.Должна быть определена политика истечения срока действия Sql-кеша.
- Должны иметь асинхронные вызовы методов для извлечения данных из БД и обновления кеша для минимизации времени ожидания
- Кеш должен поддерживать параллельные запросы к одной БД
- Использование ЦП и памяти должно поддерживаться на оптимальном уровне, чтобы оно не оказывало негативного влияния на другие службы.
У нас нет кластерной или распределенной среды, и она не должна быть очень высокоймасштабируемое решение.
Я хочу знать, как лучше всего реализовать это на основе нескольких доступных технологий, чтобы не усложнять его:
- .Net Framework Caching
- Кэширование когерентности
- Скорость
- Услуги на основе отдыха для WCF
Любые предложения и рекомендации будут очень неоценимы.
с уважением, KK