Допустим, у меня есть веб-приложение, реализованное как набор страниц мастера для редактирования сложного объекта. До тех пор, пока пользователь не нажмет кнопку «Готово», объект не будет сохранен в серверной системе (требование), поэтому в то же время мне приходится хранить всю информацию об объекте в каком-то состоянии сеанса .
Кроме того, на некоторых страницах мастера должны отображаться поля со списком и потенциально большим количеством элементов. Эти элементы извлекаются из серверной системы с помощью веб-службы.
По совпадению, мастер позволяет пользователю свободно переходить с одной страницы мастера на любую другую (используя ссылки на вкладки в верхней части формы), так что это не простая вещь "следующий, следующий ... закончить".
Дополнительное ограничение: веб-приложение работает в веб-ферме, и клиент устал от использования состояния сеанса на стороне сервера. В лучшем случае они хотят, чтобы размер состояния сеанса был минимальным (у них были проблемы с этим в прошлом).
Итак, в основном здесь есть две проблемы:
- Как / где хранить данные, введенные пользователем в мастере?
- Кэшировать ли элементы комбинированного списка / списка, полученные от сервера, и если да, то где?
Варианты, которые я рассматриваю:
Хранение объекта в WebForms-подобных ViewState (путем сериализации его в HTML-страницу). Это также будет включать элементы комбинированного списка. Очевидно, что проблема может быть связана с тем, что HTML-страницы становятся очень большими, и поэтому веб-приложение будет работать медленно.
Сохранение в состоянии сеанса на стороне сервера , независимо от пожеланий клиента и без знания того, как будет влиять производительность, до тех пор, пока она не будет протестирована в реальной веб-ферме (в конце проекта) .
Я не могу выбрать между ними. Или есть другая альтернатива?