Кодило
251 / 179 / 23
Регистрация: 25.11.2009
Сообщений: 685
|
|
1 | |
XmlSerializer vs BinaryFormatter27.04.2011, 00:15. Показов 4916. Ответов 21
Метки нет (Все метки)
В чем разница, кроме типа сохранения? Что быстрее, что лучше и удобнее, что и в каком случае использовать "правильнее"? Сам пользуюсь BinaryFormatter, но часто вижу, что многие для примера сериализации приводят именно Xml.
0
|
27.04.2011, 00:15 | |
Ответы с готовыми решениями:
21
BinaryFormatter Ошибка XmlSerializer.XmlSerializer() недоступен из-за его уровня защиты Ошибка в BinaryFormatter Проблемы с сериализацией (BinaryFormatter) |
464 / 341 / 19
Регистрация: 26.05.2009
Сообщений: 2,696
|
|
27.04.2011, 02:38 | 2 |
Я лично всеми руками и ногами за бинарный. Его недостатком является то, что сериализовав данные на .NET, обратное Вы можете сделать только на нем же. То есть, например, есть приложение, передающее по сети данные. Если передающий сервер написан на .NET'е, то и клиент должен быть написан на .NET.
У XML минусом является огромный избыток данных (бывает в 2-3 раза и более), и на мой взгляд работает медленнее. Но можно транспортировать данные и между многими другими платформани. Бинарный обычно используют чаще, но только не когда нужно будет передавать данные между разными платформани.
0
|
44 / 45 / 15
Регистрация: 11.08.2010
Сообщений: 226
|
|
27.04.2011, 08:34 | 3 |
Ну все зависит от нужд. Мне к примеру сериализация нужна для быстрого и удобного изменения структуры пакета без пересборки приложения каждый раз. Я выгрузил пакеты в XML и радуюсь. Даже тулзу закрывать не надо Если же надо выгрузить данные для транспортировки, то тут BinaryFormatter в самый раз
0
|
1274 / 975 / 113
Регистрация: 12.01.2010
Сообщений: 1,971
|
|
27.04.2011, 10:57 | 4 |
Я раньше тоже уважал бинарный, а потом в один прекрасный день изменил пол символа в коде и обнаружил что сохраненная инфа уже не читается
А XML вообще чудеса творит, можно пол класса переписать и он все равно прочитается из файла, ну и редактирование блокнотом тоже плюс В случае xml приличная задержка только при первом создании serializer, а вот само чтение и дальнейшее использование вполне быстрое
0
|
464 / 341 / 19
Регистрация: 26.05.2009
Сообщений: 2,696
|
|
27.04.2011, 11:18 | 5 |
Есть же еще сериализаторы. Вот сейчас в маршрутке и не вспомню, как называются. Но у меня с ними туговато было и я их еще давно решил не использовать.
0
|
2347 / 1720 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
|
|
27.04.2011, 11:35 | 6 |
Потому что генерируется специальная сборка, которая и будет заниматься сериализацией.
0
|
Кодило
251 / 179 / 23
Регистрация: 25.11.2009
Сообщений: 685
|
|
27.04.2011, 19:14 [ТС] | 7 |
Решил таки для сохранения настроек использоваться Xml, ибо настройки класс может меняться, а совместимость с прошлым файлом настроек обязательна )
0
|
464 / 341 / 19
Регистрация: 26.05.2009
Сообщений: 2,696
|
|
27.04.2011, 21:06 | 8 |
Сомневаюсь, что если у Вас появятся новые поля в классе, то они магическим способом проинициализируются из старой версии...
0
|
Кодило
251 / 179 / 23
Регистрация: 25.11.2009
Сообщений: 685
|
|
27.04.2011, 21:31 [ТС] | 9 |
body90, очень хорошо работает, только что проверил, добавил поле и десериализовал старый файл, все отлично прошло.
0
|
44 / 45 / 15
Регистрация: 11.08.2010
Сообщений: 226
|
|
27.04.2011, 21:37 | 10 |
Тут опять же надо смотреть по типу применения. Если это конфиг программы, то, что часто подвергается изменениям\может быть изменено лучше выносить в XML, т.е использовать сериализацию
Если же надо транспортировать данные(инфа о покупкам за день, кол-во посетителей и т.п) на другой компьютер по средствам диска\флешки\интернета то лучше использовать BinaryFormatter, дабы минимализировать размер файла
0
|
464 / 341 / 19
Регистрация: 26.05.2009
Сообщений: 2,696
|
|
28.04.2011, 01:35 | 11 |
Вы невнимательно читаете!) Добавленное же поле всё равно никак не проинициаллизируется.
0
|
Кодило
251 / 179 / 23
Регистрация: 25.11.2009
Сообщений: 685
|
|
28.04.2011, 02:16 [ТС] | 12 |
body90, а, ну да, но это решаемо, в случае с бинарным сериализатором не получилось бы даже десериализовать)
0
|
970 / 773 / 171
Регистрация: 12.04.2009
Сообщений: 1,700
|
|
28.04.2011, 07:54 | 13 |
XmlSerializer vs BinaryFormatter - не путайте грешное с праведным, а то несете всякую чушь...
ЗЫ. У каждого свое назначение...
0
|
464 / 341 / 19
Регистрация: 26.05.2009
Сообщений: 2,696
|
|
28.04.2011, 08:49 | 14 |
Konctantin, и почему же Вы нас не просвятили?
Добавлено через 2 минуты Я просто для каждой версии оставлял отдельный класс и при ошибке десериализации пробовал открыть через старую версию. А XML использую только если мне нужно будет менять что-то блокнотом.
0
|
399 / 366 / 54
Регистрация: 23.05.2010
Сообщений: 716
|
||||||
10.06.2011, 21:09 | 15 | |||||
Подыму слегка старую тему, т.к. вопрос вроде бы невелик, да и к названию темы в общем-то подходит
Возможно ли BinaryFormatter`ом провести сериализацию массива объектов, например такого типизированного списка? Или это умеет только XML, и бинарный сериализатор в пролёте?
0
|
464 / 341 / 19
Регистрация: 26.05.2009
Сообщений: 2,696
|
|
15.11.2013, 11:21 | 17 |
0
|
1057 / 864 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
|
||||||
15.11.2013, 16:31 | 18 | |||||
body90, нет, XmlSerializer не умеет сериализовать сам List<T>
однако несложно написать свой класс, который будет проходить по списку, получать xml-код для каждого из объектов списка и из таких кусочков формировать уже готовый файл Добавлено через 15 минут что-то типа
0
|
15.11.2013, 17:20 | 19 |
Я бы сказал в гибкости и возможности самому управлять сериализацией (для XML).
Это уже каждый решает для себя сам. Что касается передачи данных, то кто мешает сделать XML сериализацию, зазиповать и отправить массив байт.
0
|
464 / 341 / 19
Регистрация: 26.05.2009
Сообщений: 2,696
|
||||||
16.11.2013, 03:09 | 20 | |||||
Или мы сейчас о разном говорим?
0
|
16.11.2013, 03:09 | |
16.11.2013, 03:09 | |
Помогаю со студенческими работами здесь
20
Почему BinaryFormatter требует IXmlSerializable? Сериализация разнотипных коллекций с помощью BinaryFormatter Потеря данных при десериализции (BinaryFormatter) Почему BinaryFormatter не сериализует мой класс? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |