C#.
Вот у меня есть класс (допустим, MyClass), у него внутри есть массив членов другого класса (допустим, MyClassElement) и еще несколько. Все их надо сохранить. И какая разница, будет у меня 2 класса, производные от ISerializable, или будет 2 класса со своими методами Save и Load через BinaryReader/Writer? Даст ли сериализация какие-либо преимущества (сохранение будет производиться только в файл на локальном компе)? Что проще в написании, в отладке?
И где (книги, или инет) можно про сериализацию (в том числе про нововведения в .NET 2.0) почитать на русском? В нашем городе ни одной путёвой книги по C# я не нашел А хочется книжку...
Вот по Visual C++ 6.0 я в свое время брал книгу Дэвида Круглински и кого-то еще (изд-во "Питер"), а по C# 2.0 что-то вроде этого есть?
Глубокий смысл в том, что для включения сериализации для класса тебе надо написать всего одну строчку кода — указать SerializableAttribute для класса и всё. После этого сериализация/десериализация будет делаться автоматически и тебе не прийдётся для каждого класса писать кастомный код сериализации ручками.
Каков глубокий смысл сериализации?
От:
Аноним
Дата:
02.02.06 15:06
Оценка:
Сериализация проще! Для того, чтобы сериализовать, Вам нужно только, чтобы MyClass и MyClassElement имели атрибут Serializable — и все. Если Вы хотите custom сериализацию — Вам надо уже имплементить ISerializable (а надо ли?). Можно конечно и Save и Load через BinaryReader/Writer — но надо ли?
Здравствуйте, MaxxK, Вы писали:
MK>Вот у меня есть класс (допустим, MyClass), у него внутри есть массив членов другого класса (допустим, MyClassElement) и еще несколько. Все их надо сохранить. И какая разница, будет у меня 2 класса, производные от ISerializable, или будет 2 класса со своими методами Save и Load через BinaryReader/Writer? Даст ли сериализация какие-либо преимущества (сохранение будет производиться только в файл на локальном компе)? Что проще в написании, в отладке?
Для сериализации/десериализации нет необходимости реализовывать ISerializable.
Здравствуйте, Oyster, Вы писали: O>Глубокий смысл в том, что для включения сериализации для класса тебе надо написать всего одну строчку кода — указать SerializableAttribute для класса и всё. После этого сериализация/десериализация будет делаться автоматически и тебе не прийдётся для каждого класса писать кастомный код сериализации ручками.
А на размере это сильно сказывается? Где-то ведь нас должны обманывать...
Здравствуйте, MaxxK, Вы писали:
MK>Здравствуйте, Oyster, Вы писали: O>>Глубокий смысл в том, что для включения сериализации для класса тебе надо написать всего одну строчку кода — указать SerializableAttribute для класса и всё. После этого сериализация/десериализация будет делаться автоматически и тебе не прийдётся для каждого класса писать кастомный код сериализации ручками.
MK>А на размере это сильно сказывается? Где-то ведь нас должны обманывать...
Здравствуйте, 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
Оценка:
Это смотря что эти классы будут содержать и какие у Вас требования к размеру сериализованного файла.
Здравствуйте, GSL, Вы писали:
GSL>как ни странно это все канает только с открытой датой... GSL>т.е. с данным которые будет и get и set...
GSL>но с датой которая только get это почти невозможно, почти потому, что столько ограничений, что проще использовать Write/Read, особенно если говорить о XML. Потому-то что я так и не нашел примера реализации ISerealisable для XML сериализации, если подскажите, буду очень признателен
Здравствуйте, Пух, Вы писали:
Пух>Здравствуйте, 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
Это класическая сериализация, это что бы матом не сказать, заплатка на извествном месте.
Если я желаю что-то руками, то очень хочеться видеть все это в конструкторе, а не в вызове метода после созлания класса.
Но хоть что-то покапаю, если что-то вменяемое получиться расскажу.
И самое главное, теперь придеться ваять 2 метода сериализации один для SOAP и Binary, а другой блин для XML помоему жутко нелогично, если не сказать больше.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[4]: Каков глубокий смысл сериализации?
От:
Аноним
Дата:
02.02.06 17:21
Оценка:
Сериализация подойдет для программ типа -HELLO WORLD- а там где есть ресурсоемкие операции сериализация заканчивается
Здравствуйте, Oyster, Вы писали:
O>Глубокий смысл в том, что для включения сериализации для класса тебе надо написать всего одну строчку кода
К сожаленгию, у всего есть обратная сторона.
Аккуратно ручками написанная сериализация через BinaryWriter/BinaryReader примерно в 100 раз быстрее работает чем эта.
Ес-но, в 99% случаев достаточно и производительности, которую обеспечивает стандартные механизм
С уважением, Евгений
JetBrains, Inc. "Develop with pleasure!"
Здравствуйте, xvost, Вы писали:
X>К сожаленгию, у всего есть обратная сторона. X>Аккуратно ручками написанная сериализация через BinaryWriter/BinaryReader примерно в 100 раз быстрее работает чем эта.
Здравствуйте, 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 это говорит о многих преимуществах
Здравствуйте, Nimnul, Вы писали:
N>О да он не просто Serializer а XmlSerializer это говорит о многих преимуществах
Это ты к чему? GSL интересовала именно Xml сериализация в условиях, когда сеттер недоступен.
Здравствуйте, Nimnul, Вы писали:
N>Сериализация подойдет для программ типа -HELLO WORLD- а там где есть ресурсоемкие операции сериализация заканчивается
Похоже, уверждение страдает некоторой расплывчатостью... То есть, если я выполняю в приложении серьезные ресурсоемкие операции, то сериализовать конфиг файл с настройками уже нельзя?