Я хотел бы, чтобы "пользовательское сообщение" было доступно для каждого запроса, отправляемого обратно сервером. Если пользовательского сообщения нет, сообщение остается пустым. Если он есть, значок активируется на экране каждого пользователя после того, как его запрос выполнен.
[править] «Сообщение пользователя» — это то, что настраивается администратором для приложения, которое я развертываю. Администратор может ввести текст в поле и нажать кнопку, чтобы отправить это сообщение всем остальным пользователям системы. Каждый раз, когда другой пользователь выполняет какое-либо действие, текущее пользовательское сообщение прикрепляется к ответу JSON и обрабатывается внешним интерфейсом.
Чтобы оптимизировать это, я хочу, чтобы сообщение сохранялось в памяти (а не в базе данных).
Я пытался использовать static. Я пытался использовать HttpApplicationState. В обоих случаях значение пользовательского сообщения «стирается» через некоторое время. После некоторых исследований выяснилось, что и статика, и HttpApplicationState зависят от IIS и когда он решает перезапустить пул приложений. (или что-то подобное)
Эта изменчивость static загадочна: она должна быть static — пока жив сам IIS, эта переменная должна жить. Это не должно зависеть от какой-то «перезагрузки» или чего-то еще. HttpApplicationState — это другая ситуация, которую я не совсем понимаю.
Мне нужен способ сохранить значение в энергонезависимой переменной, на которую я могу положиться. Если я установлю это значение сегодня, оно должно быть там завтра или на следующей неделе, если IIS не будет остановлен и перезапущен.
Любая помощь?
вот что я сделал, чтобы решить проблему в соответствии с принятым ответом ниже:
- пользовательское сообщение - это когда-то. поэтому, когда сообщение устанавливается каким-либо администратором, сохраните ответ в базе данных в этот момент времени и сохраните его в объекте Application["UserMessage"].
- когда приходят обращения от пользователей, текст в памяти для пользовательского сообщения добавляется к возвращаемому значению json.
- сообщение может быть очищено администратором в любое время, что очищает как сообщение в памяти, так и поле базы данных.
- когда IIS решит, что этого достаточно, и перезапустит приложение, метод Application_Start() (среди других задач) также повторно заполнит пользовательское сообщение из значения базы данных, которое было сохранено при установке пользовательского сообщения (согласно шагу 1).
теперь приложение работает как положено. за каждый запрос пользователя в систему не взимается дополнительная плата за обращение к базе данных - пользовательское сообщение всегда приходит из памяти. кроме того, база данных обновляется или загружается для пользовательского сообщения очень мало раз.