it-roy-ru.com

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

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

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

Может ли 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-команды нужно отправлять.

72
Nick Roth

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

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

JAX-RS представляет ОТДЫХ

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

87
user2849471

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

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

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

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

40
Aleksey Bykov

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

0
Waseem Saeed

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

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

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

Да, это может сделать

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

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

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

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

0
Urvil Joshi