Каков глубокий смысл сериализации?
От: MaxxK  
Дата: 02.02.06 14:59
Оценка:
C#.
Вот у меня есть класс (допустим, MyClass), у него внутри есть массив членов другого класса (допустим, MyClassElement) и еще несколько. Все их надо сохранить. И какая разница, будет у меня 2 класса, производные от ISerializable, или будет 2 класса со своими методами Save и Load через BinaryReader/Writer? Даст ли сериализация какие-либо преимущества (сохранение будет производиться только в файл на локальном компе)? Что проще в написании, в отладке?
И где (книги, или инет) можно про сериализацию (в том числе про нововведения в .NET 2.0) почитать на русском? В нашем городе ни одной путёвой книги по C# я не нашел А хочется книжку...
Вот по Visual C++ 6.0 я в свое время брал книгу Дэвида Круглински и кого-то еще (изд-во "Питер"), а по C# 2.0 что-то вроде этого есть?
... << RSDN@Home 1.2.0 alpha rev. 0>>

08.02.06 22:12: Перенесено из '.NET'
Re: Каков глубокий смысл сериализации?
От: Oyster Украина https://github.com/devoyster
Дата: 02.02.06 15:08
Оценка: +1
Здравствуйте, MaxxK, Вы писали:

Глубокий смысл в том, что для включения сериализации для класса тебе надо написать всего одну строчку кода — указать SerializableAttribute для класса и всё. После этого сериализация/десериализация будет делаться автоматически и тебе не прийдётся для каждого класса писать кастомный код сериализации ручками.
Каков глубокий смысл сериализации?
От: Аноним  
Дата: 02.02.06 15:06
Оценка:
Сериализация проще! Для того, чтобы сериализовать, Вам нужно только, чтобы MyClass и MyClassElement имели атрибут Serializable — и все. Если Вы хотите custom сериализацию — Вам надо уже имплементить ISerializable (а надо ли?). Можно конечно и Save и Load через BinaryReader/Writer — но надо ли?


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re: Каков глубокий смысл сериализации?
От: Lloyd Россия  
Дата: 02.02.06 15:19
Оценка:
Здравствуйте, MaxxK, Вы писали:

MK>Вот у меня есть класс (допустим, MyClass), у него внутри есть массив членов другого класса (допустим, MyClassElement) и еще несколько. Все их надо сохранить. И какая разница, будет у меня 2 класса, производные от ISerializable, или будет 2 класса со своими методами Save и Load через BinaryReader/Writer? Даст ли сериализация какие-либо преимущества (сохранение будет производиться только в файл на локальном компе)? Что проще в написании, в отладке?


Для сериализации/десериализации нет необходимости реализовывать ISerializable.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: Каков глубокий смысл сериализации?
От: MaxxK  
Дата: 02.02.06 15:22
Оценка:
Здравствуйте, Oyster, Вы писали:
O>Глубокий смысл в том, что для включения сериализации для класса тебе надо написать всего одну строчку кода — указать SerializableAttribute для класса и всё. После этого сериализация/десериализация будет делаться автоматически и тебе не прийдётся для каждого класса писать кастомный код сериализации ручками.

А на размере это сильно сказывается? Где-то ведь нас должны обманывать...
... << RSDN@Home 1.2.0 alpha rev. 0>>
Re[3]: Каков глубокий смысл сериализации?
От: Oyster Украина https://github.com/devoyster
Дата: 02.02.06 15:30
Оценка:
Здравствуйте, MaxxK, Вы писали:

MK>А на размере это сильно сказывается? Где-то ведь нас должны обманывать...


И на размере, и на скорости... за всё надо платить. Есть хорошая статья VladD2 на эту тему: Сериализация в .NET. Выпрямляем своими руками
Автор(ы): Владислав Чистяков
Дата: 02.09.2003
В статье приводятся тесты скорости сериализации и объема сериализованных данных при применении автоматической сериализации в .NET. Обсуждаются варианты исправления ситуации. В качестве примера приводится вариант ручной сериализации для объектов DataSet и DataTable.
Re[3]: Каков глубокий смысл сериализации?
От: R0man Украина  
Дата: 02.02.06 15:31
Оценка:
Здравствуйте, MaxxK, Вы писали:

