Quelle est la différence entre JAX-RS et JAX-WS?

93

Après avoir lu quelques articles sur JAX-RS et JAX-WS, j'avais quelques questions que je souhaite confirmer?

  1. JAX-RS peut-il faire des requêtes asynchrones comme JAX-WS?
  2. JAX-RS peut-il accéder à un service Web qui ne s'exécute pas sur la plate-forme Java, et vice versa?
  3. Que signifie «REST est particulièrement utile pour les appareils à profil limité, tels que les PDA et les téléphones portables»?
  4. Que signifie «JAX-RS ne nécessite pas de messages XML ou de définitions d'API de service WSDL?
pmark019
la source

Réponses:

78

JAX-RS peut-il faire des requêtes asynchrones comme JAX-WS?

1) Je ne sais pas si l'API JAX-RS inclut un mécanisme spécifique pour les requêtes asynchrones, mais cette réponse pourrait encore changer en fonction de l'implémentation client que vous utilisez.

JAX-RS peut-il accéder à un service Web qui ne s'exécute pas sur la plate-forme Java, et vice versa?

2) Je ne vois aucune raison pour laquelle cela ne serait pas possible.

Que signifie «REST est particulièrement utile pour les appareils à profil limité, tels que les PDA et les téléphones portables»?

3) Les architectures basées sur REST utilisent généralement un format de données léger, comme JSON, pour envoyer des données dans les deux sens. Cela contraste avec JAX-WS qui utilise XML. Je ne vois pas XML en lui-même si beaucoup plus lourd que JSON (ce que certaines personnes peuvent argumenter), mais avec JAX-WS, c'est la quantité de XML utilisée qui finit par faire de REST avec JSON l'option la plus légère.

Que signifie «JAX-RS ne nécessite pas de messages XML ou de définitions d'API de service WSDL?

4) Comme indiqué en 3, les architectures REST utilisent souvent JSON pour envoyer et recevoir des données. JAX-WS utilise XML. Ce n'est pas que JSON soit tellement plus petit que XML en lui-même. C'est principalement que la spécification JAX-WS inclut beaucoup de frais généraux dans la façon dont elle communique.

En ce qui concerne les définitions WSDL et API, REST utilisera plus fréquemment la structure URI et les commandes HTTP pour définir l'API plutôt que les types de message, comme cela se fait dans JAX-WS. Cela signifie que vous n'avez pas besoin de publier un document WSDL pour que les autres utilisateurs de votre service puissent savoir comment parler à votre service. Avec REST, vous devrez toujours fournir de la documentation aux autres utilisateurs sur l'organisation du service REST et sur les données et les commandes HTTP à envoyer.

Nick Roth
la source
Merci pour cette réponse très utile. Y a-t-il d'autres choses qui différencieraient JAX-WS de JAX-RS que vous connaissez?
pmark019
92

Un autre point important

JAX-WS représente SOAP

JAX-RS représente REST

Comment choisir entre l'implémentation des services Web JAX-RS et JAX-WS?

user2849471
la source
29
En fait, JAX-WS représente à la fois des services Web basés sur RESTful et SOAP. Une façon d'y penser est que JAX-RS se spécialise dans RESTful, tandis que JAX-WS vous permet de choisir entre l'un ou l'autre, tout en étant (dans certains cas) plus compliqué à configurer.
MattC
Merci pour une explication simple.
PeerNet
2
" JAX-WS représente à la fois des services Web basés sur RESTful et SOAP " - ce n'est pas vrai, pouvez-vous s'il vous plaît mettre une référence pour valider votre revendication, JAX-WS peut transporter SOAP sur HTTP et XML sur HTTP, mais cela rend JAX-WS Reposant. Être RESTful est un concept totalement différent.
hagrawal
43

JAX-WS - est l'API Java pour les services Web basés sur XML - un moyen standard de développer des services Web en notation SOAP (Simple Object Access Protocol).

L'appel des services Web s'effectue via des appels de procédure à distance. Pour l'échange d'informations entre le client et le Web Service, on utilise le protocole SOAP. Échange de messages entre le client et le serveur via des messages SOAP basés sur XML .

Les clients du service Web JAX-WS ont besoin d'un fichier WSDL pour générer un code exécutable que les clients peuvent utiliser pour appeler le service Web.

JAX-RS - API Java pour les services Web RESTful. Les services Web RESTful sont représentés comme des ressources et peuvent être identifiés par des identificateurs de ressources uniformes ( URI ). Dans ce cas, l'appel de procédure à distance est représenté par une requête HTTP et les données nécessaires sont transmises en tant que paramètres de la requête. Services Web RESTful - plus flexibles, peuvent utiliser plusieurs types MIME différents. Généralement utilisé pour l'échange de données XML ou l'échange de données JSON (JavaScript Object Notation) ...


la source
Explication courte et nette !! Excellent.
Saurabh Rai
0

J'ai travaillé sur Apachi Axis1.1 et Axis2.0 et JAX-WS mais je suggérerais que vous devez JAX-WS car il vous permet de créer wsdl dans n'importe quel format, je faisais l'opération comme GetInquiry () dans Apache Axis2, ce n'est pas le cas permettez-moi de démarrer le nom de l'opération en majuscules, donc je ne le trouve pas bon, je vous suggère donc d'utiliser JAX-WS

Waseem Saeed
la source
0

JAX-RS peut-il faire des requêtes asynchrones comme JAX-WS?

Oui, il peut sûrement utiliser @Async

JAX-RS peut-il accéder à un service Web qui ne s'exécute pas sur la plate-forme Java, et vice versa?

Oui, ça peut faire

Que signifie «REST est particulièrement utile pour les appareils à profil limité, tels que les PDA et les téléphones portables»?

Il est principalement utilisé pour les API publiques, cela dépend de l'approche que vous souhaitez utiliser.

Que signifie «JAX-RS ne nécessite pas de messages XML ou de définitions d'API de service WSDL?

Il a ses propres standards WADL (Web Application Development Language), il a une requête http par laquelle vous pouvez accéder aux ressources, ils sont tous créés par un état d'esprit différent, au cas où dans Jax-Rs vous devez penser à exposer des ressources

Urvil Joshi
la source