Я использую Castle Windsor 2.0 для внедрения зависимостей в моем проекте ASP.NET MVC 2.
Один из моих компонентов содержит данные конфигурации приложения и в настоящее время настроен как одноэлементный (намерение состоит в том, чтобы избежать частых обращений к базе данных для значений, которые не меняются очень часто).
<component id="Configuration" service="MyInterface,
MyAssembly" type="MyClass, MyAssembly2" lifestyle="Singleton" />
Я только что создал административный сайт, чтобы внести изменения в конфигурацию. Исходное приложение сохраняет значения конфигурации до перезапуска пула приложений (что неудивительно). Пользователи захотят иметь возможность своевременно применять свои изменения.
Возможные решения:
- Уменьшить время жизни пула приложений
- Попросите администраторов сайта повторно использовать пул приложений, если они хотят немедленного изменения.
- Переключиться на другой контейнер внедрения зависимостей
- Используйте один веб-сайт для всего
- Измените синглтон на PerWebRequest
- Создайте механизм, который позволяет интерфейсу администратора уведомлять приложение и обновлять синглтон.
- Заставьте синглтон истечь через установленное время, что приведет к обновлению
Я думаю, что вариант 7 (истечение срока действия синглтона) был бы идеальным, но после просмотра документации Castle может показаться, что функция истечения срока действия еще недоступна. индивидуальный образ жизни кажется возможным решением, но я не посмотреть, как я могу это реализовать.
Есть ли у кого-нибудь предложения о том, как реализовать варианты 6 или 7? Может быть, есть другое решение?