8

Un oggetto che implementa alcune serializzazioni personalizzate può essere serializzato e deserializzato in diversi formati, ad esempio Xml o byte [].Caching di AppFabric: è possibile specificare lo stile di serializzazione utilizzato per tutti gli oggetti?

Ho incontrato un problema in cui quando ho messo in cache, AppFabric esegue l'implementazione IXmlSerializable su una classe quando preferisco forzarla ad andare con binario. AppFabric Caching - What are its serialization and deserialization requirements for an object?

Posso configurare questo?

(Al momento la soluzione è serializzare l'oggetto in modo programmatico su un byte [] e quindi inviarlo nella cache, invertendo il processo all'uscita).

risposta

7

Nella documentazione MSDN si dice che potremmo implementare IDataCacheObjectSerializer per raggiungere questo obiettivo. Si può leggere su qui: http://msdn.microsoft.com/en-us/library/windowsazure/hh552969.aspx

class MySerializer : IDataCacheObjectSerializer 
{ 
    public object Deserialize(System.IO.Stream stream) 
    { 
     // Deserialize the System.IO.Stream 'stream' from 
     // the cache and return the object 
    } 

    public void Serialize(System.IO.Stream stream, object value) 
    { 
     // Serialize the object 'value' into a System.IO.Stream 
     // that can be stored in the cache 
    } 
} 

Afer che, è possibile impostare il serializzatore personalizzato al DataCacheFactory:

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); 

Spero che questo aiuti.

+0

Grazie! Questo mi salverà la vita! – Zingui

+3

Giusto per evitare confusione con chiunque - Questa soluzione funzionerà solo per la cache di Windows Azure e non per la cache di appfabric. MS lavora molto duramente per causare confusione nei nomi dei prodotti. Maggiori dettagli nei commenti qui - http://blogs.msdn.com/b/jagan_peri/archive/2012/08/23/custom-serializer.aspx –

Problemi correlati