Обновление кэша корпоративной библиотеки после обновления внешнего приложения - PullRequest
0 голосов
/ 30 ноября 2010

После нескольких месяцев поисков я наконец решил опубликовать это.

У нас есть приложение ASP.NET MVC, которое использует корпоративную библиотеку для кэширования элементов.Мы также используем службу Windows, которая часто обновляет эти кэшированные элементы.Проблема заключается в том, что когда служба Windows обновляет кэшированные элементы, веб-сайт mvc не видит обновленные кэшированные элементы, пока мы не сбросим IIS.Мы думали о том, чтобы добавить в службу некоторый код для перезапуска службы IIS, но думаем, что должен быть лучший способ.Кажется, есть еще один пост, в котором говорится об удалении элементов из внешнего приложения, но он не заходит достаточно далеко.

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

1 Ответ

0 голосов
/ 30 ноября 2010

Ну, вот и все.Кэш, используемый библиотекой предприятия, находится в оперативной памяти, а приложения ASP.NET и службы Windows имеют различное пространство памяти.Когда вы обновляете кэш в одном, вы не обновляете кэш в другом.

Проблема существует и в приложении ASP.NET, но, похоже, это кэш только для чтения, ивы выполняете запись из службы.

Вам нужно создать кеш, который может совместно использоваться обоими доменами приложений, и для этого есть много способов:

  • Сохранитьэлементы в общем хранилище персистентности (файловая система, база данных и т. д.), к которым оба домена приложений могут легко получить доступ
  • Имеется служба кэширования, которая будет обрабатывать обновления элементов кэша, но которую вы будете запрашивать (через WCF, дляпример) для элементов кэша

В общем случае вы хотите выполнить «распределенное кэширование».Для этого вам следует прочитать статью в журнале MSDN под названием « Распределенное кэширование на пути к масштабируемости » для получения дополнительной информации о параметрах распределенного кэширования в .NET

.
...