MK>Здравствуйте, Oyster, Вы писали:

O>>Глубокий смысл в том, что для включения сериализации для класса тебе надо написать всего одну строчку кода — указать SerializableAttribute для класса и всё. После этого сериализация/десериализация будет делаться автоматически и тебе не прийдётся для каждого класса писать кастомный код сериализации ручками.

MK>А на размере это сильно сказывается? Где-то ведь нас должны обманывать...


здесь
Автор(ы): Владислав Чистяков
Дата: 02.09.2003
В статье приводятся тесты скорости сериализации и объема сериализованных данных при применении автоматической сериализации в .NET. Обсуждаются варианты исправления ситуации. В качестве примера приводится вариант ручной сериализации для объектов DataSet и DataTable.
Re[2]: Каков глубокий смысл сериализации?
От: GSL  
Дата: 02.02.06 15:31
Оценка:
Здравствуйте, Oyster, Вы писали:

O>Здравствуйте, MaxxK, Вы писали:


O>Глубокий смысл в том, что для включения сериализации для класса тебе надо написать всего одну строчку кода — указать SerializableAttribute для класса и всё. После этого сериализация/десериализация будет делаться автоматически и тебе не прийдётся для каждого класса писать кастомный код сериализации ручками.


как ни странно это все канает только с открытой датой...
т.е. с данным которые будет и get и set...

но с датой которая только get это почти невозможно, почти потому, что столько ограничений, что проще использовать Write/Read, особенно если говорить о XML. Потому-то что я так и не нашел примера реализации ISerealisable для XML сериализации, если подскажите, буду очень признателен
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: Каков глубокий смысл сериализации?
От: Аноним  
Дата: 02.02.06 15:29
Оценка:
Это смотря что эти классы будут содержать и какие у Вас требования к размеру сериализованного файла.


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re[2]: Каков глубокий смысл сериализации?
От: Аноним  
Дата: 02.02.06 15:31
Оценка:
Хотя, конечно, если Вы все сделаете сами, то это будет меньше по размеру, но больше потратите времени!


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re[3]: Каков глубокий смысл сериализации?
От: Пух Украина  
Дата: 02.02.06 15:44
Оценка:
Здравствуйте, GSL, Вы писали:

GSL>как ни странно это все канает только с открытой датой...

GSL>т.е. с данным которые будет и get и set...

GSL>но с датой которая только get это почти невозможно, почти потому, что столько ограничений, что проще использовать Write/Read, особенно если говорить о XML. Потому-то что я так и не нашел примера реализации ISerealisable для XML сериализации, если подскажите, буду очень признателен


Потому что для кастомной XML-сериализации используют IXmlSerializable.
Пример здесь: http://msdn2.microsoft.com/en-us/library/fhd7bk0a(en-US,VS.80).aspx
Re[4]: Каков глубокий смысл сериализации?
От: GSL  
Дата: 02.02.06 15:54
Оценка:
Здравствуйте, Пух, Вы писали:

Пух>Здравствуйте, GSL, Вы писали:


GSL>>как ни странно это все канает только с открытой датой...

GSL>>т.е. с данным которые будет и get и set...

GSL>>но с датой которая только get это почти невозможно, почти потому, что столько ограничений, что проще использовать Write/Read, особенно если говорить о XML. Потому-то что я так и не нашел примера реализации ISerealisable для XML сериализации, если подскажите, буду очень признателен


Пух>Потому что для кастомной XML-сериализации используют IXmlSerializable.

Пух>Пример здесь: http://msdn2.microsoft.com/en-us/library/fhd7bk0a(en-US,VS.80).aspx
Это класическая сериализация, это что бы матом не сказать, заплатка на извествном месте.
Если я желаю что-то руками, то очень хочеться видеть все это в конструкторе, а не в вызове метода после созлания класса.

