Совместное использование HttpRuntime.Cache между двумя приложениями IIS - PullRequest
4 голосов
/ 07 августа 2009

У меня есть два приложения ASP.NET 2.0 в IIS; система общественного бронирования и система администрирования для управления ценами. Существует общий проект DLL, который обращается к базе данных и используется обоими приложениями.

Для повышения производительности цены кэшируются в коде DLL, чтобы сохранить попадание в базу данных при каждом запросе. Однако когда администратор изменяет цены, кэш обновляется в приложении администратора (и, очевидно, он не обновляется в общедоступном приложении)

Итак, к вопросу. Можно ли настроить IIS так, чтобы эти два приложения совместно использовали HttpRuntime.Cache? Если так, как это должно быть настроено?

Ответы [ 2 ]

3 голосов
/ 07 августа 2009

Это побило бы смысл иметь два приложения - они не должны совместно использовать одну и ту же кучу памяти DLL, которая была бы необходима. Вам нужен канал связи между ними, и веб-страницы администратора должны уведомлять об изменениях в кэше, что приведет к обновлению.

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

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

0 голосов
/ 13 января 2016

Нет; по опыту это не сработает (.NET 4.6, IIS 8.5, 2 приложения - обычная DLL, использующая один и тот же пул приложений). Документацию очень трудно найти (за пределами «элементы кэша хранятся в памяти» ) - фактически единственная описательная часть была , что @Thies указано выше - но, как он заявил, я считаю, Это связано с тем, что кеш хранится в выделенной памяти DLL, поэтому (поскольку у нас все еще есть один процесс, но два домена приложения ), общая DLL загружается отдельно в два домена приложения, а память DLL не разделяется.

...