2013-09-23 3 views
2

C# - ASP MVC - .NET 4.5 - Bootstrap - БритвыУпорство Список объектов между страницами - ASP MVC

У меня есть мастера форм (http://vadimg.com/twitter-bootstrap-wizard-example/examples/basic.html), который используется для установки сложного объекта (obj1). Свойством obj1 является List<obj2>. На одном шаге мастера я хочу добавить в список несколько obj2. Поскольку obj2 также немного сложный, я думал, что я буду использовать другой мастер, чтобы помочь его построить. За исключением того, что мне нужно упорствовать в этом List<obj2> на мастере 1, пока я ухожу в мастер-2, еще один obj2.

Моя первая мысль заключалась в том, чтобы использовать сеанс для хранения List<obj2>, мне было просто интересно, если это хороший вариант, или если будет лучше? Пользователь может покинуть Wizard1, чтобы перейти в Wizard2 и вернуться несколько раз.

+1

Почему вы исключающую сохраняющимся его в базе данных? –

+0

Перед записью в базу данных необходимо заполнить всю информацию. Плюс я пытаюсь ограничить вызовы в базу данных, где могу. – Will

+0

Итак, мой вопрос: почему вы пытаетесь ограничить вызовы в базе данных? Вы доказали свою проблему с производительностью? Вы должны спросить себя об этом ... потому что вы настраиваете себя на боль, чем это стоит. Кроме того, вы просто торгуете вызовами базы данных для использования памяти (используя Session). –

ответ

2

Здесь нет идеального ответа; каждый подход имеет компромиссы. Но вот некоторые варианты, которые я могу думать (и они не зависят от ASP.NET/C#)

  • Session (как вы предлагаете)
    • Это будет хранить данные в памяти веб-сервера (по умолчанию) , Если у вас много пользователей, это может быть проблемой.
    • Вы рискуете потерять информацию, когда пользователь получит новый файл cookie/время сеанса.
    • Потенциально более высокая производительность, что дб, опять же в зависимости от количества пользователей
  • базы данных (как вы упомянули)
    • Может вызвать больше трафика базы данных.
    • Может сохранять информацию для пользователя, даже если они закрывают браузер, выключают компьютер, мощность гаснет и т. Д.
    • Возможно, стоит попробовать отдельную базу данных NoSQL только для данных временного мастера.
  • Cookie (хранить данные на компьютере пользователя)
    • Пользователей могут потенциально искажать/просмотреть данные
    • Существуют ограничение на размере печенья (4 КБ каждого?)
  • Локальное хранение данных (HTML5)
    • Подобно печеньем
    • Но не такой маленький предел
    • Не каждый браузер поддерживает его (может потребоваться polyfill)
  • Форма/Post/Hidden/ViewState
    • Вы можете просто отправить данные и перетащить информацию из ответа на ответ
    • Но это становится действительно раздражает с задней кнопкой & таймаутов
    • Много работы, и снова, пользователь может искажать информацию
Смежные вопросы