Мне нужно изучить веб-службы на Java. Какие в нем разные типы? [закрыто]

91

Недавно я решил начать изучать веб-службы Java, и когда я начал искать учебник по веб-службам Java в Google, я обнаружил, что существует множество типов веб-служб на основе XML, SOAP, а также веб-служб RESTful.

Кроме того, я обнаружил, что существует спецификация JAX-WS для веб-сервисов на основе xml и спецификация JAX-RS для создания веб-сервисов RESTful.

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

Q2) Кроме того, я хочу подробно изучить создание различных типов веб-сервисов на java. Есть ли какой-либо учебник или ресурсы, которые могут дать представление о каждом виде веб-сервиса и сравнить их.

Q3), исходя из того, какие сценарии и условия мне следует решить, что я хочу создать веб-службу на основе XML, а не службу SOAP, или мне следует использовать службу RESTful.

Раджеш Пантула
источник

Ответы:

142
  1. Веб-службы SOAP основаны на стандартах и ​​поддерживаются почти каждой программной платформой: они сильно зависят от XML и поддерживают транзакции, безопасность, асинхронные сообщения и многие другие проблемы. Это довольно большой и сложный стандарт, но он охватывает практически все ситуации обмена сообщениями. С другой стороны, службы RESTful полагаются на протокол HTTP и глаголы (GET, POST, PUT, DELETE) для обмена сообщениями в любом формате, предпочтительно JSON и XML. Это довольно простой и элегантный архитектурный подход.
  2. Как и в каждой теме в Java World, существует несколько библиотек для создания / использования веб-служб. На стороне SOAP у вас есть стандарт JAX-WS и Apache Axis , а в REST вы можете использовать Restlets или Spring REST Facilities среди других библиотек.

В вопросе 3 в этой статье говорится, что службы RESTful подходят для следующих сценариев:

  • Если у вас ограниченная пропускная способность
  • Если ваши операции не имеют состояния: информация не сохраняется от одного вызова к следующему, и каждый запрос обрабатывается независимо.
  • Если вашим клиентам требуется кеширование.

Хотя протокол SOAP подходит, если:

  • Если вам требуется асинхронная обработка
  • Если вам нужен официальный контракт / интерфейсы
  • В вашем сервисе операции с отслеживанием состояния: например, вы храните информацию / данные по запросу и используете эти сохраненные данные в следующем.
Карлос Гавидиа-Кальдерон
источник
11
+1 за такую ​​ясность и изложение сценариев :)
Раджеш Пантула
Четкий и ясный ответ.
Кришна
+1 за хороший ответ ... !!!
Шайлеш Саксена
Хороший ответ. Можете ли вы сказать мне, что такое операции без состояния / с сохранением состояния?
Keerthivasan
Я отредактировал ответ, включая эти концепции.
Карлос Гавидиа-Кальдерон
13

Q1) Вот пара вещей, которые стоит почитать или погуглить:

Основные различия между веб-службами SOAP и RESTful в java http://www.ajaxonomy.com/2008/xml/web-services-part-1-soap-vs-rest

Вам решать, чему вы хотите научиться в первую очередь. Я рекомендую вам взглянуть на фреймворк CXF . Вы можете построить и отдых, и мыло.

Q2) Вот несколько хороших туториалов по мылу (я добавил их в закладки):

http://united-coders.com/phillip-steffensen/developing-a-simple-soap-webservice-using-spring-301-and-apache-cxf-226

http://www.benmccann.com/blog/web-services-tutorial-with-apache-cxf/

http://www.mastertheboss.com/web-interfaces/337-apache-cxf-interceptors.html

Лучший способ учиться - это не просто читать руководства. Но сначала вы должны пройти через учебные пособия, чтобы получить базовую идею, чтобы увидеть, можете ли вы что-то производить (или нет) и это мотивирует вас.

ТАК - отличный способ изучить конкретную технологию (или больше), люди задают много странных вопросов, и есть еще более странные ответы. Но в целом вы узнаете о способах решения проблем другими способами. Может быть, вы не знали об этом, может быть, вы не могли придумать это самостоятельно.

