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

Как написать эффективные веб-сервисы в java

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

4b9b3361

Ответ 1

Это действительно немного джунглей для понимания веб-сервисов. Страница wikipedia достойна, но по-прежнему не хватает некоторых элементов.

Я отметил этот ответ как вики сообщества, поэтому не стесняйтесь обновлять его или исправлять. Это только основа.

Раздутый термин:

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

Стиль реализации и дизайна:

  • SOAP-based. SOAP по-прежнему является стандартом де-факто для веб-сервисов. SOAP - это протокол поверх HTTP, который описывает обмен сообщениями и исключение. SOAP выросла из чего-то очень сложного с помощью всех WS- * стандартов, которые были добавлены позже. Наиболее важными являются WS-Policy, WS-Security, WS-Addressing, WS-Transaction. Еще одна важная спецификация - MTOM для большого сообщения.
  • RESTful. Термин RESTful относится к тому факту, что служба является безстоящей и вся соответствующая информация передается как параметр. Кроме того, вместо использования протокола, такого как SOAP, используются простые HTTP-глаголы, например. Get, Put, Delete, Update.
  • Без гражданства. WS обычно не имеют состояния. Обработанный бизнес иногда полагается на так называемые корреляционные идентификаторы (с WS-Addressing), которые используются для одновременного согласования запросов и ответов; это та же идея, что и сохранение идентификатора сеанса в cookie, потому что HTTP не имеет состояния.
  • Stateful. Есть несколько предложений о наличии WS в состоянии ожидания, но я мало знаю об этом.

Реализация и технологические стеки:

  • Servlet. Самый низкоуровневый способ реализации WS: вы в основном разбираете запрос и каждый раз набираете ответ HTTP.
  • EJB. С EJB3 EJB можно легко просматривать в веб-сервисе. Конечно, нужен контейнер EJB.
  • Apache Axis - используется для того, чтобы стать популярным стеком технологий, который теперь сокращается.
  • Apache CXF. Еще один популярный выбор.
  • JBossWS - Еще один выбор популярности.
  • JAX-WS - официальный веб-сервисный стек от Sun, очень хороший. До сих пор я знаю, что заменяет JAX-RPC, который был просто переименован JAX-WS.

Понятия, связанные с термином и жаргон:

  • WSDL. Определяет контракт/интерфейс веб-службы в случае WS-WS.
  • Contract-first. Относится к тому факту, что технология способна поддерживать любой WSDL, предоставляемый заранее. Напротив технологии внедрения, которая будет генерировать WSDL на основе реализации веб-службы, в этом случае WSDL не всегда может быть настроен по мере необходимости
  • Профиль. Чтобы упростить этот беспорядок, они представили профили, которые представляют собой группы связанных спецификаций/возможностей, которые необходимо поддерживать для взаимодействия. Основной из них - базовый профиль WS-I.
  • UDDI и обнаружение. Похоже, некоторые люди думали, что веб-сервис будет опубликован в публичном реестре, чтобы его можно было обнаружить потенциальным потребителем. Я не думаю, что это видение получило большой импульс.