Что такое WSDL, SOAP и REST?

153

Что такое WSDL ? Как это связано с SOAP ? Где REST вписывается во все это?

javaguy
источник
2
Какие "примеры" вы ищете? Как я уже сказал, это не простая вещь, которую вы можете получить «простым» примером.
Джон Сондерс

Ответы:

180

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

SOAP - это протокол на основе XML, который позволяет обмениваться информацией по определенному протоколу (например, HTTP или SMTP) между приложениями. Он обозначает Simple Object Access Protocol и использует XML для своего формата обмена сообщениями для передачи информации.

REST - это архитектурный стиль сетевых систем, означающий передачу представительского состояния. Это не стандарт, но он использует такие стандарты, как HTTP, URL, XML и т. Д.

keith_c
источник
4
Я имел в виду SMTP или HTTP в качестве примеров протоколов, над которыми можно использовать SOAP. Я не хотел, чтобы это означало, что HTTP - единственный протокол, который можно использовать (просто использовал его в качестве примера).
keith_c
7
Передача репрезентативного состояния (REST) ​​- это архитектурный стиль, который задает ограничения, такие как унифицированный интерфейс, которые при применении к веб-службе вызывают желательные свойства, такие как производительность, масштабируемость и модифицируемость, которые позволяют службам работать лучше всего в Интернете. В стиле REST данные и функциональные возможности считаются ресурсами и доступны с использованием унифицированных идентификаторов ресурсов (URI). На ресурсы воздействуют с помощью набора простых, четко определенных операций. он следует архитектуре клиент / сервер и разработан для использования протокола связи без сохранения состояния, обычно HTTP.
kingAm
4
Разве «D» в WSDL не означает «Описание» вместо «Определение»?
Sparkzz
11
"A WSDL is an XML document that describes a web service. It actually stands for Web Services Definition Language." Это действительно не объясняет, что это такое ...
Оджонугва Джуд Очалифу
2
@Sparkzz согласно википедии:The current version of WSDL is WSDL 2.0. The meaning of the acronym has changed from version 1.1 where the "D" stood for "Definition".
Бочу
106

Пример: Проще говоря, если у вас есть веб-сервис калькулятора.

WSDL: WSDL рассказывает о функциях, которые вы можете реализовать или предоставить клиенту. Например: добавить, удалить, вычесть и так далее.

SOAP: при использовании SOAP вы фактически выполняете такие действия, как doDelete (), doSubtract (), doAdd (). Так что SOAP и WSDL - это яблоки и апельсины. Мы не должны сравнивать их. Они оба имеют свои разные функции.

Почему мы используем SOAP и WSDL: для независимого от платформы обмена данными.

РЕДАКТИРОВАТЬ: В обычной повседневной жизни пример:

WSDL: Когда мы идем в ресторан, мы видим пункты меню, это WSDL.

Классы прокси: Теперь, увидев пункты меню, мы составляем наше мнение (Обдумываем, что заказывать): Итак, в основном мы создаем классы прокси на основе WSDL Document.

SOAP: Затем, когда мы на самом деле заказываем еду на основе меню: это означает, что мы используем прокси-классы для вызова методов обслуживания, которые выполняются с использованием SOAP. :)

Неуязвимый
источник
38

Каждый раз, когда кто-то упоминает SOAP / WSDL, я думаю об объектах и ​​классах, определенных в xml ...

«Вы используете SOAP точно так же, как любой другой класс PHP. Однако в этом случае этот класс существует не в файловой системе локальных приложений, а на удаленном сайте, доступ к которому осуществляется через http». ... «Если мы думаем об использовании службы SOAP как просто еще одного класса PHP, то документ WSDL представляет собой список всех доступных методов и свойств класса».

http://www.doublehops.com/2009/07/07/quick-tutorial-on-getting-started-with-soap-in-php/comment-page-1/

... и всякий раз, когда кто-то говорит о REST, я думаю о командах HTTP (методах запроса), таких как POST, GET и DELETE

angelcool.net
источник
19

SOAP -> SOAP (протокол простого доступа к объектам) - это протокол прикладного уровня, созданный для взаимодействия между компьютерами. Протокол определяет стандартные правила. Все стороны, которые используют определенный протокол, должны придерживаться правил протокола. Как и TCP, он разворачивается на транспортном уровне. Протокол SOAP будет пониматься прикладным уровнем (любое приложение, которое поддерживает SOAP - Axis2, .Net).

