2010-01-25 3 views
1

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

Какова наилучшая практика хранения временных данных с одного запроса другому? Данные могут занимать до 10 мегабайт.

ответ

1

Если вам действительно нужно сохранить этот объем данных между веб-запросами, и данные специфичны для пользователя, я бы предложил его сериализацию и сохранение временной таблицы в базе данных с ключом для сеанса пользователей. Если вы используете сессию сервера Sql, вы можете сделать это через объект Session, иначе вам нужно будет написать собственную реализацию.

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

+0

Сохранение состояния сеанса в SQL Server кажется самым простым вариантом. Эта ссылка должна помочь http://support.microsoft.com/kb/317604 –

+2

10 мега доступно для состояния сеанса, по крайней мере, сеансы не предназначены для использования таким образом. – Robert

+0

@Robert - вот почему я указал, используя состояние сеанса «Sql server», а не состояние «inproc» session! –

0

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

+0

Или если вы держите свое состояние сеанса в sql-сервере, а не в памяти, вы можете использовать его, а не писать собственный процесс для записи и извлечения данных. Я бы предложил сохранить его на временную таблицу, а не писать в файловую систему. –

0

Возможно, его хранение в файле на диске будет достаточно, но тогда вы должны создать собственную реализацию файлового менеджера или что-то вроде этого.

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

+1

Преимущество использования состояния сеанса Sql заключается в том, что все методы уже существуют для вас, чтобы сохранять, извлекать и очищать данные. Если вы храните файлы в файловой системе, вам нужно будет написать их самостоятельно и быть очень осторожными с дисковым пространством (100 пользователей == 1Gb). Вам нужно будет убедиться, что эти файлы удалены, когда они больше не нужны. Я действительно не вижу преимущества в этом. В конечном итоге было бы лучше попытаться избежать необходимости сохранять этот объем данных между веб-запросами. –

+0

"(100 пользователей == 1Gb)" - то же самое для базы данных. Написание файлового менеджера, который обрабатывает этот сценарий, не является проблемой. – dariol

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