web-dev-qa-db-fra.com

JAX-WS vs JAX-RS pour un service Web RESTful

Salut, j'ai travaillé avec JAX-WS pour les services Web basés sur SOAP. Maintenant, je veux utiliser REST parce que REST ont des avantages) sur SOAP comme j'ai étudié à propos de ici .

Mais à partir de différents articles, je savais que nous pouvons également créer des services Web RESTful à partir de JAX-WS. Mais la plupart des gens disent que nous devrions utiliser JAX-RS au lieu de JAX-WS.

Ma question est de savoir quelle est la différence entre le service Web JAX-WS RESTful et JAX-RS (maillot). Quels sont les avantages de JAX-RS par rapport à JAX-WS? Et pourquoi devrions-nous utiliser JAX-RS pour les services Web RESTful?

Merci d'avance.

25
Abhendra Singh

TL; DR

JAX-WS est destiné aux services Web basés sur XML tels que SOAP. JAX-RS n'a pas la même restriction.

JAX-WS est généralement orienté vers les interactions de serveur à serveur avec des contrats bien définis (WSDL) et généralement lorsque le service et le côté client appartiennent à des groupes distincts. Il est très gourmand en ressources, il n'est donc pas possible pour les interactions client-serveur où la capacité du réseau ou du périphérique client n'est pas optimale.

JAX-RS est orienté vers les interactions client-serveur, bien que le serveur à serveur soit correct. Comme il a peu d'obligations de service, il peut être réglé en fonction des besoins du client.

Plus d'informations

L'API JAX-RS ne fournit que des approches utilisant le code en premier, tandis que JAX-WS permet à la fois le code en premier (généralement déconseillé) et le contrat en premier en utilisant des fichiers WSDL (plus couramment recommandés).

JAX-RS 2.0 présente l'API client qui est un wrapper intelligent pour HttpUrlConnection qui a beaucoup plus de capacités de mappage, JAX-WS est également un wrapper, mais les données qu'il traite dans les implémentations de référence ne sont que XML.

JAX-RS a l'avantage de créer des API plus simples à créer et à digérer des messages pour différents navigateurs et appareils mobiles, à savoir la structure JSON. Il n'introduit pas la notion d'enveloppe et utilise HTTP pour cela. Il n'introduit pas de cryptographie ou de sécurité, il utilise HTTPS pour cela.

JAX-WS, bien qu'il s'exécute sur HTTPS pour la cryptographie, fournit des ajouts pour la sécurité à l'aide de WS-SecurityPolicy, etc. En outre, les contrats sont fermement établis à l'aide de WSDL et peuvent être vérifiés en dehors de l'application à l'aide d'ESB tels que DataPower.

Alors que choisir

JAX-WS est généralement orienté vers les interactions de serveur à serveur avec des contrats bien définis (WSDL) et généralement lorsque le service et le côté client appartiennent à des groupes distincts. Il est très gourmand en ressources, il n'est donc pas possible pour les interactions client-serveur où la capacité du réseau ou du périphérique client n'est pas optimale.

JAX-RS est orienté vers les interactions client-serveur, bien que le serveur à serveur soit correct. La seule obligation contractuelle entre un client et un serveur est le message et les en-têtes de demande. Comme il a peu d'obligations de service, il peut être réglé en fonction des besoins du client.

Cependant, l'utilisation des API de service RESTful revient à faire de la méta-programmation comme Ruby et Python qui retarde les problèmes à l'exécution car il n'y a pas de schéma défini convenu et techniquement imposé par les deux côtés. En tant que tel, je ne recommande pas les services RESTful partout, mais je le recommanderais si j'avais le contrôle des deux côtés, ce qui se produit normalement lorsque vous créez une application Web qui utilise du HTML/CSS/JS statique et parle avec un serveur RESTful pour les données.

35
Archimedes Trajano