Хотя это может выглядеть как дубликат Java Web Services, я хотел бы знать, с чего начать и продолжать. В прошлом я так много инвестировал времени, чтобы найти, с чего начать, но я не смог. Есть так много жаргонов и хаоса (по крайней мере для меня!), Читая страницы о веб-сервисах. Существует так много терминов, как JAX-RPC, JAX-WS, Axis, Rest, Servlet as WebService, EJB's
, как веб-служба и другие термины, которые я не знаю. Может ли эта группа пользователей консолидироваться и дать высокоуровневый обзор Java Web Services, который легко понять и следовать? Я ценю вашу доброту и благодарность за вашу помощь.
Как написать эффективные веб-сервисы в java
Ответ 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 и обнаружение. Похоже, некоторые люди думали, что веб-сервис будет опубликован в публичном реестре, чтобы его можно было обнаружить потенциальным потребителем. Я не думаю, что это видение получило большой импульс.
Ответ 2
Лучшее объяснение, которое я знаю для веб-сервисов "первый контракт", Spring веб-сервисный модуль.