Это действительно немного джунглей для понимания веб-сервисов. Страница wikipedia приличная, но в ней все еще отсутствуют некоторые элементы.
Я пометил этот ответ как вики сообщества, поэтому не стесняйтесь обновлять его или исправлять. Это только основа.
раздутый термин:
Во-первых, термин веб-сервис используется для обозначения многих вещей. Хотя многие люди используют его для обозначения веб-службы на основе SOAP, этот термин можно использовать для обозначения любой службы, предоставляемой через веб-интерфейс; это источник путаницы.
Реализация и стиль оформления:
- На основе SOAP - SOAP по-прежнему является стандартом де-факто для веб-служб. SOAP - это протокол поверх HTTP, который описывает обмен сообщениями и исключения. SOAP вырос из чего-то простого в нечто очень сложное со всеми WS- * стандартами , которые были добавлены позже. Наиболее важными из них являются: WS-Policy, WS-Security, WS-Addressing, WS-Transaction. Другой важной спецификацией является MTOM для большого сообщения.
- RESTful - Термин RESTful относится к тому факту, что служба не имеет состояния и вся соответствующая информация передается в качестве параметра. Кроме того, вместо использования протокола, такого как SOAP, используются простые HTTP глаголы , например,
Get
, Put
, Delete
, Update
.
- Без гражданства - WS обычно без гражданства. Обрабатываемые бизнесы иногда полагаются на так называемые корреляционные идентификаторы (с WS-адресацией), которые используются для сопоставления запросов и ответов вместе; это та же идея, что и при сохранении идентификатора сеанса в файле cookie, поскольку HTTP не имеет состояния.
- С состоянием - Есть предложение предложить WS с состоянием, но я не знаю много об этом.
Внедрение и технология стеков:
- Сервлет - Самый низкоуровневый способ реализации WS: вы в основном разбираете запрос и выплевываете ответ HTTP самостоятельно.
- EJB - Начиная с EJB3, EJB можно очень легко представить как веб-сервис. Конечно же, нужен контейнер EJB.
- Apache Axis - Раньше это был популярный технологический стек, который сейчас сокращается.
- Apache CXF - еще один популярный выбор.
- JBossWS - Еще один популярный выбор.
- JAX-WS - Официальный стек веб-сервисов от Sun, очень хорошо. Насколько я знаю, этот заменяет JAX-RPC, который был просто переименован в JAX-WS.
Связанные понятия и жаргон:
- WSDL - Определяет контракт / интерфейс веб-службы в случае WS на основе SOAP.
- Contract-first - указывает на то, что технология способна поддерживать любой WSDL, предоставляемый заранее. В отличие от технологии реализации, которая будет генерировать WSDL на основе реализации веб-службы, в этом случае WSDL не всегда можно настроить по необходимости
- Профиль - Чтобы упростить этот беспорядок, они представили профили, которые представляют собой группы связанных спецификаций / возможностей, которые необходимо поддерживать для обеспечения взаимодействия. Основным является базовый профиль WS-I.
- UDDI и обнаружение - Кажется, что некоторые люди думали, что веб-сервис будет опубликован в публичном реестре, чтобы его мог обнаружить потенциальный потребитель. Я не думаю, что это видение набрало обороты.