Сообщение WSDL -> SOAP состоит из SoapEnevelope-> SoapHeader и SoapBody. Это не определяет, какой будет формат сообщения? Какие все транспорты (HTTP, JMS) он поддерживает? без этой информации любому клиенту, который хочет использовать конкретный веб-сервис, сложно создать сообщение SOAP. Даже если они это сделают, они не будут уверены, это будет работать все время. WSDL - это спасение. WSDL (язык описания веб-служб) определяет операции, форматы сообщений и детали транспорта для сообщения SOAP.

REST -> REST (Передача состояния представления) основана на транспорте. В отличие от SOAP, который нацелен на действия, REST больше касается ресурсов. REST находит ресурсы, используя URL (пример -http: // {serverAddress} / employee / employeeNumber / 12345), и это зависит от транспортного протокола (с HTTP - GET, POST, PUT, DELETE, ...) для действий быть выполненным на ресурсах. Служба REST находит ресурс на основе URL-адреса и выполняет действие на основе глагола действия транспорта. Это скорее архитектурный стиль и условности.

Радж Каннан Айяппан
источник
16

Вы не собираетесь «просто» понимать что-то сложное.

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

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

REST вообще не связан с WSDL.

Джон Сондерс
источник
11

SOAP обозначает простой (sic) протокол доступа к объектам. Предполагалось, что это будет способ делать удаленные вызовы процедур для удаленных объектов, отправляя XML через HTTP.

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

REST использует HTTP для отправки сообщений сервисам.

SOAP - это спецификация, REST - это стиль.

duffymo
источник
2
-1: извините, но я не согласен с ассоциированием SOAP с RPC. А как насчет услуг в стиле сообщений? Кроме того, не существует стандарта, в котором говорится, что запрос, заканчивающийся на .wsdl или? Wsdl, будет генерировать WSDL.
Джон Сондерс
4
Вы говорите, что не можете сделать RPC с SOAP? Я знаю, что это может не охватывать весь стандарт, но это, безусловно, была первоначальная мотивация. Что касается того, является ли URL WSDL частью стандарта, я признаю, что вы меня там. Обычно это так, как я вижу, но я не могу цитировать в стандарте ничего, что предписывает это.
duffymo
1
Вы, возможно, путали тот факт, что SOAP был создан на основе XML-RPC, с идеей, что SOAP изначально был задуман как RPC. Тем не менее, обратите внимание, что WSDL с самого начала мог описывать сервисы в стиле документа, в дополнение к сервисам в стиле RPC. Если бы RPC были первоначальной мотивацией для SOAP и WSDL, то можно было бы ожидать, что службы в стиле документа отсутствовали бы в первоначальном стандарте.
Джон Сондерс
6

Википедия говорит: «Язык описания веб-сервисов - это язык на основе XML, который обеспечивает модель для описания веб-сервисов». Иными словами, WSDL - это веб-сервис, а javadoc - это библиотека java.

Правда, в WSDL очень приятно то, что программное обеспечение может генерировать клиент и сервер с использованием WSDL.

Майкл Берроуз
источник
4

REST является легким с точки зрения кодирования, гораздо более полезным для легких устройств, то есть для нестрогих API.

REST не зависит от формата. XML, HTML, JSON доступны все варианты.

REST предоставляет возможности для двухточечной передачи сообщений (что неудивительно, поскольку REST означает REpresentational State Transfer), где взаимодействие WSDL / SOAP представляет собой взаимодействие нескольких точек сообщения.

REST не требует нового расширения для сообщений XML, где в WSDL / SOAP это именно так.

WSDL / SOAP использует несколько транспортных протоколов, REST использует только HTTP. Поэтому WSDL / SOAP можно использовать как способ RESTful, однако простые запросы могут быть слишком сложными / тяжелыми.

Простая аналогия: REST похож на мотобоя, который доставляет еду легко и быстро. XML расширяет WSDL / SOAP, больше похож на доставку UPS, более структурированную и серьезную работу, но требует затрат.

Беди Эгилмез
источник
0

Документ WSDL описывает веб-сервис. Он определяет местоположение службы и методы службы с использованием этих основных элементов: типы данных, используемые в элементах данных веб-службы для каждой операции, описывают операции, которые могут быть выполнены, и сообщения, включенные

SOAP (Simple Object Access Protocol) - это протокол обмена сообщениями, который позволяет программам, работающим в разнородных операционных системах, обмениваться данными с использованием http и xml.

Farzaneh
источник