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