Методы параллелизма (кэширование в Windows Server AppFabric)

Кэширование в Windows Server AppFabric поддерживает оптимистичную и пессимистичную модель параллелизма. В следующих разделах обсуждается соответствие методов клиента кэша этим моделям. Дополнительные сведения о параллелизме см. в разделе Модели параллелизма (кэширование в Windows Server AppFabric).

Оптимистичная модель параллелизма

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

Метод Описание

Get

Не блокируется; Get всегда выполняется успешно, если элемент существует. Если объект обновляется, метод Get не ожидает завершения обновления и возвращает текущую версию объекта.

GetCacheItem

Возвращает все объекты DataCacheItem. Помимо кэшированных объектов и других сведений, таких как теги, возвращаются также сведения о версиях объектов.

GetIfNewer

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

Add

Не имеет каких-либо перегрузок, относящихся к оптимистичному паралеллизму. Метод Add или завершается успешно, или со сбоем.

Put

Поддерживает оптимистичный параллелизм, принимая сведения о версии в качестве дополнительного параметра; метод Put завершается успешно, только если заменяемый объект имеет ту же версию.

Remove

Поддерживает оптимистичный параллелизм, принимая сведения о версии в качестве дополнительного параметра; метод Remove завершается успешно, только если удаляемый объект имеет ту же версию.

Пессимистичная модель параллелизма

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

Примечание

Операции объединения транзакций не поддерживаются. Использующее кэш приложение несет ответственность за определение порядка блокировки и обнаружения взаимоблокировок.

Предупреждение

Заблокированные объекты в кэше могут быть заменены любым клиентом кэша с помощью метода Put. Поддерживающие кэш приложения несут ответственность за согласованное использование PutAndUnlock для элементов, использующих пессимистичную модель параллелизма.

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

Метод Описание

GetAndLock

Возвращает и блокирует объект в кэше (при его наличии). Другие вызовы метода GetAndLock для того же объекта завершаются со сбоем, пока блокировка остается действующей. Обычные вызовы метода Get не блокируются и всегда получают доступ к последней версии кэшированного объекта.

PutAndUnlock

Обновляет заблокированный объект и снимает блокировку. Дескриптор блокировки, полученный от GetAndLock, является обязательным параметром и должен соответствовать дескриптору блокировки, чтобы операция была успешно завершена.

Unlock

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

См. также

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

Общие сведения о классах (кэширование в Windows Server AppFabric)
Основные методы кэша (кэширование в Windows Server AppFabric)
Методы на основе тегов (кэширование в Windows Server AppFabric)
Методы настройки (кэширование в Windows Server AppFabric)
Использование основных методов кэша (кэширование в Windows Server AppFabric)
Основные принципы кэширования Windows Server AppFabric

  2011-12-05