Синглтон-объекты и AppPool Recycling

В настоящее время я создаю службы отдыха, которые проверяют подлинность пользователя на контроллере домена Kerberos. Поскольку нажатие на KDC каждый раз, когда пользователь пытается выполнить действие в системе, отнимает много времени, у меня есть кэш, в котором я храню токен аутентификации с соответствующим субъектом.

Поэтому в основном мои сервисы предлагают две схемы аутентификации: Kerberos и по токену. Проблема, с которой я столкнулся, заключается в том, что мой объект кеша (в одиночном контейнере в моем контейнере DI) теряется при повторном использовании пула приложений. Кроме того, даже если пул приложений не перерабатывается, это не позволяет мне распределять свои службы по нескольким серверам.

Как я могу сохранить свой объект кэша в пулах приложений?

1 ответ

Утилизируя пул приложений, вы по существу завершаете работу приложения и запускаете его с нуля. Как и в любом стандартном приложении, существует несколько способов сохранить данные в разных экземплярах приложения:

1) Добавьте уровень аутентификации поверх KDC. Создайте другую службу в другом пуле приложений, которую можно вызывать из основной службы. Вы по-прежнему будете сталкиваться с теми же проблемами, если новый пул приложений будет переработан, но условия для его повторного использования должны зависеть от аутентификации пользователей и состояния сервера.

2) Сохранять объекты в собственной базе данных или в файловой системе. Если вы сериализовали свой объект после аутентификации, вы можете сохранить объект в локальном хранилище, что может быть дешевле, чем доступ к контроллеру KDC.

Другие вопросы по тегам