Но хоть что-то покапаю, если что-то вменяемое получиться расскажу.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[4]: Каков глубокий смысл сериализации?
От: GSL  
Дата: 02.02.06 15:57
Оценка:
Здравствуйте, Пух, Вы писали:

Пух>Здравствуйте, GSL, Вы писали:


Пух>Потому что для кастомной XML-сериализации используют IXmlSerializable.

Пух>Пример здесь: http://msdn2.microsoft.com/en-us/library/fhd7bk0a(en-US,VS.80).aspx

И самое главное, теперь придеться ваять 2 метода сериализации один для SOAP и Binary, а другой блин для XML помоему жутко нелогично, если не сказать больше.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[4]: Каков глубокий смысл сериализации?
От: Аноним  
Дата: 02.02.06 17:21
Оценка:
Сериализация подойдет для программ типа -HELLO WORLD- а там где есть ресурсоемкие операции сериализация заканчивается

------
Форум профессионалов


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re[2]: Каков глубокий смысл сериализации?
От: xvost Германия http://www.jetbrains.com/company/people/Pasynkov_Eugene.html
Дата: 02.02.06 17:40
Оценка: +1
Здравствуйте, Oyster, Вы писали:

O>Глубокий смысл в том, что для включения сериализации для класса тебе надо написать всего одну строчку кода


К сожаленгию, у всего есть обратная сторона.
Аккуратно ручками написанная сериализация через BinaryWriter/BinaryReader примерно в 100 раз быстрее работает чем эта.

Ес-но, в 99% случаев достаточно и производительности, которую обеспечивает стандартные механизм
С уважением, Евгений
JetBrains, Inc. "Develop with pleasure!"
Re[3]: Каков глубокий смысл сериализации?
От: Oyster Украина https://github.com/devoyster
Дата: 02.02.06 17:46
Оценка:
Здравствуйте, xvost, Вы писали:

X>К сожаленгию, у всего есть обратная сторона.

X>Аккуратно ручками написанная сериализация через BinaryWriter/BinaryReader примерно в 100 раз быстрее работает чем эта.

Кто ж спорит
Автор: Oyster
Дата: 02.02.06
Re[3]: Каков глубокий смысл сериализации?
От: Merle Австрия http://rsdn.ru
Дата: 02.02.06 17:50
Оценка: +1
Здравствуйте, GSL, Вы писали:

GSL>но с датой которая только get это почти невозможно, почти потому, что столько ограничений, что проще использовать Write/Read, особенно если говорить о XML.

Для таких случаев можно использовать не Write/Read, а паттерн memento.
(где в свою очередь использовать стандартный XmlSerializer)
... [RSDN@Home 1.2.0 alpha rev. 619]
Мы уже победили, просто это еще не так заметно...
Re[3]: Каков глубокий смысл сериализации?
От: Аноним  
Дата: 02.02.06 18:00
Оценка:
О да он не просто Serializer а XmlSerializer это говорит о многих преимуществах

------
Форум профессионалов


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re[4]: Каков глубокий смысл сериализации?
От: Merle Австрия http://rsdn.ru
Дата: 02.02.06 18:23
Оценка:
Здравствуйте, Nimnul, Вы писали:

N>О да он не просто Serializer а XmlSerializer это говорит о многих преимуществах

Это ты к чему? GSL интересовала именно Xml сериализация в условиях, когда сеттер недоступен.
... [RSDN@Home 1.2.0 alpha rev. 619]
Мы уже победили, просто это еще не так заметно...
Re[5]: Каков глубокий смысл сериализации?
От: Merle Австрия http://rsdn.ru
Дата: 02.02.06 18:23
Оценка:
Здравствуйте, Nimnul, Вы писали:

N>Сериализация подойдет для программ типа -HELLO WORLD- а там где есть ресурсоемкие операции сериализация заканчивается

Похоже, уверждение страдает некоторой расплывчатостью... То есть, если я выполняю в приложении серьезные ресурсоемкие операции, то сериализовать конфиг файл с настройками уже нельзя?
... [RSDN@Home 1.2.0 alpha rev. 619]
Мы уже победили, просто это еще не так заметно...
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.