2

Немного смущен о хранении состояния сеанса. У меня есть приложение MVC, есть модели просмотра, которые ближе к представлению, тогда есть модели домена, которые имеют богатое поведение. Мы обязаны хранить какое-либо состояние сеанса в нашем приложении, и мне трудно решить, следует ли хранить мои модели просмотра или модные модели домена в моей сессии.Должен ли я хранить модели просмотра или модели домена в сеансе?

Мы унаследовали устаревшее приложение, и мы вынуждены расширить ViewModelBase, в котором есть много трещин. Поэтому я не решаюсь сохранять модели просмотра в сеансе. С другой стороны, в моделях домена есть поведение в них, и они не имеют права хранить их.

Любые идеи?

+0

Являются ли ваши объекты домена из Entity Framework? – Dai

+0

Нет, они не –

ответ

1

Я бы сказал, что нет. Во-первых, следует избегать использования сеанса в максимально возможной степени. Во-вторых, хранение объектов в сеансе может быть очень проблематичным. Если вы не используете хранилище сеансов in-proc (чего вам не следует), то для каждой другой поддержки сеанса потребуется, чтобы объекты были сериализованы. Для простых классов это не так уж плохо, но если вы имеете дело с иерархиями и графами объектов, то это будет ужасно больно.

Вы не указали какую-либо информацию о том, что вы на самом деле пытаетесь выполнить, кроме как «мы обязаны хранить какое-либо состояние сеанса». Требуется кем или что и почему? Возможно, если вы спросите о том, что вы на самом деле пытаетесь сделать, кто-то может дать вам лучшее решение, которое не предполагает сеансов вообще или, по крайней мере, минимально. Например, вместо того, чтобы хранить объект, не могли бы вы просто сохранить идентификатор и использовать его, чтобы вытащить объект из базы данных?

+0

Мы рассматриваем использование объектов Serializable для хранения в сеансе. В настоящее время мы оцениваем поставщиков сеансов. CouchBase является одним из тех поставщиков, поскольку мы уже используем его для других целей. Мы являемся приложением для электронной торговли, мы должны иметь возможность отслеживать сеанс пользователя на разных страницах. –

+0

Все по-другому. Это просто проверка подлинности и авторизация, и, хотя да, она использует сеансы, она не использует 'Session'. Я тоже запускаю приложение для электронной торговли, и единственное, что есть в 'Session' для нас когда-либо, - это промо-код, если он применяется. О, а также адреса доставки и выставления счетов для проверки гостей. Забыл об этом. Тем не менее, очень минимальное использование сеансов. –

+0

Мы также отслеживаем некоторые данные, относящиеся к пользователю. Например, если пользователь проявил интерес к чему-то на странице и перешел на другую страницу, мы хотим сохранить то, что он проявил к участию в сеансе, так что, когда мы находимся на другой странице, мы можем представить ему варианты. Да, мы используем кеширование для этого, но мы рассматриваем использование сеанса для достижения этого –

Смежные вопросы