Перемещение SessionSate из InProc в StateServer

В настоящее время я работаю над приложением, которое сохраняет свое состояние сеанса в процессе. Из-за того, как приложение было написано, когда мы освобождаем пул приложений / приложений, перезапускаются данные сеанса, и пользователь выходит из системы.

Это не здорово по трем причинам:

  1. Обновление программного обеспечения выводит пользователей из системы
  2. Сложно во время исправления ошибок, когда мы перестраиваем решение, разработчик должен вернуться обратно на страницу, над которой он / она работает, что требует времени.
  3. Мы стремимся перейти к инфраструктуре со сбалансированной нагрузкой

Я решил переместить состояние сеанса в StateServer, чтобы предотвратить потерю сеанса.

Предварительным условием для использования StateServer является то, что все объекты, хранящиеся в Session, должны быть Serializable и, следовательно, должны быть явно декорированы с помощью System.SerializableAttribute.

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

Я остановился на этом этапе, поскольку это кажется довольно ошибочной задачей.

Я также обнаружил, что наш корневой объект SessionData может храниться в хорошем состоянии сеанса даже со свойствами, которые не были украшены атрибутом Serializable, при условии, что они были нулевыми. Поэтому, не пройдя через все, я не узнаю, пока не будет брошено исключение.

Итак, мои вопросы:

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

Заранее спасибо.

0 ответов

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