разъяснение понятия "веб-сервис" - PullRequest
5 голосов
/ 29 марта 2010

Я немного запутался в различных определениях и реализациях веб-сервисов, доступных в качестве реализаций. Нужны уточнения, пожалуйста.

Я использовал до сих пор:

  1. Если поставщик предоставляет мне определенный формат XML, который я могу отправить, заполняя данными для запроса, и я делаю простой HTTP POST через Интернет, передавая строку XML в качестве полезной нагрузки, это вызов веб-службы? ? Если да, есть ли конкретное имя для этого вида веб-службы? Потому что, очевидно, он не использует ничего, как Axis, WSDL или SOAP, чтобы установить это соединение.

  2. Вариант этого: если продавец дает мне XSD, я использую JAXB, чтобы сделать из него класс java и передать сериализованную версию объекта, которая в конечном итоге работает так же, как опция 1.

  3. Веб-служба RESTful: поставщик дает мне URL-адрес, например http://restfulservice/products, и я могу делать HTTP-запросы на URL-адрес, и в зависимости от того, какой HTTP-глагол я использую, вызывается соответствующее действие и ответ отправляется через провод.

Те, о которых я только что читал, \ имеют смутное представление о

  1. SOAP. Как это работает? .. Я прочитал учебник W3Schools и понимаю, что существует очень специфическая форма XML, которая стандартизирована в соответствии со стандартами W3C, которую мы используем для передачи сообщений того же типа, что и в варианте 1. Но как это работает в реальной жизни? Продавец отправляет мне что? Я генерирую классы? Могу ли я сериализовать некоторые объекты и разместить их по адресу http? Или у сгенерированных объектов есть методы подключения, которые сделают их для меня?

  2. А как насчет WSDL? Когда поставщик отправляет мне WSDL и что мне с ним делать? Я думаю, что я могу генерировать классы из этого. Если да, то что мне делать с сгенерированными классами?

  3. Когда мне нужен этот осевой кувшин для генерации классов из чего-то, что отправляет поставщик?

Как вы можете видеть, у меня есть несколько ясных и в основном смутных представлений о различных видах доступных веб-сервисов. помогло бы, если бы кто-то мог уточнить и \ или указать на более реальные ресурсы. Я немного заглянул в веб-сервисы Java в Интернете, и многочисленные четырехбуквенные аббревиатуры, которые мне бросают, вызывают у меня головокружение.

Спасибо

Ответы [ 2 ]

4 голосов
/ 29 марта 2010

Если продавец дает мне определенный формат XML, который я могу отправить заполнены данные на запрос, и я делаю простой HTTP POST через Интернет, проходящий в строка XML в качестве полезной нагрузки, это вызов веб-службы? Если так, есть ли конкретное название для него, этот вид сети сервис?

Это все еще веб-сервис, да. У него нет «официального» имени, я обычно называю его XML-over-HTTP, главным образом потому, что не могу придумать лучшего имени.

SOAP. Как это работает? .. Я читал учебник W3Schools и я понимаю, что есть очень конкретная форма XML, которая стандартизировано в соответствии с W3C стандарты, которые мы используем, чтобы пройти тот же такие сообщения, как в варианте 1

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

А как насчет WSDL? Когда продавец пришлите мне WSDL и что мне с ним делать ? Я думаю, что я могу генерировать классы из Это. Если да, то что мне делать с сгенерированные классы?

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

Скажем, например, у вас была XML-схема и у вас есть веб-сервис, как вы описали

  • Использование JAXB для генерации исходного кода Java из схемы
  • Отправка XML-документов, соответствующих этой схеме, через HTTP в веб-службу

С WSDL и SOAP вы бы немного расширили это:

  • Напишите тонкую оболочку WSDL вокруг схемы XML, формализуя доступные операции.
  • Используйте инструмент импорта WSDL для создания заглушек клиент / сервер для этого WSDL / Schema. В Java это часто включает JAXB.
  • Использование клиента / сервера SOAP для вызова веб-службы

Как видите, это по сути тот же процесс. Разница заключается в том, что SOAP / WSDL предоставляет инструментам дополнительную информацию и контекст, позволяя этим инструментам выполнять большую часть работы за вас. Это не сильно отличается, хотя.

0 голосов
/ 29 марта 2010

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

Axis - это библиотека для выполнения этого на Java (как на стороне клиента, так и на стороне сервера). Я подозреваю, что в других библиотеках есть лучшие реализации.

...