Поделиться через


Практическое руководство. Использование пользовательского сериализатора с кэшем In-Role Azure

Важно!

Корпорация Майкрософт рекомендует всем новым разработкам использовать кэш Redis для Azure. Текущую документацию и рекомендации по выбору предложения кэша Azure см. в статье о том, какое предложение кэша Azure подходит для меня?

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

Совет

Вы можете получить преимущества производительности посредством оптимизации сериализации известных типов.

Создание настраиваемого класса сериализации

  1. Сначала подготовьте среду разработки для использования кэша.

  2. Создайте класс, производный от IDataCacheObjectSerializer.

  3. Реализуйте два метода в этом интерфейсе: сериализация и десериализация.

class MySerializer : IDataCacheObjectSerializer
{
    public object Deserialize(System.IO.Stream stream)
    {
            object returnObject = null;

            // Deserialize the System.IO.Stream 'stream' from
            // the cache and return the object.

            return returnObject;
    }

    public void Serialize(System.IO.Stream stream, object value)
    {
        // Serialize the object 'value' into the System.IO.Stream 'stream'
        // which will then be stored in the cache.
    }
}

Использование файла конфигурации для определения настраиваемого сериализатора

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

  2. В файле конфигурации приложения добавьте элемент serializationProperties в раздел dataCacheClient .

  3. В элементе serializationProperties назначьте атрибут сериализатора CustomSerializer. Назначьте атрибут customSerializerType классу, который реализует сериализатор.

Следующий пример демонстрирует, как использовать файл конфигурации приложения для определения настраиваемого сериализатора с именем MyNamespace.MySerializer.

<dataCacheClient>
    <serializationProperties serializer="CustomSerializer" 
       customSerializerType="MyNamespace.MySerializer, MyAssembly" />
    <!-- Other dataCacheClient Elements, such as hosts -->
</dataCacheClient>

Использование кода для определения настраиваемого сериализатора

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

  2. Создайте объект DataCacheSerializationProperties с помощью конструктора, чтобы указать параметр DataCacheObjectSerializerType.CustomSerializer и новый экземпляр класса сериализатора.

  3. Назначьте этот объект свойству DataCacheFactoryConfiguration.SerializationProperties и используйте этот объект DataCacheFactoryConfiguration для настройки нового Объекта DataCacheFactory.

Следующий пример демонстрирует, как использовать код для определения настраиваемого сериализатора с именем MyNamespace.MySerializer.

DataCacheFactoryConfiguration configuration = new DataCacheFactoryConfiguration();

configuration.SerializationProperties = 
   new DataCacheSerializationProperties(DataCacheObjectSerializerType.CustomSerializer, 
   new MyNamespace.MySerializer());

// Assign other DataCacheFactoryConfiguration properties...

// Then create a DataCacheFactory with this configuration
DataCacheFactory factory = new DataCacheFactory(configuration);

Рекомендации

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