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

SOAP - Какой смысл?

Я имею в виду, действительно, в чем смысл SOAP?

Веб-службы уже давно существуют, и какое-то время казалось, что термины "SOAP" и "Web-сервис" в значительной степени взаимозаменяемы. Однако SOAP всегда казался громоздким и массово сложным для меня.

Затем появился REST, и неожиданно веб-службы имели смысл.

Как говорит Джоэл Спольский, дайте программисту URL REST, и они сразу начнут играть с услугой, выяснив это.

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

Итак, суть моего вопроса:

  • Есть ли веские причины когда-либо выбирать SOAP over REST?
  • Вы работаете с SOAP сейчас? Было бы лучше, если бы интерфейс был REST?
  • Я не прав?
4b9b3361

Ответ 1

Ну, теперь кажется, что WSI согласны с тем, что SOAP больше не имеет смысла, поскольку они объявили, что перестанут существовать как независимый объект.

Интересная статья об объявлении и некоторые комментарии здесь: http://blogs.computerworlduk.com/simon-says/2010/11/the-end-of-the-road-for-web-services/index.htm

Отредактировано полностью точно в ответ на John Saunders.

Ответ 2

Как говорит Джоэл Спольский, дайте программисту URL REST, и они сразу начнут играть с услугой, выяснив это.

Если у службы был четко определенный, машиночитаемый контракт, тогда программисту не пришлось бы тратить время на то, чтобы понять это.

(не то, что WSDL/SOAP обязательно является примером хорошей реализации четко определенного контракта, но это была точка WSDL)

Первоначально SOAP был простым протоколом, который позволил вам добавить заголовок в сообщение и имел стандартизованное сопоставление экземпляров объектов с XML-структурами. Помещение метаданных обработки в сообщение упростило клиентский код и означало, что вы можете очень просто перенести и отправить в очередь сообщения.

Я никогда не нуждался в деталях обработки заголовков, когда я создавал службы SOAP еще в 2001 году. Это был предварительный WSDL, и тогда было нормально использовать GET для получения информации и запросов (ничем не отличающихся от большинства приложений, которые утверждают, что они REST; REST имеет больше возможностей использования гиперссылок для обнаружения сервисов) и POST с полезной нагрузкой SOAP для выполнения действий. Те действия, которые создали ресурсы, вернут URL-адрес созданного ресурса клиенту, и клиент может затем получить ресурс. Я считаю, что WSDL упростил думать только с точки зрения RPC, а не с действиями, которые создают ресурсы, из-за которых SOAP теряют сюжет.

Ответ 4

Как я вижу, SOAP может быть более "гибким", но в результате он слишком сложный (вы упомянули WSDL, который всегда является камнем преткновения для меня лично).

I получить REST. Это простой. Единственный недостаток, который я могу заметить, заключается в том, что вы ограничиваете себя этими четырьмя основными действиями против одного ресурса, что может не совсем соответствовать способу просмотра ваших данных.

Ответ 5

Проведя некоторое исследование, чтобы понять некоторые из ответов здесь (особенно Джон Сондерс), я нашел этот пост http://harmful.cat-v.org/software/xml/soap/simple SOAP более сумасшедший, чем я думал...

Ответ 6

Точкой WSDL было автоматическое обнаружение. Идея заключалась в том, что вам не пришлось бы писать клиентский код, он был бы автоматически сгенерирован.

BTW. следующий шаг за пределами WSDL Семантические веб-сервисы.

Ответ 7

Если вам не нужны функции серии протоколов WS- *; если вам не нужны самоописательные услуги; если ваша служба не может быть полностью описана как ресурсы, как определено протоколом HTTP; если вам не нравится создавать XML для каждого взаимодействия с сервисом и анализировать его впоследствии; то вам понадобится SOAP.

В противном случае обязательно используйте REST.


Был вопрос о ценности самоописывающей службы. Мое воображение терпит неудачу, когда речь заходит о том, как кто-то может не понять этого. Это на меня. Тем не менее, я должен думать, что любой, кто когда-либо использовал услугу, намного более сложную, чем "Hello, world", знал бы, почему важно, чтобы кто-то еще написал код, который принимает параметры, создает XML для отправки в службу, отправляет он получает ответ, затем обращается к объектам.

