Любые советы по сериализации UIComponent - PullRequest
1 голос
/ 01 октября 2009

Я пытаюсь сериализовать расширенный UIComponent (com.esri.ags.layers.GraphicsLayer) для отправки и сохранения в базе данных MSSQL Server с помощью WebOrb.

Очевидно, что эти типы объектов не предназначены для сериализации, и у меня не было много сериализации / десериализации с использованием flash byteArray. Я также попробовал несколько других библиотек (FlexXB, asx3m, JSONLite, as3corelib) с другими форматами (xml, json) без удачи.

Прежде чем написать некрасивую функцию, я надеюсь, что кто-то уже знает, как это сделать. Любые мысли / предложения будут с благодарностью.

Ответы [ 2 ]

0 голосов
/ 14 октября 2009

Я бы предложил использовать нестандартную технику сериализации. Это дает вам полный контроль над производимым / потребляемым xml, особенно в том случае, когда вы хотите обрабатывать компоненты UIC (они не очень удобны для сериализации). FlexXB предлагает точки входа для настраиваемой сериализации в виде интерфейса IXmlSerializable, который должен быть реализован целью.

Еще одна идея, которую я лично поддерживаю: D, заключается в том, чтобы использовать подход с модельным представлением. Вы должны создать иерархию объектов, представляющих модель вашего приложения. Представления тогда были бы только частью слоя дисплея. Каждое представление будет принимать объект определенного типа в качестве данных и отображать информацию соответствующим образом. Добавление / удаление видов приведет к добавлению / удалению объектов модели. Таким образом, вам не нужно заботиться о сериализации в представлениях дисплея, и вы можете реализовать ее в объектах модели, делая их идеальными кандидатами для автоматической сериализации (вы можете сделать их byteArray или XML или любым другим форматом для их хранения). Кроме того, вы можете свободно изменять вид экрана по своему усмотрению. Это изрядная работа, но я верю, что она окупится вовремя.

Удачи,

Alex

0 голосов
/ 01 октября 2009

Один простой способ получить то, что вы ищете, это переопределить метод toString () класса вашего компонента и заставить его возвращать JSON или XML (что вам нравится). Чтобы дополнить метод toString (), вам, вероятно, понадобится статический метод в вашем классе компонентов для десериализации представления json / xml обратно в объект.

Видимо, эти типы объектов не предназначены для сериализации, и я не было много сериализация / десериализация с использованием flash byteArray

ByteArray, вероятно, будет не лучшим вариантом для UIComponent, за исключением растровых изображений, загруженных SWF-файлов и тому подобного (хотя я уже видел, как ByteArrays использовался для таких вещей раньше).

Если вам нужно надежно сериализовать ваши компоненты, вам, вероятно, лучше написать свои собственные методы сериализации / десериализации. Наиболее подходящий способ сделать это - создать базовый компонент (тот, который наследуется от UIComponent), который предлагает эти методы сериализации и каждый наследующий класс переопределяет его своими дополнительными свойствами. Наконец, каждый расширяющий класс должен вызывать метод super (), чтобы получить сериализованные свойства базового класса.

Звучит сложно, но это довольно просто и довольно часто (например, в Какао).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...