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

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

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

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

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

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

Ответ 1

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

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

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

В то время как SOAP - это способ, когда:

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

Ответ 2

Q1) Вот несколько вещей для чтения или google:

Основные различия между веб-службами 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

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

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

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

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

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

Ответ 3

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

SOAP WS нейтрален транспортным протоколом. Поддерживает несколько протоколов, таких как HTTP (S), Messaging, TCP, UDP SMTP и т.д. REST - это специфический транспортный протокол. Поддерживает только протоколы HTTP или HTTPS.

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

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

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

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

Ответ 4

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