Procedura: Usare un serializzatore personalizzato con cache di Azure In-Role

Importante

Microsoft consiglia tutti i nuovi sviluppi che usano Cache Redis di Azure. Per la documentazione e le indicazioni correnti sulla scelta di un'offerta di Cache di Azure, vedere Quale offerta di Cache di Azure è adatta per l'utente?

Microsoft Azure Cache serializza gli oggetti prima di inserirli nella cache e deserializza gli oggetti recuperati dalla cache. Internamente, la serializzazione viene gestita dalla classe NetDataContractSerializer . Questo argomento illustra come creare e usare una classe di serializzazione personalizzata da usare nelle applicazioni di Azure che usano Cache.

Suggerimento

È possibile ottenere vantaggi a livello delle prestazioni ottimizzando la serializzazione dei tipi noti.

Per creare la classe di serializzazione personalizzata

  1. Preparare prima di tutto l'ambiente di sviluppo per l'uso della cache.

  2. Creare una classe che deriva da IDataCacheObjectSerializer.

  3. Implementare i due metodi in questa interfaccia: Serializzare e Deserializzare.

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

Per usare il file di configurazione per specificare il serializzatore personalizzato

  1. Aggiungere il codice del serializzatore personalizzato al progetto oppure aggiungere un riferimento a un assembly che implementa il serializzatore personalizzato.

  2. Nel file di configurazione dell'applicazione aggiungere un elemento SerializationProperties nella sezione dataCacheClient .

  3. All'interno dell'elemento SerializationProperties assegnare l'attributo serializzatore a "CustomSerializer". Assegnare l'attributo customSerializerType alla classe che implementa il serializzatore.

Il seguente esempio illustra come usare il file di configurazione dell'applicazione per specificare un serializzatore personalizzato denominato MyNamespace.MySerializer.

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

Per usare il codice per specificare il serializzatore personalizzato

  1. Aggiungere il codice del serializzatore personalizzato al progetto oppure aggiungere un riferimento a un assembly che implementa il serializzatore personalizzato.

  2. Creare un oggetto DataCacheSerializationProperties usando il costruttore per specificare l'opzione DataCacheObjectSerializerType.CustomSerializer e una nuova istanza della classe serializzatore.

  3. Assegnare questo oggetto alla proprietà DataCacheFactoryConfiguration.SerializationProperties e usare l'oggetto DataCacheFactoryConfiguration per configurare una nuova DataCacheFactory.

Il seguente esempio illustra come usare il codice per specificare un serializzatore personalizzato denominato 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);

Raccomandazioni

Se con una cache viene usato un serializzatore personalizzato, tutti i client della cache devono usare la stessa versione del serializzatore personalizzato quando accedono a oggetti condivisi all'interno della cache.