Модель программирования (кэширование в AppFabric 1.1)

Для Microsoft AppFabric 1.1 для Windows Server сейчас доступно две модели программирования:

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

  • Шаблон программирования со сквозным чтением или записью с задержкой. В этой модели создается настраиваемый поставщик для доступа к фоновому хранилищу данных. Если элемента нет в кэше, поставщик извлекает его из хранилища. При записи элементов в кэш они периодически и асинхронно записываются в фоновое хранилище. Дополнительные сведения об этой модели см. в разделе Сквозное чтение и запись с задержкой (кэширование в AppFabric 1.1).

Стратегия кэширования

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

Функция высокой надежности позволяет обеспечить защиту от сбоев компьютера и процессов на отдельных узлах кэша во время работы кластера. Однако в некоторых случаях весь кластер может оказаться недоступным. Например, при отключении слишком большого числа ведущих узлов будет выключен весь кластер. Дополнительные сведения см. в разделе Ведущие узлы и управление кластером (кэширование в AppFabric 1.1).

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

Клиенты кэша

Чтобы сохранять данные в кэше, используйте метод GetCache или метод GetDefaultCache для возвращения объекта DataCache. После создания экземпляра этот объект DataCache называется клиентом кэша.

Примечание

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

Существует множество параметров, доступных для настройки поведения клиента кэша. Можно указать эти параметры конфигурации программно или с помощью файла конфигурации приложения, а также используя оба подхода. Дополнительные сведения о клиентах и доступных параметрах конфигурации приложений см. в разделах Клиенты кэша и локальный кэш (кэширование в AppFabric 1.1) и Параметры конфигурации приложения (кэширование в AppFabric 1.1).

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

'Each application has a similar GetCache method call
Dim myCacheFactory As DataCacheFactory = New DataCacheFactory()
Dim catalog As DataCache = myCacheFactory.GetCache("catalog")

'One cache client saves an object to the catalog named "toy101"
Call catalog.Put("toy101", New ToyObject("toy101", "Playschool"))

'The same or different cache client retrieves the object
Dim toy As ToyObject = CType(catalog.Get("toy101"), ToyObject)

'The same or a different cache client removes the object
catalog.Remove("toy101")
//Each application has a similar GetCache method call
DataCacheFactory myCacheFactory = new DataCacheFactory();
DataCache catalog = myCacheFactory.GetCache("catalog");

//One cache client saves an object to the catalog named "toy101"
catalog.Put("toy101", new ToyObject("toy101", "Playschool"));

//The same or different cache client retrieves the object
ToyObject toy = (ToyObject)catalog.Get("toy101");

//The same or a different cache client removes the object
catalog.Remove("toy101");

См. также

Основные понятия

Схема физической архитектуры кэширования AppFabric (кэширование в AppFabric 1.1)
Схема логической архитектуры кэширования AppFabric (кэширование в AppFabric 1.1)
Разработка клиента кэша

  2012-03-05