Экспорт (0) Печать
Развернуть все

Инструкции Получение уведомлений из кэша Azure

Обновлено: Сентябрь 2014 г.

noteПримечание
Руководство по выбору правильного предложения службы кэша Azure см. в разделе Какой кэш Azure подходит мне лучше всего?.

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

Добавление обратного вызова уведомления кэша осуществляется в два шага. Во-первых, создайте метод, который должен быть запущен, когда уведомление кэша инициируется одной или более операциями кэша. Метод, который вы запускаете с уведомлениями кэша, должен принимать те же параметры, которые делегируют DataCacheNotificationCallback . Во-вторых, добавьте обратный вызов, используя один из трех доступных методов из объекта DataCache:

Используйте параметр filter для определения типов операций кэша, которые будут запускать уведомления кэша. Используйте имя метода, который вы создали на первом шаге, для параметра clientDelegate.

  1. Создайте метод, который будет запускаться уведомлением кэша. Убедитесь, что метод принимает те же параметры, что и делегат DataCacheNotificationCallback.

  2. Добавьте обратный вызов Используйте один из трех доступных методов из объекта DataCache для определения области уведомления: AddCacheLevelCallback, AddRegionLevelCallback или AddItemLevelCallback.

    1. Используйте перечисление DataCacheOperations в параметре filter, чтобы определить, какой тип операций кэша будет запускать уведомления. Можно задать несколько значений, разделив их двоичным оператором OR для побитового выполнения OR. Чтобы сделать это, используйте символ | в C# или оператор Or в Visual Basic.

    2. Используйте имя метода, который вы хотите запустить, когда появятся эти уведомления, в параметре clientDelegate.

    3. Установите метод добавления обратного вызова идентичный объекту DataCacheNotificationDescriptor , который вы можете использовать где угодно в вашей программе для удаления обратного вызова уведомления кэша.

Первым шагом при регистрации уведомлений кэша является создание метода, который будет запускаться уведомлением. Метод, вызываемый уведомлением, должен принимать те же параметры, что и делегат DataCacheNotificationCallback. Данный пример демонстрирует один метод, который может быть запущен уведомлением кэша.


//method invoked by notification "ndCacheLvlAllOps" 
public void myCacheLvlDelegate(string myCacheName,
    string myRegion, 
    string myKey, 
    DataCacheItemVersion itemVersion,
    DataCacheOperations OperationId, 
    DataCacheNotificationDescriptor nd)
{
    //display some of the delegate parameters
    Console.WriteLine("A cache-level notification was triggered!");
    Console.WriteLine("    Cache: " + myCacheName);
    Console.WriteLine("    Region: " + myRegion);
    Console.WriteLine("    Key: " + myKey);
    Console.WriteLine("    Operation: " + OperationId.ToString());
    Console.WriteLine();
}

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

Для определения более чем одной операции кэша вы можете использовать двоичный оператор OR для назначения более одного перечисления DataCacheOperations переменной DataCacheOperations, которая может быть использована для параметра фильтра. Для добавления обратного вызова для операций кэша с областью уведомления на уровне кэша используйте метод AddCacheLevelCallback.

noteПримечание
Мы не рекомендуем вам делать это в рабочем приложении. Данный пример приведен исключительно для демонстрационных целей.


//specify all possible item and region operations
DataCacheOperations allCacheOperations = DataCacheOperations.AddItem |
    DataCacheOperations.ReplaceItem |
    DataCacheOperations.RemoveItem |
    DataCacheOperations.CreateRegion |
    DataCacheOperations.ClearRegion |
    DataCacheOperations.RemoveRegion;

//add cache-level notification callback 
//all cache operations from a notifications-enabled cache
DataCacheNotificationDescriptor ndCacheLvlAllOps
    = myTestCache.AddCacheLevelCallback(allCacheOperations, myCacheLvlDelegate);

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


//add region-level notification callback for region "TestRegion"
//trigger notification with CreateRegion operation
DataCacheNotificationDescriptor ndRegionCreateRegOp
    = myTestCache.AddRegionLevelCallback("TestRegion",
    DataCacheOperations.CreateRegion, myRegionLvlAddDelegate);

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

noteПримечание
Только операции элементов AddItem, ReplaceItem, и RemoveItem могут запускать уведомления кэша с обратными вызовами на уровне элемента. Указание операций области в параметре фильтра при добавлении обратного вызова на уровне элемента вызовет исключение.


//add item-level notification callback for item "TestKey"
//trigger notification with AddItem and ReplaceItem operations
DataCacheNotificationDescriptor ndItemUpdateOps
    = myTestCache.AddItemLevelCallback("TestKey",
        (DataCacheOperations.AddItem | DataCacheOperations.ReplaceItem),
        myItemLvlUpdateDelegate);

  1. Используйте метод RemoveCallback для удаления обратного вызова уведомления кэша. Используйте надлежащий объект DataCacheNotificationDescriptor в качестве параметра nd. Используйте NotificationDescriptor, который вы получаете при регистрации уведомления, для прекращения получения уведомлений.

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


//define variables for class
DataCache myTestCache;
DataCacheNotificationDescriptor ndCacheLvlAllOps;
DataCacheNotificationDescriptor ndRegionLvlAllOps;
DataCacheNotificationDescriptor ndItemLvlAllOps;

Данный пример демонстрирует метод, который использует метод RemoveCallback для удаления обратных вызовов, соответствующих всем трем объектам DataCacheNotificationDescriptor из предыдущего примера.


//remove cache notification callbacks
public void RemoveNotificationCallbacks()
{
    myTestCache.RemoveCallback(ndCacheLvlAllOps);
    myTestCache.RemoveCallback(ndRegionLvlAllOps);
    myTestCache.RemoveCallback(ndItemLvlAllOps);
}

Корпорация Майкрософт проводит интернет-опрос, чтобы выяснить ваше мнение о веб-сайте MSDN. Если вы желаете принять участие в этом интернет-опросе, он будет отображен при закрытии веб-сайта MSDN.

Вы хотите принять участие?
Показ:
© 2014 Microsoft