2012-02-23 3 views
0

Я работаю над проектом ASP MVC с использованием C#.Где можно хранить общие данные на веб-сайте ASP MVC?

Мой вопрос в основном является лучшим местом для хранения некоторых данных, которые вы получаете в данной части вашего сайта, например, например, о методе, который обрабатывает SignOn пользователя на сайте, а затем вы хотите для доступа к этим данным в других частях веб-сайта, скажем, на классах вашего модельного слоя.

Предположим, что данные - это всего лишь список строк, что было бы лучше, сохранить его как список или обернуть список классом?

Спасибо.

ответ

2

Это зависит от того, как долго вам нужны ваши данные.

  1. В случае одного запроса можно использовать TempData на контроллере

  2. Если вы хотите сохранить его на сессии (иначе в следующий раз, когда пользователь регистрируется на сайте его уже не будет) вы можете использовать Session

  3. Если вы хотите сохранить его навсегда, вам нужно будет использовать какое-то автономное хранилище, такое как база данных или файл какого-либо рода.

Удачи.

+0

Будьте предельно ясны в отношении объема этих данных (запрос против сеанса), затем следуйте советам Шенку. Моим единственным добавлением является рассмотрение в кеше памяти, таком как memcached, redis или appfabric, если вы хотите делиться вещами между серверами. – hoserdude

0

Я думаю, что подобный вопрос был задан вопросом, прежде чем вот URL Session variables in ASP.NET MVC вы скорее всего хранить их в сессии

0

, который является лучшим местом для хранения некоторых данных, которые вы получите в данной части на вашем веб-сайт, скажем, например, о методе, который обрабатывает SignOn пользователя на сайт, а затем вы хотите получить доступ к этим данным в других частях веб-сайта, скажем, по классам вашей модели .

База данных - отличный кандидат для хранения такой информации. Или файл cookie, если он специфичен для пользователя, и вам не нужно, чтобы он длился очень долго. Или файл на сервере. Или в Облаке. Или напишите обертку P/Invoke вокруг неуправляемой функции Win32 на C++, которая будет хранить данные на FTP-сервере вашей интранет вашей компании. Возможности, которые у вас есть, близки к бесконечности. Просто выберите тот, который вам больше всего нравится.

И я в явном виде не, предлагающий вам использовать сеанс вопреки тому, что другие могут вам предложить.

+0

Иногда сеанс просто не может быть «разумно» предотвращен. Единственное, что я использую, это то, что пользователь пытается отправить некоторые данные (например, форму), но не входит в систему, поэтому мне нужно перенаправить на страницу регистрации/входа, а затем снова отобразить предварительно заполненные данные после перенаправления. Единственная альтернатива - хранить «временные» данные в db (например, сохранять, извлекать, удалять), что является излишним. – RPM1984

+0

@ RPM1984, конечно, что сеанса всегда можно избежать. Я всегда избегаю этого. Что касается описываемого сценария, то есть, есть много других способов его достижения, таких как файлы cookie, HTML 5 sessionStorage, ... –

+0

Думаю, я мог бы использовать файлы cookie, но это все еще «сеанс», хотя клиент -боковая сторона. Что касается хранилища HTML5 dom, как это будет работать? Как я могу получить данные формы из формы на страницу регистрации, а затем снова? Помните, что это POST, затем GET (перенаправление на страницу входа), затем POST (логин), затем еще один GET (обратно на исходную страницу). Плюс с печеньем, вы должны явно уничтожить его (или оставить его висит вокруг). По крайней мере, с помощью TempData он автоматически удаляется после чтения. Во всяком случае, мы могли бы пойти весь день. Я знаю ваше чувство на сеансе. :) – RPM1984

1

Ум, простите мое невежество, но разве вы не можете сохранить его в базе данных?

Что вы подразумеваете под «общим»? Поделился кем, разными страницами, но тем же пользователем? Или разными пользователями?

Если последний -> DB.

Если первый, либо TempData, либо если вы говорите об «аутентификации», а затем храните его в билете проверки подлинности форм (при условии, что Forms Auth).

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