Хранить глобальные данные для веб-страницы ASP.net - PullRequest
4 голосов
/ 11 июня 2009

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

Эта информация не относится к конкретному сеансу, она согласована для каждого потока, использующего веб-сайт.

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

Ответы [ 7 ]

1 голос
/ 12 июня 2009

Это хорошее видео, в котором рассматриваются различные способы сохранения состояния приложения. http://www.asp.net/learn/3.5-videos/video-11.aspx Он чистит объект Application, который является глобальным для всего приложения, для всех пользователей и показывает, как создать счетчик посещений (очевидно, вместо хранения целого числа вы можете хранить объекты). Если вам нужно внести изменения, вам нужно использовать блокировку для параллелизма, и я не уверен, как она обрабатывает БОЛЬШИЕ объемы данных, потому что мне никогда не приходилось хранить там столько данных.

1 голос
/ 11 июня 2009

Использование функции кэширования ASP.NET является хорошим вариантом, я думаю. В дополнение к ответу Джона вы можете использовать блок приложения для кэширования, разработанный командой Microsoft Patterns & Practices .

1 голос
/ 11 июня 2009

Не совсем ясно, относится ли ваша информация к конкретному сеансу или нет ... если это так, то используйте объект сеанса ASP. Учитывая ваше описание шкалы, вы, вероятно, захотите взглянуть на сохранение состояния на Sql Server:

http://support.microsoft.com/kb/317604

Это подход 101. Если вы ищете что-то более громкое, то посмотрите memcached (это произносится Mem-Cache-Dee):

http://www.danga.com/memcached/

Это система, которую используют такие приложения, как Facebook и Twitter.

Удачи!

1 голос
/ 11 июня 2009

Любые AppSettings в web.config автоматически кэшируются (т.е. они не читаются из XML каждый раз, когда вам нужно их использовать).

Вы также можете вручную манипулировать кешем самостоятельно .

Редактировать : улучшенные ссылки ...

0 голосов
/ 12 июня 2009

Я сталкивался с такой же ситуацией в прошлом и обнаружил, что интерфейс является наиболее масштабируемым решением. Кеш приложений может быть ответом сегодня, но будет ли он масштабироваться в соответствии с вашими потребностями?

Если вам нужно увеличить масштаб, вам могут подойти файлы cookie или временное хранилище базы данных. Просто добавьте новый метод в свой интерфейс и настройте интерфейс для выбора «режима» из web.config.

0 голосов
/ 12 июня 2009

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

0 голосов
/ 11 июня 2009

Я обычно храню подобные вещи в объекте Application.

...