Как написать эффективные веб-сервисы в Java - PullRequest
18 голосов
/ 11 мая 2010

Хотя это может выглядеть как дубликат Java Web Services , я хотел бы знать, с чего начать и продолжить. В прошлом я потратил так много времени, чтобы найти, с чего начать, но Я не смог. Существует так много жаргонов и хаоса (по крайней мере, для меня!) При чтении страниц о веб-сервисах. Есть так много терминов, как JAX-RPC, JAX-WS, Axis, Rest, Servlet as WebService, EJB's, как веб-сервис и другие термины, которые я не знаю. Может ли эта группа пользователей объединить и дать общий обзор веб-сервисов Java, который прост для понимания и отслеживания? Я ценю вашу доброту и спасибо за вашу помощь.

Ответы [ 2 ]

34 голосов
/ 11 мая 2010

Это действительно немного джунглей для понимания веб-сервисов. Страница 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 и обнаружение - Кажется, что некоторые люди думали, что веб-сервис будет опубликован в публичном реестре, чтобы его мог обнаружить потенциальный потребитель. Я не думаю, что это видение набрало обороты.
0 голосов
/ 11 мая 2010

Лучшее объяснение, которое я знаю для веб-сервисов "сначала контракт", это Модуль веб-сервиса Spring .

...