Имея контроль над клиентом и сервером, в каких случаях XML предпочтительнее, чем JSON? - PullRequest
1 голос
/ 06 марта 2011

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

Ответы [ 4 ]

3 голосов
/ 06 марта 2011

XML изначально был разработан для разметки текста в документах.Это то, что JSON просто не может сделать.

XML получил широкое распространение в качестве второстепенной роли, сериализуя структурированные данные в текстовую форму для обмена сообщениями.Это работа, которую JSON, вероятно, может сделать так же хорошо.В этой роли XML имеет преимущество из-за слоев, которые были построены вокруг него: языки схем, пространства имен, языки преобразования и запросов, базы данных и т. Д .;в то время как JSON имеет преимущество, поскольку он проще и лучше подходит для традиционных языков программирования 3G.

XML используется в качестве основы для тысяч стандартизированных словарей для определенных типов данных.Эти словари не исчезнут в спешке;и я пока не вижу, чтобы кто-то разрабатывал новые стандартные форматы сообщений с использованием JSON, а не XML (как только они это сделают, JSON потребуется добавить уровни сложности, накопленные XML).Я думаю, что JSON сегодня широко используется для обмена данными между двумя программами, которые были написаны одними и теми же людьми.

2 голосов
/ 06 марта 2011

Единственное преимущество JSON перед XML состоит в том, что он имеет меньший вес (это означает, что он быстрее отправляет через соединения и занимает меньше места).

XML предоставляет строго типизированную схему, проверяющую нелепое количество дополнительных языков и систем, построенных на ее основе (см. Список W3C ).XML можно использовать для построения больших сложных систем.

JSON может представлять данные, но без интерпретатора практически бесполезен.Эти два действительно нельзя считать аналогичными.

Единственный раз, когда следует использовать JSON, это для передачи данных с сервера клиенту или возможно в хранилище данных (при условии, что существует некоторая строго типизированная схема для интерпретации JSON,такой как RavenDB).

Многие виды использования и применения XML буквально безграничны.Но он больше и медленнее.

Подход, который я использую, заключается в том, чтобы выполнять любую обработку с использованием XML, а когда приходит время что-то отправлять, переводить XML на серверную часть JSON (что довольно просто).

2 голосов
/ 06 марта 2011

У меня сложилось впечатление (из личного опыта и общения с другими), что популярность JSON в основном обусловлена ​​его простотой. XML может делать практически все, но такая гибкость достигается ценой некоторой сложности. Для большинства разработчиков (особенно новичков) запуск и запуск веб-сервисов, а также выполнение чего-то действительно с XML занимает больше времени, чем с JSON.

Мое эмпирическое правило заключается в том, что для действительно сложных графов объектов, вещей уровня предприятия (проверка, аудит, сложное пространство имен и т. Д.) Вам, вероятно, понадобится XML. Если вы выбрасываете множество веб-сервисов, которые передают простые данные, JSON - гораздо более быстрый и простой вариант разработки. Это последнее особенно верно, если JavaScript будет активным потребителем этих веб-сервисов.

Если вы не уверены, что то, что вы делаете, достаточно сложно, чтобы гарантировать XML, я бы рекомендовал использовать JSON до тех пор, пока вы не начнете нарушать его ограничения, а затем перейти к XML. Очевидно, что здесь есть риск (любое решение, подобное этому, представляет некоторый риск), но если вам в конечном итоге не нужен XML, то вы сэкономите много времени и потенциальные головные боли для разработчиков.

Это также зависит от вашей команды разработчиков - если у вас есть парни, которые годами создавали веб-сервисы XML и могут писать SAX-парсеры во сне, XML может быть правильным ответом, независимо от того, что вы пишете ,

0 голосов
/ 06 марта 2011

AFAIK JSON менее многословен и более читабелен, а значит, и вся аура «лучше, чем xml».

XML хорош, особенно если вы начинаете переходить к конкретным реализациям, таким как soap или wsdl, для определения структуры. Есть много библиотек, которые облегчают жизнь, но, будучи многословным, есть факт, что для передачи всех данных нужно много передавать.

Посмотрите protobuf , thrift или другие двоичные механизмы сериализации / передачи данных. Они могут идеально подойти для вашего случая использования.

...