2010-11-30 2 views
0

После нескольких месяцев поиска и поиска я наконец решил опубликовать это.Обновить кеш-библиотеку Enterprise After External App Updates

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

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

+1

Entlib явно НЕ является распределенным кешем и не предназначен для нескольких пользователей, обновляющих кеш. Вам нужно использовать решение распределенного кеша; nCache имеет подключаемый кэш-менеджер для своего распределенного кеша, который работает с Entlib. – 2010-11-30 20:19:41

+0

Спасибо Крису ... что объясняет «странность», которую я видел здесь - http://stackoverflow.com/questions/9822226/sharing-enterprise-library-database-cache-between-multiple-applications/9824587#9824587 – 2012-03-22 15:51:50

ответ

0

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

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

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

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

в общем, вы желая выполнить «распределенное кэширование». С этой целью вы должны прочитать статью в журнале MSDN под названием «Distributed Caching On The Path To Scalability» для получения дополнительной информации о распределенных параметрах кеширования в .NET.

Смежные вопросы