8

Un objeto que implementa una serialización personalizada se puede serializar y deserializar a diferentes formatos, por ejemplo a Xml o byte [].Caché de AppFabric: ¿Puedo especificar el estilo de serialización utilizado para todos los objetos?

Me he encontrado con un problema en el que cuando pongo en el caché, AppFabric ejecuta la implementación IXmlSerializable en una clase cuando prefiero forzarlo para que sea binario. AppFabric Caching - What are its serialization and deserialization requirements for an object?

¿Puedo configurar esto?

(Por el momento, la solución consiste en serializar el objeto programáticamente en un byte [] y luego enviarlo a la memoria caché, invirtiendo el proceso a la salida).

Respuesta

7

En la documentación de MSDN dice que podríamos implementar IDataCacheObjectSerializer para lograr este objetivo. Usted puede leer sobre ello aquí: 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 
    } 
} 

de Afer que, se puede establecer el serializador personalizado a la 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); 

Espero que esto ayude.

+0

Gracias! ¡Esto salvará mi vida! – Zingui

+3

Solo para evitar confusiones a cualquier persona: esta solución solo funcionará para la memoria caché azul de Windows y no para la caché de la aplicación. MS trabaja muy duro para causar suficiente confusión en los nombres de sus productos. Más detalles en los comentarios aquí - http://blogs.msdn.com/b/jagan_peri/archive/2012/08/23/custom-serializer.aspx –

Cuestiones relacionadas