Сериализация Java против JSON против XML

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

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

4 ответа

Решение

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

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

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

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

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

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

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

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

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

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

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

Однажды я посетил тренинг инженера по безопасности, и я не рекомендовал использовать собственную сериализацию Java из-за некоторой слабости безопасности на стороне собственной десериализации Java, которая может принимать любые (потенциально внедренные вредоносные) потоки байтов. Также у XML есть известная проблема безопасности, когда определение / схема определена неправильно, что называется XXE (XML Enternal Entities). Это может вызвать атаку "миллиарда смеха" на стороне потребителя.

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

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