AppFabric Caching - Каковы его сериализация и требования к десериализации для объекта?

StackOverflow https://stackoverflow.com/questions/3732050

Вопрос

Проблема: При кэшировании экземпляра класса и немедленно получая его от кэша, я возвращаю объект (его не ноль), но все его свойства / поля являются нулевыми или по умолчаниями.

    _cacheHelper.PutInCache("testModuleControlInfoOne", mci);
    //mci has populated fields

    var mciFromCacheOne = _cacheHelper.GetFromCache("testModuleControlInfoOne");
    //mciFromCacheOne now has null or default fields

Поэтому я подозреваю, как структурирован объект - это проблема, а appfabric не сериализует объект правильно по какой-то причине.

Однако, когда я использую следующую сериализацию метода, я возвращаю объект со всеми свойствами / полями, поскольку они были до сериализации.

    public T SerializeThenDeserialize<T>(T o) where T : class
    {
            BinaryFormatter bf = new BinaryFormatter();

            using (MemoryStream ms = new MemoryStream())
            {
                bf.Serialize(ms, o);

                ms.Position = 0;

                return (T)bf.Deserialize(ms);
            }
    }

Как объект сериализовать и десериализовать должным образом с использованием двоичного форматирования и не делать то же самое через кэширование?

Кто-нибудь столкнулся с этим или у кого-то есть какие-либо предложения или советы по вообще то, что вы можете посмотреть?

Это было полезно?

Решение

Хорошо, нашел это.

Объект реализован IXMLSERializable, поэтому AppFabric использовал, что вместо обычной сериализации.

Пробега через XMLSerializer (вместо двоичного течения) дает одни и те же нулевые поля, поскольку я испытывал.

Похоже, что IXMLSerializable реализация имеет проблемы.

Другие советы

Я верю, когда сериализация к XML (с использованием IXMLSERializable), частные поля объекта игнорируются, что может быть, почему ваш объект был неполным при извлечении.

Использование двоичной сериализации застраховало весь объект (включая ссылки на другие объекты) включены.

Вы можете посмотреть на IDataCacheObjectSerializer

http://msdn.microsoft.com/en-us/library/windowsazure/hhh552969.aspx.

AppFabric Caching - Могу ли я указать стиль сериализации, используемый для всех объектов?

(Да, я понимаю, что этот вопрос был также вашим :-)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top