Страница 1 из 2
Сериализация
Добавлено: 18 июн 2008, 21:30
папа Карло
Тов. программисты, научите как правильно и кошерно сериализовать "дерево объектов" (у рутового объекта есть вагончик подобъектов и тд...) в файлик, лучше в хмл наверное, и обратно в объектную модель? исходные данные... c#, .net v2. для простоты можно сказать что всек объекты отнаследованны от одного и тогоже класса.
заранее пасиб.
Re: Сериализация
Добавлено: 18 июн 2008, 22:58
Ranger
Re: Сериализация
Добавлено: 19 июн 2008, 00:14
папа Карло
давай... там наверняка ченить похожее есть.

Re: Сериализация
Добавлено: 19 июн 2008, 09:31
Stanislav
папа Карло писал(а):Тов. программисты, научите как правильно и кошерно сериализовать "дерево объектов" (у рутового объекта есть вагончик подобъектов и тд...) в файлик, лучше в хмл наверное, и обратно в объектную модель? исходные данные... c#, .net v2. для простоты можно сказать что всек объекты отнаследованны от одного и тогоже класса.
заранее пасиб.
Вообще сериализация, вот так
http://msdn.microsoft.com/en-us/library ... zable.aspx
А в частности - полиморфизмом по "дереву об'ектов" вдарить. Куда? Вопрос вкуса - XML так XML....
Re: Сериализация
Добавлено: 19 июн 2008, 10:28
Zy
Java, что-то типа того:
XMLEncoder xmlEncoder = new XMLEncoder(new FileOutputStream("MyTree.xml"));
xmlEncoder.writeObject(myTreeObject);
и соответственно:
XMLDecoder xmlDecoder = new XMLDecoder(new FileInputStream("MyTree.xml"));
MyTreeObject myTreeObject = (MyTreeObject) xmlDecoder .readObject();
Ни разу не пробывал, интересно, что получиться.
Re: Сериализация
Добавлено: 19 июн 2008, 11:06
pastor
Если объект и потомки поддерживают сериализацию, то Object.Serialize(), Object.Deserialize()
Хинт: поскольку будете сериализовать дерево объектов, не забудьте после сериализации (если в файл или строку) вызвать метод Flush у XmlWriter. А то я давеча полчаса голову ломал почему у меня полученный xml в результате сериализации third-party объекта с потомками был not well-formed, да еще и неполный (обрыв на полуслове). Как говорится, "сливайте воду!"

Re: Сериализация
Добавлено: 19 июн 2008, 11:34
Marmot
Все завит от того, как надо сериализовать.
Если бы хоть как-нибудь, то сoйдет и XML
Если надо что бы это все делалось побыстрее,то лучше использовать встроенные средства сериализации в бинарные потоки, типа Java-вских Object(In/Out)putStream
Если скорость (де)сериализации критична, то лучше все писать бинарно самим, ручками, если эти ручки правилно приделаны, если нет, смотри выше ...

Хотя, помоему я где-то видел альтернативные и быстрые библиотеки бинарной сериализации для Java ...
Re: Сериализация
Добавлено: 19 июн 2008, 11:42
Zy
Marmot писал(а):Все завит от того, как надо сериализовать...
На Marmot'a трудно ориентироваться, у него Java Marmot Edition, расширенная версия, как я помню, она позволяет, например, так переопределять методы в классе, что даже если объект null, он все равно может их вызывать. У нас таких возможностей нет, так что приходится делать криво.
Re: Сериализация
Добавлено: 19 июн 2008, 11:44
pastor
Marmot по-любому прав: бинарная (де)сериализация будет шустрее по-любому.
Re: Сериализация
Добавлено: 19 июн 2008, 12:02
Marmot
Zy писал(а):Marmot писал(а):Все завит от того, как надо сериализовать...
На Marmot'a трудно ориентироваться, у него Java Marmot Edition, расширенная версия, как я помню, она позволяет, например, так переопределять методы в классе, что даже если объект null, он все равно может их вызывать. У нас таких возможностей нет, так что приходится делать криво.
А тож, я все эти JEE в упор ненавижу, как только надо, хоть что-то невполне обычное или очень быстрое, так все, кирдык...
Поэтому мы все пишем на чистой JavaSE и все летает, и сериализация у нас тоже ручная, зато раз в 5 быстрее родной, не говоря уж об XML...
А сейчас я даже JDBC перестал юзать, напрямую пишу в MySQL-ные буфера, выигрыш на некоторых опреациях х10, засчет минимизации копирования памяти и UTF-8 encoding/decoding . Да и контроля намного больше, например можно задать socket timeout свой для каждого селекта

Re: Сериализация
Добавлено: 19 июн 2008, 12:21
Stanislav
Marmot писал(а):Zy писал(а):Marmot писал(а):Все завит от того, как надо сериализовать...
На Marmot'a трудно ориентироваться, у него Java Marmot Edition, расширенная версия, как я помню, она позволяет, например, так переопределять методы в классе, что даже если объект null, он все равно может их вызывать. У нас таких возможностей нет, так что приходится делать криво.
А тож, я все эти JEE в упор ненавижу, как только надо, хоть что-то невполне обычное или очень быстрое, так все, кирдык...
Поэтому мы все пишем на чистой JavaSE и все летает, и сериализация у нас тоже ручная, зато раз в 5 быстрее родной, не говоря уж об XML...
А сейчас я даже JDBC перестал юзать, напрямую пишу в MySQL-ные буфера, выигрыш на некоторых опреациях х10, засчет минимизации копирования памяти и UTF-8 encoding/decoding . Да и контроля намного больше, например можно задать socket timeout свой для каждого селекта

Да чего уж мелочиться? Надо напрямую в файлы MySQL писать! Выигрыш на отдельных операциях будет х100!
Re: Сериализация
Добавлено: 19 июн 2008, 12:58
Zy
Хм... В каком месте Технического Задания было сказано про "шустрость работы"?
Представляю, что получает от вас заказчик с таким подходом.
Re: Сериализация
Добавлено: 19 июн 2008, 13:08
Marmot
Zy писал(а):Хм... В каком месте Технического Задания было сказано про "шустрость работы"?
Так я и написал "Если бы хоть как-нибудь, то сoйдет и XML"
Zy писал(а):Представляю, что получает от вас заказчик с таким подходом.
Хмм, подумал я, а кто у меня заказчик: мой босс? так ему надо чтоб все работало,не падало и как можно быстрее. Наши юзвери, так им нужно то же само...

А ежели оно будет падать или тормозить, то меня будут будить по ночам с требованием пофиксить, меня уже жизнь научила

Я теперь пишу так, что бы спать спокойно

Re: Сериализация
Добавлено: 19 июн 2008, 16:54
(Alex)
можно глянуть на
Hessian, там внутри есть пара классов в hessiancsharp.io CHessianInput и CHessianOutput. Протокол компактный, бинарный, есть имплементация для Javа.
Но если подходить критически, то лучше писать своими руками под свою задачу, как мармот говорит.
Re: Сериализация
Добавлено: 19 июн 2008, 20:10
Stanislav
Zy писал(а):Хм... В каком месте Технического Задания было сказано про "шустрость работы"?
Представляю, что получает от вас заказчик с таким подходом.
Заказчик никогда не знает, что ему на самом деле нужно!