Должен ли я использовать HttpRuntime.Кэш?

#c# #caching #httpruntime.cache

#c# #кэширование #httpruntime.cache

Вопрос:

Я новичок в asp.net и у меня есть несколько вопросов о кэше:

  1. HttpRuntime.Кэш предоставляет только несколько методов, и я думаю, что смогу реализовать эти методы с помощью Dictionary самостоятельно.
  2. Если HttpRuntime.Кэш намного лучше, чем словарь, почему некоторые люди хотели бы реализовать свой собственный фреймворк кэша.
  3. Как насчет блока кэша MS Enterprise?

Ответ №1:

HttpRuntime.Кэш предоставляет только несколько методов, и я думаю, что смогу реализовать эти методы с помощью Dictionary самостоятельно.

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

2) Если HttpRuntime.Кэш намного лучше, чем словарь, почему некоторые люди хотели бы реализовать свой собственный фреймворк кэша.

Люди не захотели бы этого делать.

3) Как насчет блока кэша MS Enterprise?

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

Замечание: В .NET 4.0 вы должны использовать новую System.Runtime.Кэширование пространства имен вместо HttpRuntime.Cache .

Итак, чтобы ответить на ваш вопрос: Should I use HttpRuntime.Cache

Да, если вы не используете .NET 4.0, в этом случае вам следует использовать классы из нового System.Runtime.Caching пространства имен.

Комментарии:

1. Спасибо за ваш замечательный ответ. У меня есть еще один вопрос: я видел, как некоторые люди используют HttpRuntime. Кэширование в не веб-приложении, таком как Console, я думаю, это немного странно. Вы когда-нибудь видели это?

2. @Domi.Zhang, да, я это видел. Это работает, но требует зависимости от системы. Веб-сборка. Именно по этой причине Microsoft решила перенести кэширование в отдельную сборку в .NET 4.0.

3. Дарин, что, если я хочу, чтобы время истечения было таким же, как в кэше Httpruntime? Я не смог найти его в System.Runtime. Кэширование

4. @RoyiNamir, .Add() метод позволяет передавать CacheItemPolicy для управления различными параметрами.

5. Обновите «использование консольного приложения» HttpRuntime. Cache — это замеченное предупреждение в документах msdn здесь : «Класс Cache не предназначен для использования вне ASP.NET приложения. Он был разработан и протестирован для использования в ASP.NET чтобы обеспечить кэширование для веб-приложений. Для других типов приложений, таких как консольные приложения или приложения Windows Forms, используйте класс ObjectCache