Uso de un serializador personalizado con Azure In-Role Cache

Importante

Microsoft recomienda todos los nuevos desarrollos que usen Azure Redis Cache. Para obtener documentación actual e instrucciones sobre cómo elegir una oferta de Azure Cache, consulte ¿Qué oferta de Azure Cache es adecuada para mí?

Microsoft Azure Caché serializa los objetos antes de colocarlos en la memoria caché y deserializa los objetos que se recuperan de la memoria caché. Internamente, la serialización se controla mediante la clase NetDataContractSerializer . En este tema se explica cómo crear y usar una clase de serialización personalizada para usarla en las aplicaciones de Azure que usan Cache.

Sugerencia

Posiblemente obtenga mejoras en el rendimiento debido a la optimización de la serialización de los tipos conocidos.

Para crear la clase de serialización personalizada

  1. En primer lugar , prepare el entorno de desarrollo para usar caché.

  2. Cree una clase que derive de IDataCacheObjectSerializer.

  3. Implemente los dos métodos en esta interfaz: Serialize y Deserialize.

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.
    }
}

Para usar el archivo de configuración para especificar el serializador personalizado

  1. Agregue a su proyecto el código para el serializador predeterminado o agregue una referencia a un ensamblado que implemente el serializador personalizado.

  2. En el archivo de configuración de la aplicación, agregue un elemento serializationProperties dentro de la sección dataCacheClient .

  3. Dentro del elemento serializationProperties , asigne el atributo serializer a "CustomSerializer". Asigne el atributo customSerializerType a la clase que implementa el serializador.

En el ejemplo siguiente se demuestra cómo usar el archivo de configuración de la aplicación para especificar un serializador personalizado llamado MyNamespace.MySerializer.

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

Para usar código para especificar el serializador personalizado

  1. Agregue a su proyecto el código para el serializador predeterminado o agregue una referencia a un ensamblado que implemente el serializador personalizado.

  2. Cree un objeto DataCacheSerializationProperties mediante el constructor para especificar la opción DataCacheObjectSerializerType.CustomSerializer y una nueva instancia de la clase serializer.

  3. Asigne este objeto a la propiedad DataCacheFactoryConfiguration.SerializationProperties y use ese objeto DataCacheFactoryConfiguration para configurar un nuevo DataCacheFactory.

En el ejemplo siguiente se demuestra cómo usar código para especificar un serializador personalizado llamado 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);

Recomendaciones

Si se usa un serializador personalizado con una caché, todos los clientes de esa caché deben usar la misma versión del serializador personalizado cuando accedan a objetos compartidos dentro de esa caché.