J'ai besoin d'apprendre les services Web en Java. Quels sont les différents types? [fermé]

91

Récemment, j'ai décidé de commencer à en apprendre davantage sur les services Web Java et lorsque j'ai commencé à rechercher un didacticiel sur les services Web Java dans Google, j'ai découvert qu'il existe de nombreux types de services Web basés sur XML, SOAP, également des services Web RESTful.

De plus, j'ai trouvé qu'il existe une spécification JAX-WS pour les services Web basés sur XML et une spécification JAX-RS pour la création de services Web RESTful.

Q1) Je suis confus, ce serait formidable si quelqu'un peut m'aider à comprendre la différence entre ces différents types de services Web, afin que je puisse décider lequel apprendre en premier.

Q2) De plus, je souhaite en savoir plus sur la création de différents types de services Web en java. Existe-t-il un didacticiel ou des ressources pouvant donner un aperçu de chaque type de service Web et une comparaison entre eux.

Q3) en fonction de quels scénarios et conditions dois-je décider que je souhaite créer un service Web basé sur XML plutôt qu'un service SOAP ou que je devrais utiliser le service RESTful.

Rajesh Pantula
la source
Le tutoriel Java EE 6
Paul Vargas

Réponses:

142
  1. Les services Web SOAP sont basés sur des normes et pris en charge par presque toutes les plates-formes logicielles: ils reposent fortement sur XML et prennent en charge les transactions, la sécurité, les messages asynchrones et de nombreux autres problèmes. C'est une norme assez grande et compliquée, mais qui couvre presque toutes les situations de messagerie. De l'autre côté, les services RESTful reposent sur le protocole HTTP et les verbes (GET, POST, PUT, DELETE) pour échanger des messages dans n'importe quel format, de préférence JSON et XML. C'est une approche architecturale assez simple et élégante.
  2. Comme dans chaque rubrique du monde Java, il existe plusieurs bibliothèques pour créer / consommer des services Web. Dans le côté SOAP, vous avez le standard JAX-WS et Apache Axis , et dans REST, vous pouvez utiliser Restlets ou Spring REST Facilities parmi d'autres bibliothèques.

Avec la question 3, cet article indique que les services RESTful sont appropriés dans ces scénarios:

  • Si vous avez une bande passante limitée
  • Si vos opérations sont sans état: aucune information n'est conservée d'un appel à l'autre, et chaque requête est traitée indépendamment.
  • Si vos clients nécessitent une mise en cache.

Alors que SOAP est la voie à suivre lorsque:

  • Si vous avez besoin d'un traitement asynchrone
  • Si vous avez besoin d'un contrat formel / d'interfaces
  • Dans vos opérations de service sont avec état: par exemple, vous stockez des informations / données sur une demande et utilisez ces données stockées sur la suivante.
Carlos Gavidia-Calderon
la source
11
+1 pour avoir été si clair et avoir énoncé les scénarios :)
Rajesh Pantula
Réponse claire et nette.
Krishna
+1 pour une bonne réponse ... !!!
Shailesh Saxena
Bonne réponse, pouvez-vous me dire ce que sont les opérations sans état / avec état?
Keerthivasan
J'ai édité la réponse en incluant ces concepts.
Carlos Gavidia-Calderon
13

Q1) Voici quelques éléments à lire ou à consulter sur Google:

Principales différences entre les services Web SOAP et RESTful en Java http://www.ajaxonomy.com/2008/xml/web-services-part-1-soap-vs-rest

C'est à vous que voulez-vous apprendre en premier. Je vous recommande de jeter un œil au framework CXF . Vous pouvez créer les deux services rest / soap.

Q2) Voici quelques bons tutoriels pour soap (je les ai mis en signet):

http://united-coders.com/phillip-steffensen/developing-a-simple-soap-webservice-using-spring-301-and-apache-cxf-226

http://www.benmccann.com/blog/web-services-tutorial-with-apache-cxf/

http://www.mastertheboss.com/web-interfaces/337-apache-cxf-interceptors.html

La meilleure façon d'apprendre n'est pas seulement de lire des tutoriels. Mais vous devriez d'abord suivre des tutoriels pour avoir une idée de base afin de voir que vous êtes capable de produire quelque chose (ou pas) et cela vous motiverait.