Теперь, я полагаю, это может быть необязательно при использовании службы RESTful; по крайней мере, не с помощью службы RESTful, которая не обрабатывает сложные объекты. Даже при относительно простом сервисе, таком как http://www.earthtools.org/webservices.htm (который я использовал в качестве примера вызова службы RESTful), можно извлечь выгоду из понимания структура возвращаемых данных. Даже вышеупомянутая служба предоставляет XML-схему - она, к сожалению, не описывает весь ответ. Учитывая эту схему, все еще нужно вручную обработать XML или использовать инструмент для создания сериализуемых классов из схемы.

Все это происходит для вас, когда служба описана в WSDL, и вы используете инструмент, например "Добавить служебную ссылку" в Visual Studio или программу svcutil.exe, или I-forget-what-the-command -is-в-Eclipse.

Если вам нужны примеры, начните с сервисов EarthTools и перейдите к любым другим службам с более сложным обменом сообщениями.

BTW, еще одна вещь, которая требует самоописания - описание шаблонов обмена сообщениями и протоколов, поддерживаемых службой. Возможно, это не требуется, когда единственными вариантами являются HTTP-глаголы через HTTP или HTTPS. Жизнь становится все сложнее, если вы используете WS-Security и друзей.

Ответ 8

Я обнаружил, что SOAP подходит наиболее подходящим образом, когда существует высокая вероятность того, что услуга будет потребляться корпоративным программным обеспечением (COTS). Из-за хорошо определенного контракта, используемого SOAP/WSDL, большинство пакетов COTS имеют встроенную функциональность для потребления таких услуг. Это упростит использование инструментов BPM/workflow и т.д., Чтобы просто использовать определенные службы без настройки. Помимо этого случая использования службы REST имеет тенденцию быть моей версией веб-сервиса goo для приложений.

Ответ 9

Я думаю, SOAP обращается к толпе Java и .net, которые могут быть более знакомы со старой CORBA и COM и менее знакомы с интернет-технологиями.

У REST также есть один главный недостаток: очень мало указаний относительно того, как реально реализовать такую ​​систему. Вы найдете значительные различия в том, сколько из общих API RESTful было разработано. На самом деле многие нарушают ключевые аспекты REST (например, использование GET для манипуляции или POST для извлечения), и есть разногласия по поводу фундаментального использования (POST/GET vs POST/GET/PUT/DELETE).

Ответ 10

Я не прав?

"Ты не ошибаешься, Уолтер, ты просто...:)"

Есть ли веские причины когда-либо выбирать SOAP over REST?

SOAP, к моему пониманию относится к контракту, поэтому можно проверить тип.

Ответ 11

SOAP - это легкая структурированная спецификация протокола на основе XML, которая будет использоваться при внедрении служб. Он используется для обмена структурированной информации в децентрализованной распределенной среде. SOAP использует XML-технологии для обмена информацией по любому протоколу транспортного уровня. Он не зависит от какой-либо конкретной модели программирования и другой специфической семантики реализации. Подробнее о XML SOAP Messaging Framework

Структура обмена сообщениями на основе XML, которая 1) Расширяемость: простота остается одной из основных целей SOAP в SOAP. SOAP определяет инфраструктуру связи, которая позволяет использовать такие функции, как безопасность, маршрутизация и               надежность будет добавлена ​​позже как многоуровневые расширения

2) Inter operable: SOAP может использоваться по любому транспортному протоколу, такому как TCP, HTTP, SMTP. Сегодня SOAP предоставляет явное связывание для HTTP.

3) Независимо: SOAP допускает любую модель программирования и не привязан к удаленному вызову процедуры (RPC). SOAP определяет модель для обработки индивидуальных односторонних сообщений.                           SOAP также позволяет использовать любое количество шаблонов обмена сообщениями (MEP). Узнайте больше о SOAP