Подтвердить что ты не робот

Зачем использовать XML (SOAP), когда JSON настолько прост и удобен в обращении?

Получение и отправка данных с помощью JSON выполняется с помощью простых HTTP-запросов. В то время как в SOAP нам нужно позаботиться о многом. Разбор XML также иногда бывает затруднен. Даже Facebook использует JSON в Graph API. Я все еще удивляюсь, почему все еще нужно использовать SOAP? Есть ли какая-либо причина или область, где SOAP по-прежнему является лучшим вариантом? (Несмотря на формат данных)

Кроме того, в простых клиент-серверных приложениях (например, мобильных приложениях, подключенных к серверу) может ли SOAP давать какие-либо преимущества перед JSON?

Я буду очень благодарен, если кто-то сможет заручиться основными/заметными различиями между JSON и SOAP, учитывая информацию, которую я предоставил (если есть).

4b9b3361

Ответ 1

Я нашел следующее о преимуществах SOAP

  • Существует одна большая причина, по которой каждый придерживается SOAP вместо использования JSON. С каждой настройкой JSON вы всегда придумываете свои собственные структура данных для каждого проекта. Я не имею в виду, как кодируются данные и передается, но как определяется формат форматирования данных, данные модель.
  • SOAP имеет промышленный зрелый способ указать, что данные будут форма Корзина представляет собой набор Продуктов, и каждый продукт может иметь эти атрибуты и т.д. Хорошо составленный документ WSDL действительно имеет это прибито. Черт, это спецификация W3C.
  • JSON имеет аналогичные способы указания этой структуры данных. JavaScript класс приходит на ум как наиболее распространенный способ сделать это. Класс JavaScript на самом деле не является структурой данных в любом виде агностик, хорошо установленный, широко используемый способ. Черт возьми, JavaScript действительно выполняется только в одной среде, в браузере.
  • Короче говоря, SOAP имеет способ указать структуру данных в зрелый формат документа (WSDL). У JSON нет стандартного способа сделать это.

Если вы создаете клиентское приложение, а реализация вашего сервера выполняется с помощью SOAP, вы должны использовать SOAP на стороне клиента.

Также см. здесь и here

Ответ 2

В настоящее время SOAP - полный перебор, ИМХО. Было приятно использовать его, приятно изучать его, и красиво мы можем использовать JSON сейчас.

Единственное различие между службами SOAP и REST (независимо от того, использует ли JSON), состоит в том, что SOAP WS всегда имеет собственный WSDL документ, который можно легко преобразовать в самоописательную документацию, в то время как в REST вы необходимо написать документацию для себя (по крайней мере, для документирования структур данных). Вот мои плюсы и минусы для обоих:

REST

Pros

  • легкий (в любом случае: не требуется расширение ни серверных, ни клиентских сторон, никаких больших фрагментов XML не требуется, чтобы их можно было передавать здесь и там)
  • свободный выбор формата данных - вам решать, использовать ли вы простой TXT, JSON, XML или даже создать собственный формат данных.
  • большинство современных форматов данных (и даже если используется XML) обеспечивает передачу только действительно необходимого количества данных по HTTP, а при использовании SOAP для 5 байтов данных вам нужно 1 кбайт XML-мусора (преувеличенный, ofc, но у вас есть смысл)

Против

  • даже есть инструменты, которые могут генерировать документацию из комментариев docblock, необходимо писать такие комментарии очень описательно, если вы хотите также получить хорошую документацию.

SOAP

Pros

  • имеет WSDL, который может быть сгенерирован из даже базовых комментариев докблока (на многих языках даже без них), который хорошо работает как документация
    • даже есть инструменты, которые могут работать с WSDL, чтобы дать расширенный пример этого интерфейса запроса (пока я не знаю о каком-либо таком инструменте для REST) ​​
  • строгая структура данных

Против

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

В заключение, Я не вижу большой причины предпочитать SOAP над REST (и JSON). Оба могут сделать то же самое, есть встроенная поддержка JSON-кодирования и декодирования почти на каждом популярном языке веб-программирования, а с JSON у вас больше свободы, а передачи HTTP очищены от множества бесполезных информационных барахлов. Если бы я должен был построить какой-либо API, я бы использовал REST с JSON.

Ответ 3

Я немного не согласен с тенденцией JSON, которую я вижу здесь. Хотя JSON - это чудо порядка, я бы рискнул сказать, что он довольно ограничен. Например, SOAP WS - это не последнее. Действительно, между клиентом/сервером мыла теперь есть шина служб предприятия, схема аутентификации, основанная на криптографии, управлении пользователями, запросах времени/ответах и ​​т.д. Для всего этого существуют некоторые огромные программные платформы, которые предоставляют услуги вокруг SOAP (ну, "веб-сервисы" ), и вы будете вводить материал в свой XML. Поэтому, хотя JSON, вероятно, достаточно для небольших проектов и на порядок проще там, я думаю, что он становится весьма ограниченным, если у вас есть развязанный контроль передачи и контент (т.е. Вы разрабатываете материал контента, фактический сервер, но вся передача управляется другой командой, аутентификация еще одной командой, развертывание еще одной командой). Я не знаю, подходит ли мой опыт в большом корпусе, но я бы сказал, что JSON там не выживет. Слишком много ограничений на вершине базовой потребности представления данных. Поэтому проблема не в самом JSON RPC, проблема в том, что она пропускает дополнительные инструменты для управления сложностью, возникающей в сложных приложениях (не говоря уже о том, что то, что вы делаете, не сложно, просто программное обеспечение отражает сложность компании, которая производит его)

Ответ 4

Я разработчик PHP/JS. Причина для JSON проста. JSON == JS Object. Если существует какой-то ковбой, который хочет разобрать XML в браузере... Что я могу сказать... "Удачи"