Кэширование AppFabric. Можно ли указать стиль сериализации, используемый для всех объектов? - PullRequest
8 голосов
/ 21 сентября 2010

Объект, который реализует некоторую пользовательскую сериализацию, может быть сериализован и десериализован в различные форматы, например, в Xml или byte [].

Я столкнулся с проблемой, когда при помещении в кэш AppFabric запускаетРеализация IXmlSerializable для класса, когда я предпочел бы заставить его использовать двоичный код. Кэширование AppFabric - каковы его требования к сериализации и десериализации для объекта?

Можно ли это настроить?

(В настоящее время обходной путь заключается в программной сериализации объекта длябайт [], а затем отправьте его в кеш, полностью изменяя процесс).

1 Ответ

7 голосов
/ 19 ноября 2011

В документации MSDN говорится, что мы могли бы реализовать IDataCacheObjectSerializer для достижения этой цели. Вы можете прочитать об этом здесь: 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
    }
}

После этого вы можете установить для настраиваемого сериализатора значение 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);

Надеюсь, это поможет.

...