AppFabric Caching - Can I specify serialization style used for all objects?
Asked Answered
R

1

8

An object which implements some custom serialization can be serialized and deserialized to different formats, for example to Xml or byte[].

I have run into a problem where when I put to cache, AppFabric runs the IXmlSerializable implementation on a class when I would rather force it to go with binary. AppFabric Caching - What are its serialization and deserialization requirements for an object?

Can I configure this?

(At the moment the workaround is to serialize the object programatically to a byte[] and then send that into the cache, reversing the process on the way out).

Renaissance answered 21/9, 2010 at 0:17 Comment(0)
F
7

In the MSDN documentation it says we could implement IDataCacheObjectSerializer to achieve this goal. You can read about it here: 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 that, you can set the custom serializer to the 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.

Freddafreddi answered 19/11, 2011 at 15:26 Comment(1)
Just to avoid confusion to anyone - This solution will only work for windows azure cache and not appfabric cache. MS works very hard to cause enough confusion in their product names. More details in the comments here - blogs.msdn.com/b/jagan_peri/archive/2012/08/23/…Proper

© 2022 - 2024 — McMap. All rights reserved.