Подпишитесь на пару тегов, которые вам интересны и будьте настойчивы, задавайте хорошие вопросы и старайтесь давать хорошие ответы, и я гарантирую вам, что вы научитесь этому со временем (если вы настойчивы).

Q3) Вам придется ответить на этот вопрос самостоятельно. Сначала, решив, что вы собираетесь построить, в конце концов, вам нужно будет придумать какой-нибудь мини-проект или что-то в этом роде и взять его оттуда.

Если вы решите использовать CXF в качестве инфраструктуры для создания служб REST / SOAP, я рекомендую вам поискать эту книгу Apache CXF Web Service Development. Он фантастический, его не сложно читать, и он не слишком большой (победа-победа).

муравей
источник
7

SOAP WS поддерживает как удаленный вызов процедур (т. Е. RPC), так и стили интеграции ориентированного на сообщения промежуточного программного обеспечения (MOM). Restful Web Service поддерживает только стиль интеграции RPC.

SOAP WS не зависит от транспортного протокола. Поддерживает несколько протоколов, таких как HTTP (S), обмен сообщениями, TCP, UDP, SMTP и т. Д. REST зависит от транспортного протокола. Поддерживает только протоколы HTTP или HTTPS.

SOAP WS допускает только формат данных XML. Вы определяете операции, которые туннелируются через POST. Основное внимание уделяется доступу к именованным операциям и представлению логики приложения как службы. REST допускает использование нескольких форматов данных, таких как XML, данные JSON, текст, HTML и т. Д. Можно использовать любой браузер, поскольку подход REST использует стандартные веб-операции GET, PUT, POST и DELETE. Основное внимание уделяется доступу к названным ресурсам и представлению данных как службы. REST поддерживает AJAX. Он может использовать объект XMLHttpRequest. Подходит для операций CRUD без сохранения состояния (создание, чтение, обновление и удаление). GET - представить () POST - acceptRepresention () PUT - storeRepresention () DELETE - removeRepresention ()

Чтения на основе SOAP нельзя кэшировать. Чтения на основе REST можно кэшировать. Лучше работает и масштабируется. SOAP WS поддерживает как безопасность SSL, так и WS-безопасность, что добавляет некоторые функции безопасности предприятия, такие как поддержание безопасности вплоть до того момента, когда это необходимо, поддержание идентичности через посредников, а не только протокол SSL «точка-точка», защита различных частей сообщения с помощью различные алгоритмы безопасности и т. д. REST поддерживает только двухточечную безопасность SSL. SSL шифрует все сообщение, независимо от того, является оно конфиденциальным или нет. SOAP имеет комплексную поддержку как для управления транзакциями на основе ACID для краткосрочных транзакций, так и для управления транзакциями на основе компенсации для длительных транзакций. Он также поддерживает двухфазную фиксацию через распределенные ресурсы. REST поддерживает транзакции,

SOAP имеет встроенную логику успешного выполнения или повторной попытки и обеспечивает сквозную надежность даже через посредников SOAP. REST не имеет стандартной системы обмена сообщениями и ожидает, что клиенты, вызывающие службу, будут устранять сбои связи путем повторной попытки.

источник http://java-success.blogspot.in/2012/02/java-web-services-interview-questions.html

мурали
источник
> Restful Web Service поддерживает только стиль интеграции RPC. REST - это не RPC, RPC говорит: «Определите некоторые методы, которые что-то делают», тогда как REST говорит: «Определите некоторые ресурсы, и у них будут эти методы». peej.co.uk/articles/rest.html
urmalp
0

Если ваше приложение часто использует протокол http, тогда лучше всего подходит REST из-за его небольшого веса, и знание того, что ваше приложение использует только протокол http, выбор SOAP не так хорош, потому что он тяжелый. Лучше принимать решение о выборе веб-службы на основе используемых нами протоколов. в наших приложениях.

чувствовать себя хорошо и программировать
источник