В чем разница между JAX-RS и JAX-WS?
Прочитав несколько статей о JAX-RS и JAX-WS, у меня возникло несколько вопросов, которые я хочу подтвердить?
- Может ли JAX-RS выполнять асинхронный запрос, как JAX-WS?
- Может ли JAX-RS получить доступ к веб-службе, которая не работает на платформе Java, и наоборот?
- Что означает "REST особенно полезен для устройств с ограниченным профилем, таких как КПК и мобильные телефоны"?
- Что значит "JAX-RS не требует XML-сообщений или определений сервис-API WSDL?
5 ответов
Может ли 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 представляет SOAP
JAX-RS представляет ОТДЫХ
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)...
Может ли JAX-RS выполнять асинхронный запрос, как JAX-WS?
Да, он может использовать @Async
Может ли JAX-RS получить доступ к веб-службе, которая не работает на платформе Java, и наоборот?
Да, это может сделать
Что означает "REST особенно полезен для устройств с ограниченным профилем, таких как КПК и мобильные телефоны"?
Это в основном используется для публичного API, это зависит от того, какой подход вы хотите использовать.
Что значит "JAX-RS не требует XML-сообщений или определений сервис-API WSDL?
У него есть свои собственные стандарты WADL(язык разработки веб-приложений), у него есть http-запрос, с помощью которого вы можете получить доступ к ресурсам, которые они вообще создают другим образом мышления. В случае с Jax-R вы должны подумать о раскрытии ресурсов
Я работал над Apachi Axis1.1 и Axis2.0 и JAX-WS, но я хотел бы предложить вам JAX-WS, потому что это позволяет вам делать wsdl в любом формате, я выполнял операцию как GetInquiry() в Apache Axis2, это не так позвольте мне начать имя операции в верхнем регистре, так что я нахожу это не очень хорошим, поэтому я бы посоветовал вам использовать JAX-WS