2012-06-19 3 views
21

Мне интересно, какой сериализованный механизм следует выбирать при работе с передачей объектов по сети. Каковы плюсы и минусы ?Java Serialization vs JSON vs XML

Я знаю, что большую часть времени мы используем JSON или XML для AJAX с формата передачи довольно много Javascript формата, и плюс JSON довольно легкий с его небольшим размером, поэтому Java сериализации полностью из таблицы?

ответ

15

В общем, важным вопросом является то, какой клиент получит сериализованные объекты - браузеры/JavaScript-движки, такие как (node-js), клиент Java, неизвестные/несколько клиентов.

JSON - Синтаксис JSON - это в основном JavaScript, и поэтому любой компонент с двигателем JS будет обрабатывать его синтаксический анализ очень хорошо - даже сложные структуры данных будут эффективно преобразованы в «живые» объекты.Парсеры JSON существуют практически для любого языка, и их легко использовать, даже если они не используют JS-движок (например, возьмите Google Gson, который может легко конвертировать JSON в соответствующие объекты), что делает его хорошим кандидатом на межязычную связь - например, в messaging architecture.

XML - Предоставляет много преимуществ JSON - кросс-язычный, легкий и т. Д. Adobe Flex, например, обрабатывает XML очень хорошо, даже лучше, чем JSON. Это определенно подходящая замена для JSON. Я лично предпочитаю JSON для своего синтаксиса JS, но XML тоже хорош.

Java Serialization - Должно учитываться только для связи Java-Java. Важно отметить, что определения классов должны быть на отправляющем и принимающем концах, и часто вы не получите многого, передав весь объект. Я бы не исключил RMI как протокол связи, это упростило развитие. Однако получаемые компоненты приложения будут жестко связаны, что очень затруднит их замену.

Еще одна заметка - Сериализация в целом имеет свои накладные расходы. Однако, когда связь выполняется по сети, узким местом часто является сеть, а не сама сериализация/десериализация.

+0

Так вы все еще будете рассматривать JSON или XML по сериализации Java, когда это сообщение JAVA-to-JAVA? – peter

+0

Если все, что вы проходите, это данные, я бы пошел на XML или JSON. Я бы не стал сериализовать и передавать объекты Java вручную. Посмотрите на Java RMI, если имеет смысл иметь одно и то же определение объекта на обоих концах, и в случае, если вы заинтересованы в вызове методов на удаленном объекте. Надеюсь, поможет. –

6

Я думаю, что это зависит. Если вы отправляете HTTP-запрос или что-то, то JSON или XML, очевидно, хороший выбор. Если вы просто отправляете объект java через tcp-сокет для какого-либо распределенного алгоритма или что-то, то я думаю, что сериализация java проще/лучше

1

Я думаю, что разработчиком мы не должны заботиться о сериализации объектов ответа. но если мы рассмотрим JSON, у него есть приличные преимущества для выбора над XML.

  1. JSON Response не требует кодированного ответа в отличие от XML.
  2. Обработка и обработка JSON быстрее по сравнению с XML, поскольку он не анализируется.
  3. XML-ответ для AJAX всегда кодируется, поэтому обработка требует времени.
  4. JSON лучше всего подходит для JQuery для кодирования пользовательского интерфейса и работает быстрее.
  5. Обработка огромных данных Например: получение данных индексирования на/с сервера, обработка JSON выполняется быстрее.
4

В то время как сериализация по сети будет работать как xml, так и json. Это зависит от потребителя этой информации.

  • Если потребитель является браузером с помощью Ajax, чтобы запросить информацию и сделать что-то на экране, как правило, Ясон является лучшим выбором, как его уже в формате JavaScript Object и нет никаких накладных расходов преобразования в Javascript совместимых объектов , На самом деле многие библиотеки Ajax (например, jQuery) имеют хорошую поддержку json.

  • Если вы являетесь другим приложением, которое может быть или не быть в java, то xml является предпочтительным механизмом сериализации. Веб-службы используют xml очень сильно.

  • Если ваш потребитель является другой программой Java, то определенная сериализация java является предпочтительной (например, RMI). Так что его еще нет :-).

Но да, между XML и Json существует размытая линия. То, что я упомянул здесь, - это общая практика. Вот nice article, ставя весь аспект на xml vs jason.