Есть ли лучший способ, чем использовать переменные сеанса для доступа к объекту в любом месте приложения?

#asp.net-mvc-3

#asp.net-mvc-3

Вопрос:

Я работаю с ASP.NET MVC 3.0. У меня есть страница со ссылкой на действие, которая выводит окно, в котором вы можете настроить определенное значение. Как только новое значение отправляется в базу данных, внешнее приложение обрабатывает значение и отправляет результат обратно в эту базу данных. Я хочу, чтобы ссылка на действие была отключена, пока внешнее приложение выполняет свою работу. Страница, над которой я работаю, автоматически обновляется с помощью некоторых вызовов AJAX. Дата, когда внешнее приложение завершило свою последнюю корректировку значения, сохраняется в базе данных. Сначала я подумал, что мог бы использовать переменные сеанса для хранения даты, когда была нажата ссылка на действие (потому что мне это нужно во всем приложении), а затем включить ссылку на действие, когда время настройки превышает время нажатия ссылки на действие, но я слышал, что это плохая практика. У кого-нибудь есть другое решение?

Ответ №1:

Поскольку вы уже используете базу данных — запросите базу данных, чтобы проверить текущее состояние. Если ваше приложение перезапускается — значение сеанса будет потеряно, если вы не используете сервер состояния (т. Е. sql server) для управления состоянием — если вас не волнует, потеряется ли оно при перезапуске. Вы можете использовать сеанс и сохранять вызовы базы данных самостоятельно, но база данных немного чище и не страдает от той же проблемы. Если вы в конечном итоге используете сеанс, не распространяйте это значение сеанса по всему вашему коду, просто используйте один метод, который считывает или устанавливает его (то же самое и с решением db)