WCF Cache: MemoryCache

Используя .NET Framework 4 и выше можно использовать MemoryCache для хранения редко обновляемых данных

Использование совсем простое
  1. Проверяем наличие данных в кэше (MemoryCache.Default["<cache key>"])
  2. Если есть данные - возвращаем результат
  3. Если нет данных - достаём их из БД, например, и кладём в кэш (вернув результат, конечно) 
Пример использования
  1. Создаем новый проект WCF Service Application
  2. Для использования MemoryCache необходимо добавить ссылку на сборку System.Runtime.Caching
  3. Меняем файл IService1.cs

  4. Меняем файл Service1.svc
    1. Обязательно прописываем using System.Runtime.Caching;
    2. Реализуем интерфейс:

  5. Создаём файл WcfMemoryCache.aspx

  6. Краткое описание кода:
    1. Происходит обращение к методу GetDataUseMemoryCache
    2. Метод проверяет - есть ли данные в кэше (строка)
    3. Если есть - возвращает
    4. Иначе - генерирует строку с текущим временем и запоминает в кэше на 4 секунды, возвращая сгенерированную строку
    5. На клиентской стороне (WcfMemoryCache.aspx) javascript ~каждую секунду обращается к сервису и выводит полученные данные в текстовое поле.
      Пример результата работы:
Не стоит забывать
  1. Получение данных для кэширования может быть продолжительной операцией (например из-за сложного запроса к БД или стороннему web-сервису)
    В таком случае может возникнуть повторная попытка добавления кэша в память (по тому же ключу).
    Исключение не возникнет, но метод cache.Add вернёт false. Данные не обновятся.
    Если не нужно дважды выполнять тяжёлые методы по получению данных, предлагаю использовать хотя бы lock, для блокировки критичной секции
  2. Если вы всё же не против выполнять тяжелые методы получения данных для кэша или хотите обновлять его независимо от обращений - можно воспользоваться методом Set, который добавит данные, если их нет и обновит, если они есть
  3. Можно настроить лимиты по использованию

    Подробнее можно прочесть тут http://msdn.microsoft.com/library/dd941874(v=vs.110).aspx

2 комментария:

  1. It’s 점보카지노 unclear how critical the problem is in California end result of|as a end result of} the state’s gambling addiction companies are underfunded. There hasn’t been a radical state survey of gambling habits in additional than a decade. Indeed, the campaign ads double as advertisements, and normalizers of sports gambling.

    ОтветитьУдалить
  2. However, hydraulic injection molding machines are vitality inefficient and require larger temperatures for molding which might wreck some heat-sensitive plastics. Both hydraulic pumps and coolant want steady energy enter and require extra infrastructure to assist them. Also, varieties of|these sort of|most of these} machines may be problematic as they carry the risk of hydraulic fluid leaks, and they produce extra Baby Bottle Warmers noise than other injection molding machines. PRM-TAIWAN The primary Plastic and Rubber Machinery B2B platform in Taiwan. With our interactive web site, shall be able|it is feasible for you to} to find out|to search out} the machines for your corporation wants. If you don't know|you don't know} precisely what machine would possibly be} on the lookout for, but know the kind, simply fill in the inquiry kind with kind of|the sort of} machine you want and we'll do the hard work for you!

    ОтветитьУдалить

Можете оставить свой комментарий