Перемещение SessionSate из InProc в StateServer
В настоящее время я работаю над приложением, которое сохраняет свое состояние сеанса в процессе. Из-за того, как приложение было написано, когда мы освобождаем пул приложений / приложений, перезапускаются данные сеанса, и пользователь выходит из системы.
Это не здорово по трем причинам:
- Обновление программного обеспечения выводит пользователей из системы
- Сложно во время исправления ошибок, когда мы перестраиваем решение, разработчик должен вернуться обратно на страницу, над которой он / она работает, что требует времени.
- Мы стремимся перейти к инфраструктуре со сбалансированной нагрузкой
Я решил переместить состояние сеанса в StateServer, чтобы предотвратить потерю сеанса.
Предварительным условием для использования StateServer является то, что все объекты, хранящиеся в Session, должны быть Serializable и, следовательно, должны быть явно декорированы с помощью System.SerializableAttribute.
Поэтому я обнаружил, что вручную просматриваю весь граф объектов нашего объекта SessionData (который довольно большой), и это занимает некоторое время.
Я остановился на этом этапе, поскольку это кажется довольно ошибочной задачей.
Я также обнаружил, что наш корневой объект SessionData может храниться в хорошем состоянии сеанса даже со свойствами, которые не были украшены атрибутом Serializable, при условии, что они были нулевыми. Поэтому, не пройдя через все, я не узнаю, пока не будет брошено исключение.
Итак, мои вопросы:
- Правильно ли я принимаю решение вывести состояние сеанса из процесса (возможно, мы переходим к модели балансировки нагрузки, поэтому я думаю, что так и должно быть)
- Это правильно, что мне нужно вручную пройти весь граф объекта и явно добавить System.SerializableAttribute.
Заранее спасибо.