У чому різниця між JAX-RS та JAX-WS?


94

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

  1. Чи може JAX-RS робити асинхронний запит, як JAX-WS?
  2. Чи може JAX-RS отримати доступ до веб-служби, яка не працює на платформі Java, і навпаки?
  3. Що означає "REST особливо корисний для обмежених пристроїв, таких як КПК та мобільні телефони"?
  4. Що це означає під "JAX-RS не вимагає повідомлень XML або WSDL-службових визначень API?

Відповіді:


78

Чи може JAX-RS робити асинхронний запит, як JAX-WS?

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

Чи може JAX-RS отримати доступ до веб-служби, яка не працює на платформі Java, і навпаки?

2) Я не можу придумати жодної причини, через яку це не змогло б.

Що означає "REST особливо корисний для обмежених пристроїв, таких як КПК та мобільні телефони"?

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

Що це означає під "JAX-RS не вимагає повідомлень XML або WSDL-службових визначень API?

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?


29
Насправді 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 - це зовсім інша концепція.
hagrawal

43

JAX-WS - це Java API для веб-служб на основі XML - стандартний спосіб розробки веб-служб у нотації SOAP (Простий протокол доступу до об'єктів).

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

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

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


Коротке і чітке пояснення !! Відмінно.
Saurabh Rai

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 особливо корисний для обмежених пристроїв, таких як КПК та мобільні телефони"?

В основному це використання для публічних apis, це залежить від того, який підхід ви хочете використовувати.

Що це означає під "JAX-RS не вимагає повідомлень XML або WSDL-службових визначень API?

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.