XML vs JSON: или как общаются современные веб-приложения между собой 6
Хочется высказать свою активную позицию насчет форматов передачи сообщений между приложениями в веб-среде. Или можете считать это просто настойчивым советом, особенно относящемуся к начинающим веб-разработчикам. Итак, что использовать? XML или JSON?
Общение (обмен сообщениями, если хотите) современных веб-приложений очень актуальная тема. В связи с появлением веб-сервисов в прошлом и огромным ростом популярности сложных (rich) интерфейсов в настоящем, появляется потребность в удобном и легком способе передачи данных между приложениями. Чаще всего подразумевается общение клиента и сервера. Частные случаи: всем полюбившийся Ajax, Flash/Flex приложения с динамическим контентом, API для публичных сервисов.
Так вот исторически сложилось что для этих задач использовался изначально XML, как универсальный способ описания любых данных. Но позже появился новый (популярный сегодня) формат – JSON. Про сам формат вы можете почитать в инете, благо информации достаточно. А вот свои субъективные плюсы и минусы я напишу ниже.
Плюсы JSON по сравнению с XML:
- быстрее парситься;
- легче визуально воспринимается;
- нативно интегрирован в JavaScript (читай Ajax);
К этому списку могу добавить отрывки личного опыта. С парсингом и валидацией XML есть достаточно много проблем, зависящих от библиотеки с которой вы работаете. Сериализация данных в JSON обычно в коде занимает меньше места, чем кодирование сериализации в XML. Интересным практичным моментом есть именно разработка Ajax интерфейсов, где JSON сокращает JS код. Большим плюсом к этому является возможность использования того-же протокола не только Ajax-ом, но и например Flash/Flex приложением или сторонним сервисом как API.
Вывод. Я считаю, что XML на самом деле не так уж плох и для общения между приложениями, но он лучше подходит для хранения сложно структурированных данных. А вот большим плюсом JSONа как раз является сокращение времени на разработку базового веб-приложения и его дальнейшей быстрой интеграции с другими разнородными приложениями. Еще проще говоря, если вы собираетесь заняться изучением или сразу использованием Ajax в своих проектах, обратите внимание на JSON и сэкономьте свое время.
PS о недостатках. Посмотрите статью Tim Bray и Don Box по теме.

Trackbacks
Use the following link to trackback from your own site:
http://livedev.org/trackbacks?article_id=xml-vs-json-or-modern-webaaps-communiction&day=14&month=11&year=2007







На тему сериализации - у JSON'а меньше гибкости, в XML можно гораздо более разнообразные данные запихнуть. Во всяком случае, это говорит опыт общения с сериализаторами на питоне.
Так что пока это AJAX - то JSON просто супер, но если придётся что-то делать с обменом сложными данными... Ну, панацеи от всего не бывает. :-)
Ну для сложно структурированных данных можно извратнуться и сделать serialize вовнутрь переменной и потом все это добро JSONом отдать. Но в принципе данные можно представить как массив. А соответственно его можно упаковать в JSON. Вроде бы =)
Вообще-то это и есть JS.
Вообще я хотел подчеркнуть, что начинающим веб-разработчикам можно везде использовать JSON, он покроет 98% процентов потребностей. Ну а когда есть опыт советы особо не нужны ;-)
2Денис. Цитата с википедии: "Несмотря на происхождение от JavaScript (точнее, от подмножества языка стандарта ECMA-262 1999 года), формат считается языконезависимым и может использоваться практически с любым языком программирования"
Так что на практике это javascript, но в теории совершенно независимый формат данных.
А я и не говорил, что он не есть назависимым.
Я имел в виду, что он не интегрирован в JS, а собственно является его частью, потому как это его объктная нотация.
PS: у вас в блоге та же болезнь -- не сохраняется email
Вы еще не учли, что JSON - это переменные, а XML - структура данных. Т.е. JSON более нативен для программы, хоть и менее гибок. В PHP я лучше вызову json_decode(), чем мучиться с разбором XML файла.