8

Un objet qui implémente une sérialisation personnalisée peut être sérialisé et désérialisé en différents formats, par exemple Xml ou byte [].AppFabric Caching - Puis-je spécifier le style de sérialisation utilisé pour tous les objets?

J'ai rencontré un problème où lorsque je mets le cache en place, AppFabric exécute l'implémentation IXmlSerializable sur une classe quand je préfère la forcer à aller avec binaire. AppFabric Caching - What are its serialization and deserialization requirements for an object?

Puis-je configurer ceci? (Pour l'instant, la solution consiste à sérialiser l'objet par programme en octets [], puis à l'envoyer dans le cache, en inversant le processus à la sortie).

Répondre

7

Dans la documentation MSDN, il est indiqué que nous pourrions implémenter IDataCacheObjectSerializer pour atteindre cet objectif. Vous pouvez lire ici: 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, vous pouvez définir le sérialiseur personnalisé au 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); 

Hope this helps.

+0

Merci! Cela me sauvera la vie! – Zingui

+3

Juste pour éviter la confusion à tout le monde - Cette solution ne fonctionne que pour le cache Windows Azur et pas le cache appfabric. MS travaille très dur pour causer assez de confusion dans leurs noms de produits. Plus de détails dans les commentaires ici - http://blogs.msdn.com/b/jagan_peri/archive/2012/08/23/custom-serializer.aspx –