такое состояние приложения = system.web.httpcontent.cache? - PullRequest
0 голосов
/ 05 июня 2010

Состояние приложения (http://msdn.microsoft.com/en-us/library/ms178594.aspx) такое же, как при использовании API System.Web.Caching?

т.е.

System.web.httpcontent.current.cache [somekey]?

Ответы [ 5 ]

3 голосов
/ 05 июня 2010

Ответ есть в вашей собственной ссылке. Прочитайте это.

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

0 голосов
/ 05 июня 2010

На самом деле я бы сказал, что основной целью состояния приложения является обратная совместимость с классическими приложениями ASP, и я бы никогда не использовал его в новых приложениях ASP.NET.

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

Состояние приложения по существу эквивалентно статической хэш-таблице с семантикой блокировки, унаследованной от классического ASP.

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

0 голосов
/ 05 июня 2010

Это не то же самое.

Если данные

  • является стабильным в течение срока службы приложения
  • всегда должен быть доступен и не должен быть очищен

вы бы использовали HttpApplicationState .

Если данные

  • не обязательно необходим для жизни приложения
  • часто меняется
  • при необходимости можно удалить (например, недостаточно системной памяти)
  • может быть отброшено, если используется редко
  • должно быть аннулировано / обновлено при некоторых условиях (правило зависимости: промежуток времени, дата, временная метка файла, ...)

затем используйте Cache .

Другие важные отличия:

  • Большие объемы данных лучше хранить в кэше, после чего сервер может их очистить, если не хватает памяти.
  • Кэш-память безопасна для многопоточных операций. Page.Приложение необходимо блокировка .

См. Также эту статью на etutorials.org для получения более подробной информации.

И этот вопрос: ASP.NET Page.Cache против Page.Хранилище приложений для синхронизации данных?

0 голосов
/ 05 июня 2010

Вы, вероятно, имеете в виду System.Web.Context, а не content, а Cache отличается от HttpApplicationState.

Состояние приложения существует для элементов, которые остаются довольно статичными в течение всего времени существования приложения (если явно не удалены). Как можно прочитать на странице, с которой вы ссылаетесь, рекомендуется использовать Application:

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

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

0 голосов
/ 05 июня 2010

Нет, они не одинаковы.

Объект ASP.Net Cache специально оптимизирован для кэширования содержимого или объектов, которые недолговечны или могут жить в течение определенного периода времени. Он будет уничтожен сборщиком мусора, если ресурсы будут освобождены, и никогда не гарантируется, что что-то, что вы положите в Кэш, будет там при следующем просмотре.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...