Le SO est un excellent moyen d'apprendre une technologie particulière (ou plus), les gens posent beaucoup de questions bizarres et il y a des réponses de plus en plus étranges. Mais dans l'ensemble, vous découvrirez des moyens de résoudre les problèmes d'une autre manière. Peut-être que vous ne saviez pas de cette façon, peut-être que vous ne pouviez pas y penser par vous-même.

Abonnez-vous à quelques balises qui vous intéressent et soyez persévérant, posez de bonnes questions et essayez de donner de bonnes réponses et je vous garantis que vous apprendrez cela avec le temps (si vous êtes persévérant).

Q3) Vous devrez répondre à celle-ci vous-même. Tout d'abord, en décidant de ce que vous allez construire, après tout, vous devrez penser à un mini projet ou quelque chose du genre et partir de là.

Si vous décidez d'utiliser CXF comme cadre pour créer des services REST / SOAP, je vous recommande de consulter ce livre Apache CXF Web Service Development. C'est fantastique, pas difficile à lire et pas trop gros non plus (win win).

fourmi
la source
7

SOAP WS prend en charge les styles d'intégration d'appel de procédure distante (c'est-à-dire RPC) et de middleware orienté message (MOM). Le service Web Restful prend uniquement en charge le style d'intégration RPC.

Le SOAP WS est indépendant du protocole de transport. Prend en charge plusieurs protocoles comme HTTP (S), Messagerie, TCP, UDP SMTP, etc. Le REST est spécifique au protocole de transport. Prend en charge uniquement les protocoles HTTP ou HTTPS.

SOAP WS n'autorise que le format de données XML. Vous définissez les opérations, qui passent par le POST. L'accent est mis sur l'accès aux opérations nommées et l'exposition de la logique d'application en tant que service. Le REST autorise plusieurs formats de données tels que XML, données JSON, texte, HTML, etc. N'importe quel navigateur peut être utilisé car l'approche REST utilise les opérations Web standard GET, PUT, POST et DELETE. L'accent est mis sur l'accès aux ressources nommées et l'exposition des données en tant que service. REST prend en charge AJAX. Il peut utiliser l'objet XMLHttpRequest. Idéal pour les opérations CRUD (Créer, Lire, Mettre à jour et Supprimer) sans état. GET - represent () POST - acceptRepresention () PUT - storeRepresention () DELETE - removeRepresention ()

Les lectures basées sur SOAP ne peuvent pas être mises en cache. Les lectures basées sur REST peuvent être mises en cache. Fonctionne et évolue mieux. SOAP WS prend en charge à la fois la sécurité SSL et la sécurité WS, ce qui ajoute des fonctionnalités de sécurité d'entreprise telles que le maintien de la sécurité jusqu'au point où cela est nécessaire, le maintien des identités via des intermédiaires et pas seulement SSL point à point, la sécurisation des différentes parties du message avec différents algorithmes de sécurité, etc. Le REST ne prend en charge que la sécurité SSL point à point. Le SSL crypte tout le message, qu'il soit sensible ou non. SOAP offre une prise en charge complète de la gestion des transactions basée sur ACID pour les transactions de courte durée et de la gestion des transactions basée sur la rémunération pour les transactions de longue durée. Il prend également en charge la validation en deux phases sur les ressources distribuées. Le REST prend en charge les transactions,

SOAP a une logique de réussite ou de nouvelle tentative intégrée et offre une fiabilité de bout en bout, même via des intermédiaires SOAP. REST n'a pas de système de messagerie standard et s'attend à ce que les clients appelant le service traitent les échecs de communication en réessayant.

source http://java-success.blogspot.in/2012/02/java-web-services-interview-questions.html

murali
la source
> Le service Web Restful prend uniquement en charge le style d'intégration RPC. REST n'est pas RPC, dit RPC, "définissez des méthodes qui font quelque chose" alors que REST dit, "définissez certaines ressources et ils auront ces méthodes". peej.co.uk/articles/rest.html
urmalp
0

Si votre application utilise souvent le protocole http, REST est préférable en raison de son poids léger, et sachant que votre application n'utilise que le protocole http, choisir SOAP n'est pas si bon car il est lourd, mieux vaut prendre une décision sur la sélection du service Web en fonction des protocoles que nous utilisons dans nos applications.

se sentir bien et programmation
la source