Десериализация подчиненных объектов
От: Slider_spb Россия  
Дата: 30.03.16 15:29
Оценка:
Приветствую всех.
Наткнулся на следующую проблему: Есть объект A. Он содержит в себе типизированный массив объектов B. При десериализации объекта A и массива в нем десериализация ни одного из объектов B еще не произошла, сооветственно они приходят пустыми. И лишь когда десериализаця объекта A завершена, происходит десериализация объектов Б, находящихся в массиве, но значения массива объекта A остаются пустыми.
Можно ли как-то оправлять порядком десериализации объектов и как решить данную проблему.
Re: Десериализация подчиненных объектов
От: VladD2 Российская Империя www.nemerle.org
Дата: 30.03.16 16:37
Оценка:
Здравствуйте, Slider_spb, Вы писали:

S_>Наткнулся на следующую проблему: Есть объект A. Он содержит в себе типизированный массив объектов B. При десериализации объекта A и массива в нем десериализация ни одного из объектов B еще не произошла, сооветственно они приходят пустыми. И лишь когда десериализаця объекта A завершена, происходит десериализация объектов Б, находящихся в массиве, но значения массива объекта A остаются пустыми.

S_>Можно ли как-то оправлять порядком десериализации объектов и как решить данную проблему.

Проблемам классическая, что называется.

Решается построением графа зависимостей между объектами или ленивой процедурой инициализации.

Еще одна проблема которая может возникнуть в случае использования графа зависимостей — это рекурсивные ссылки между объектами (объект типа А ссылается на массив в котором лежит объект типа Б в котором есть ссылка на первый объект). Это лечится резрывом графа зависимостей с внесением информации о рекурсивном поле создающем рекурсивную связь в некоторую таблицу с отдельным проходом по ней и коррекцией объектов.

В ленивом варианте объекту передаются не сами ссылки, а идентификаторы ссылок (по сути их индексы) из глобальной таблицы. Далее все объекты грузятся и помещаются в эту таблицу. При доступе к свойствам происходит разрешение ссылки через глобальную таблицу. Этот подход требует лишней памяти в объектах для хранения идентификаторов.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Десериализация подчиненных объектов
От: DarthSidius  
Дата: 31.03.16 15:29
Оценка:
Здравствуйте, Slider_spb, Вы писали:

S_>Можно ли как-то оправлять порядком десериализации объектов и как решить данную проблему.


Зависит от используемого сериализатора. Маленький пример кода был бы лучше для понимания проблемы.
... << RSDN@Home (RF) 1.2.0 alpha 5 rev. 58>>
♠♠♥♠♠♦♥
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.