Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   сериализация - десериализация (http://www.flasher.ru/forum/showthread.php?t=202772)

Akopalipsis 09.08.2013 02:27

сериализация - десериализация
 
я очень давно уже об этом думаю, но не собирался до конца с этим разобраться, так как мне до сего момента это было не нужно. Теперь мне это нужно, так как в гугле я нашёл только готовые библиотеки и описание всех прелестей и удобства. Но мне так не нужно, хочу сам разобраться и сделать. Но в голове нет не одной зацепки и точки упора для старта. Подскажите принцип, нужные классы и если кто то знает хорошо исполненные уже готовые классы, дайте ссылку, чтобы хоть понять что там происходит.

Babylon 09.08.2013 03:34

http://actualwave.com/blog/?p=608#n/...TN5tMogOhlPB0A

PainKiller 09.08.2013 10:44

Перешел по приведенной ссылке - страница заблокирована из за вредоносного содержимого.

expl 09.08.2013 11:51

1. Можно и не искать ничего - есть Amf, вшитый во flashplayer и представленный либами для других платформ (правда некоторые безалаберно сделаны и требуют исправления багов перед использованием)
2. Коли интересны имеено бинарные форматы, читайте спецификации Amf(версия 3) или Protobuf.

Amf характерен загонами с укладкой небольших чисел в небольшое количество байт, а так же использованием ссылок на одинаковый текст, может сохранять объекты с переплетёнными/циклическими ссылками друг на друга. Но при сильном желании разобраться можно, ничего сверхъестественного там нет.
Типизированные данные туда укладываются как динамические с указанием алиаса типа(указывается вручную перед сериализацией и дессериализацией) и просто при распаковке создается не динамический объект, а объект нужного типа.

Protobuf характерен тем, что к нему в комплект обычно идёт генератор классов на нужном языке, но сам не использовал, ничего не знаю про этот формат.

Принцип? - Берешь, придумываешь формат, и используешь методы ByteArray (вшитый в flashplayer) для записи/чтения чисел/строк, кстати, там есть вшитый метод для записи объектов сразу в amf-формате.

Dukobpa3 09.08.2013 11:57

Цитата:

хочу сам разобраться и сделать.
А что сделать то?
Сериализация
Т.е. сериализация это просто процесс по переводу данных программы в некий "транспортный" либо формат "хранения данных". И всё.
Десериализация это собственно наоборот, взяли некое нечто и распаковали его в структуру для удобства использования.

Паковать можно во что угодно. Бинарные форматы вон выше ссылки кинули.
Распаковывать - в зависимости от задачи.

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

KumoKairo 09.08.2013 11:58

Использовал Protobuf для клиент-серверного приложения, очень компактный формат, очень легко разобраться и начать использовать. "С наскока" объекты там не сериализуются - каждый раз надо собирать по свойствам и полям.
Если нужно передавать данные по сети - Protobuf подходит как нельзя лучше.

Akopalipsis 09.08.2013 18:07

Цитата:

И я догадываюсь откуда взялась тема.
Да, я после Ваших слов отправился в поиск и первое, что он выдал, статья о готовых библиотеках сериализации - десериализации. я естественно скачал и мне понравилось, что по мимо сжатия и конвертации, там есть много других полезных инструментов, таких как наполнение значениями обьекты.
я не когда ещё не сталкивался с этим, но понял, что это будет полезно разобрать. Вот и сижу, учу.

Добавлено через 30 секунд
Babylon Спасибо! Полезная ссылка.

Добавлено через 3 часа 24 минуты
В готовых библиотеках, есть метод, который описывает классы в xml и наоборот. Как это делают? Мне известно только о describeType который в выводит данные о названии класса и имеющихся доступных свойствах и их типах. Может есть ещё какие то классы и методы которые делают тоже самое, но при этом лучше и удобнее?

Dukobpa3 09.08.2013 19:43

Цитата:

describeType
Akopalipsis, не лезь пока туда)) оно не надо)
всё гораздо проще. Вот то что ты делал в первом своем посте - как раз и есть десериализация.

Ты получаешь хмл, а потом каким-то образом из этой хмл заполняешь данные в свои игровые объекты.

Akopalipsis 09.08.2013 22:15

Цитата:

Akopalipsis, не лезь пока туда)) оно не надо)
Возможно!
Цитата:

И использовать его в чистом виде в проекте зачастую глупо, и зачастую удобнее его десериализовать во что-то более адекватное.
Про более адекватное я хотел потом спросить, но раз такое дело, то в какое?
После того как я увидел готовые библиотеки - то первое что я подумал, нужно это повторить самому.
Там есть метод, который при загрузке xml самостоятельно заполняет класс данными. Или берёт класс и создаёт xml. Это очень удобно! Создал класс считал с него и у тебя уже есть готовый внешний файл который можно менять, и затем им заполнять этот чистый класс модели. Тут конечно ещё можно вообще как я понял отказаться от xml, но пока не уверен и пока остановлюсь на создании xml из класса и наоборот. Потому что мне кажется это вообще не заменимым и это нужно самому уметь. Был бы очень рад за словестное подробное изложение этого процесса.

Добавлено через 13 минут
Мне самое главное понять какие существуют методы для чтения классов. я знаю только describeType, который возвращает xml. Там очень много лишнего, но распарсить мне особо трудно не будет.

Добавлено через 16 минут
И ещё у этого метода минус ( хотя возможно это наоборот плюс ) он не видит значений.

Dukobpa3 09.08.2013 22:36

Ты вот остановись и подумай.
хмл тебе зачем?


Часовой пояс GMT +4, время: 19:47.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.