Кэширование AppFabric. Можно ли указать стиль сериализации, используемый для всех объектов?
Объект, который реализует некоторую пользовательскую сериализацию, может быть сериализован и десериализован в различные форматы, например, в Xml или byte[].
Я столкнулся с проблемой, когда, когда я помещаю в кеш, AppFabric запускает реализацию IXmlSerializable для класса, когда я предпочел бы заставить его работать с двоичным кодом. Кэширование AppFabric - каковы его требования к сериализации и десериализации для объекта?
Могу ли я настроить это?
(В настоящее время обходной путь состоит в том, чтобы программно сериализовать объект в байт [], а затем отправить его в кэш, полностью изменяя процесс на выходе).
1 ответ
В документации 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);
Надеюсь это поможет.