В чем разница между JAX-RS и JAX-WS?

95

После прочтения нескольких статей о JAX-RS и JAX-WS у меня возникло несколько вопросов, которые я хочу подтвердить?

  1. Может ли JAX-RS выполнять асинхронный запрос, как JAX-WS?
  2. Может ли JAX-RS получить доступ к веб-службе, которая не запущена на платформе Java, и наоборот?
  3. Что означает «REST особенно полезен для устройств с ограниченным профилем, таких как КПК и мобильные телефоны»?
  4. Что означает выражение «JAX-RS не требует сообщений XML или определений API служб WSDL?»
pmark019
источник

Ответы:

79

Может ли JAX-RS выполнять асинхронный запрос, как JAX-WS?

1) Я не знаю, включает ли JAX-RS API определенный механизм для асинхронных запросов, но этот ответ все равно может измениться в зависимости от используемой вами клиентской реализации.

Может ли JAX-RS получить доступ к веб-службе, которая не запущена на платформе Java, и наоборот?

2) Я не могу придумать ни одной причины, по которой это было бы невозможно.

Что означает «REST особенно полезен для устройств с ограниченным профилем, таких как КПК и мобильные телефоны»?

3) Архитектуры на основе REST обычно используют облегченный формат данных, например JSON, для отправки данных туда и обратно. Это отличается от JAX-WS, который использует XML. Я не вижу, чтобы XML сам по себе был настолько тяжелее, чем JSON (что некоторые могут возразить), но с JAX-WS именно то, сколько XML используется, в конечном итоге делает REST с JSON более легким вариантом.

Что означает выражение «JAX-RS не требует сообщений XML или определений API служб WSDL?»

4) Как указано в 3, архитектуры REST часто используют JSON для отправки и получения данных. JAX-WS использует XML. Дело не в том, что JSON сам по себе значительно меньше XML. В основном спецификация JAX-WS включает много накладных расходов на то, как он взаимодействует.

Что касается определений WSDL и API, REST будет чаще использовать структуру URI и команды HTTP для определения API, а не типы сообщений, как это сделано в JAX-WS. Это означает, что вам не нужно публиковать документ WSDL, чтобы другие пользователи вашего сервиса знали, как общаться с вашим сервисом. При использовании REST вам все равно потребуется предоставить некоторую документацию другим пользователям о том, как организована служба REST и какие данные и HTTP-команды необходимо отправить.

Ник Рот
источник
Спасибо за очень полезный ответ. Есть ли еще что-нибудь, что могло бы отличить JAX-WS от JAX-RS, о ​​которых вы знаете?
pmark019
92

Еще один важный момент

JAX-WS представляет SOAP

JAX-RS представляет REST

Как выбрать между реализацией веб-сервисов JAX-RS и JAX-WS?

user2849471
источник
30
Фактически, JAX-WS представляет собой веб-службы на основе как RESTful, так и SOAP. Один из способов подумать об этом заключается в том, что JAX-RS специализируется на RESTful, тогда как JAX-WS позволяет вам более гибко выбирать между ними, и в то же время (в некоторых случаях) более сложен в настройке.
MattC
Спасибо за простое объяснение.
PeerNet
2
« JAX-WS представляет собой веб-службы на основе как RESTful, так и SOAP » - это неправда, не могли бы вы указать ссылку для подтверждения вашего утверждения, JAX-WS может передавать SOAP через HTTP, а также XML через HTTP, но это делает JAX-WS RESTful. Быть RESTful - это совершенно другое понятие.
hagrawal
45

JAX-WS - это Java API для веб-служб на основе XML - стандартный способ разработки веб-служб в нотации SOAP (Simple Object Access Protocol).

Вызов веб-служб осуществляется посредством удаленных вызовов процедур. Для обмена информацией между клиентом и веб-сервисом используется протокол SOAP. Обмен сообщениями между клиентом и сервером осуществляется через сообщения SOAP на основе XML .

Клиентам веб-службы JAX-WS требуется файл WSDL для генерации исполняемого кода, который клиенты могут использовать для вызова веб-службы.

JAX-RS - Java API для веб-служб RESTful. Веб-службы RESTful представлены как ресурсы и могут быть идентифицированы с помощью универсальных идентификаторов ресурсов ( URI ). Вызов удаленной процедуры в данном случае представляет собой HTTP- запрос, а необходимые данные передаются в качестве параметров запроса. Веб-службы RESTful - более гибкие, могут использовать несколько разных MIME- типов. Обычно используется для обмена данными XML или обмена данными JSON (JavaScript Object Notation) ...


источник
1
Краткое и четкое объяснение !! Превосходно.
Саураб Рай
0

Я работал над Apachi Axis1.1 и Axis2.0 и JAX-WS, но я бы посоветовал вам использовать JAX-WS, потому что он позволяет вам создавать wsdl в любом формате, я выполнял операцию как GetInquiry () в Apache Axis2, этого не произошло позвольте мне начать имя операции в верхнем регистре, поэтому я считаю, что это не очень хорошо, поэтому я предлагаю вам использовать JAX-WS

Васим Саид
источник
0

Может ли JAX-RS выполнять асинхронный запрос, как JAX-WS?

Да, он действительно может использовать @Async

Может ли JAX-RS получить доступ к веб-службе, которая не запущена на платформе Java, и наоборот?

Да, это возможно

Что означает «REST особенно полезен для устройств с ограниченным профилем, таких как КПК и мобильные телефоны»?

В основном он используется для общедоступных API, это зависит от того, какой подход вы хотите использовать.

Что означает выражение «JAX-RS не требует сообщений XML или определений API служб WSDL?»

У него есть собственные стандарты WADL (язык разработки веб-приложений), у него есть http-запрос, с помощью которого вы можете получить доступ к ресурсам, которые в целом созданы с помощью другого мышления. В случае, если в Jax-R вам нужно подумать о раскрытии ресурсов

Урвиль Джоши
источник