Cours Introduction aux Services Web SOAP REST et leurs applications en Java Web Services
Télécharger PDFDocument de l'Université de Batna 2, Faculté de MI, Département d'Informatique – 1ère année.
Pourquoi les services web ?
Il est fréquent qu'une application ait besoin de récupérer des données dynamiques depuis une autre machine, en passant par un réseau. Par exemple :
- Données météorologiques pour une date précise.
- Données de géolocalisation d'un endroit via son adresse.
- Informations sur les derniers films disponibles au cinéma.
Il arrive également qu'un programme tournant sur une machine spécifique doive faire exécuter une opération très coûteuse en temps sur une autre machine plus puissante, ou faire appel à des services spécialisés.
Exemple : Application d'agence de voyage
Une application pour une agence de voyage propose des séjours qui sont en réalité une combinaison de plusieurs services distincts :
- Gestion de réservation de billets de transport.
- Gestion de réservation d'hôtels.
- Gestion de réservation de voitures de location.
L'élaboration d'un produit "voyage" est le résultat de données récupérées auprès de différents fournisseurs :
- Compagnies aériennes.
- Chaînes hôtelières.
- Loueurs de véhicules.
Pour orchestrer ces services (réservation d'hôtel, réservation de voiture, réservation de billet) et permettre à une application client de les consommer, l'utilisation de services web est une solution adéquate.
Limites des technologies distribuées traditionnelles
La réponse à ces besoins complexes s'inscrit dans le cadre des applications distribuées. Des technologies comme RMI, DCOM et CORBA ont précédemment adopté ce style architectural, mais ont souvent rencontré des échecs en raison de plusieurs facteurs :
- La diversité des plateformes utilisées dans les organisations.
- Leur usage n'était pas adapté à Internet (problèmes de passage à travers les pare-feux, latence, ou absence de réponses sur le réseau).
- Les applications réparties fondées sur ces technologies offraient des solutions caractérisées par un couplage fort entre les objets.
Les avantages du web et d'HTTP
À l'inverse, le web impose des moyens de communication beaucoup plus sommaires, mais universels :
- Débit généralement plus faible.
- Caractéristiques du protocole HTTP bien inférieures en termes de fonctionnalités brutes par rapport à CORBA ou RMI.
- La configuration côté client est très légère (un simple navigateur suffit souvent).
- Le protocole HTTP (universellement mis en œuvre) est devenu le moyen d’échange incontournable entre machines connectées sur le web.
Bien que l’architecture distribuée soit devenue indispensable pour répondre aux besoins des applications d’entreprise, la question se pose : est-il possible de combiner les caractéristiques des technologies distribuées comme CORBA ou RMI avec les contraintes imposées par le web, à savoir l'utilisation de HTTP et XML ? Les services web permettent d'atteindre cet objectif.
Ils facilitent l'intégration et la localisation des services dans une architecture distribuée moderne.
Qu'est-ce qu'un service web ?
Les services web matérialisent deux perceptions dans l’évolution des architectures logicielles :
- Le passage du web client (interaction utilisateur via navigateur HTML) au web machines (communication directe entre applications).
- L'adaptation des architectures distribuées (historiquement basées sur des technologies comme CORBA, RMI, RPC, DCOM) au monde web (utilisant des technologies comme HTTP et XML).
Principe de base d'un service web
Un service web repose sur le transport d’une demande de service entre un client et un serveur. Ce transport est assuré par la suite de protocoles Internet (TCP/IP et HTTP). Les messages (requêtes et réponses) échangés entre clients et serveurs sont au format XML. Ce format offre une représentation des données portable sur toute plateforme.
Un service web est un composant logiciel basé sur Internet (HTTP) qui exécute des tâches précises et qui respecte un format spécifique (XML). Il permet aux applications de faire appel à des fonctionnalités à distance, simplifiant ainsi l’échange de données. Les services web permettent aux applications de dialoguer à travers le réseau, indépendamment de :
- Leur plateforme d’exécution.
- Leur langage d’implémentation.
Ils permettent également d’accéder aux applications à travers les pare-feux et sont adaptés pour l’assemblage de composants faiblement couplés.
Quels sont les acteurs d'un service web ?
Les principaux acteurs dans la technologie des services web sont :
- Le fournisseur : Celui qui fournit le service web. Il est généralement représenté par un serveur d’application (par exemple, J2EE). Il propose l’implémentation d’un service web, fournit une description de ce dernier (en WSDL), et publie cette description dans un annuaire.
- L'annuaire : Un registre, souvent hébergé sur un serveur web (comme UDDI), qui détient les informations et la description du service web, le rendant découvrable.
- Le client : Celui qui utilise et invoque le service web, après l'avoir recherché et trouvé dans l’annuaire.
Scénario d'utilisation d'un service web
Architecture des services web : Publication, Recherche, Invocation
Voici un scénario complet décrivant les étapes d'interaction avec un service web :
- Étape 1 : Définition et description du service web
Le fournisseur définit ce que fait le service et décrit ses fonctionnalités, ses opérations et ses données en utilisant le langage WSDL (Web Services Description Language). - Étape 2 : Publication du service
Le service est déclaré dans un annuaire (tel que UDDI - Universal Description, Discovery and Integration) afin de le rendre accessible et découvrable par les clients potentiels. - Étape 3 : Recherche du service
Le client se connecte à un annuaire (UDDI) pour effectuer une recherche d’un service répondant à ses besoins. - Étape 4 : Enregistrement auprès du service web
Une fois le service trouvé, le client peut s'enregistrer auprès du fournisseur associé au service. Cet enregistrement indique au fournisseur l’intention du client d’utiliser le service selon les conditions décrites dans la spécification WSDL. - Étape 5 : Invocation du service
Le client peut alors invoquer les opérations du service, en respectant les conditions et formats définis dans le WSDL. - Étape 6 : Composition du service
Il est possible de combiner plusieurs services. Un service peut lui-même devenir le client d’un autre service pour accomplir des tâches plus complexes.
Exemple d'interaction simplifiée entre un client, un annuaire et un service web :
- Client : "Je cherche un service web pour [besoin]."
- Annuaire : "J'ai trouvé ! Voici le serveur hébergeant le service web qui pourrait vous intéresser."
- Client : "Quel est le format d'appel du service que tu proposes ?"
- Serveur du service : "Voici mon contrat (description WSDL)."
- Client : "J'ai compris comment invoquer ton service et je t'envoie un document XML représentant ma requête."
- Serveur du service : "J'ai exécuté ta requête, et voici les résultats."
Le protocole HTTP
Définition
HTTP (HyperText Transfer Protocol) est un protocole de communication essentiel sur le web. Il permet :
- Au client de récupérer des documents (pages web, images, etc.) du serveur.
- Ces documents peuvent être statiques ou dynamiques.
- La soumission de formulaires, permettant l'envoi de données par l'utilisateur au serveur.
Fonctionnement de HTTP
Le fonctionnement basique de HTTP suit ces étapes :
- Le client se connecte au serveur web (en établissant une socket sur un port spécifique, généralement le port 80 pour HTTP).
- Le client demande un document ou une ressource au serveur en envoyant une requête HTTP (par exemple, "GET /doc.html" ou "POST /script.php").
- Le serveur traite la requête et renvoie au client le document demandé (avec un statut 200 OK) ou un message d’erreur (par exemple, si le document n’existe pas).
- La connexion est généralement déconnectée une fois la réponse envoyée (dans les versions plus anciennes de HTTP ou si non persistant).
Les méthodes HTTP principales
Une requête HTTP peut être envoyée en utilisant différentes méthodes, chacune ayant une sémantique spécifique :
- GET : Utilisée pour récupérer le contenu d’un document ou d'une ressource. Les données sont généralement passées dans l'URL.
- POST : Utilisée pour soumettre des formulaires ou envoyer des données au serveur pour qu'il les traite ou les crée. Les données sont incluses dans le corps de la requête.
- PUT : Utilisée pour envoyer un document ou une ressource d'un client vers le serveur, souvent pour créer ou remplacer une ressource à une URL spécifique.
- DELETE : Utilisée pour demander au serveur de supprimer une ressource identifiée par l'URL.
Exemples de requêtes HTTP
Requête POST
POST /nom_script HTTP/1.0 Accept: text/html Accept-Language: fr User-Agent: Mozilla/5.0 login=valeur1&pass=valeur2&val3=valeur3
L'en-tête de la requête est séparé du corps par une ligne vide. Le corps contient les données envoyées.
Requête GET
GET /nom_script?login=valeur1&pass=valeur2 HTTP/1.0 Accept: text/html Accept-Language: fr User-Agent: Mozilla/5.0
Pour une requête GET, les données sont incluses dans l'URL, et le corps de la requête est vide.
Exemple de réponse HTTP du serveur
HTTP/1.0 200 OK Date: Wed, 05 Feb 2002 15:02:01 GMT Server: Apache/1.3.24 Last-Modified: Wed, 02 Oct 2001 24:05:01 GMT Content-Type: text/html Content-Length: 4205 <html> <head> <title>Ma page web</title> </head> <body> <h1>Bienvenue</h1> <p>Ceci est le contenu de la page.</p> </body> </html>
L'en-tête de la réponse est séparé du corps (qui contient le document HTML à afficher) par une ligne vide.
L'idée fondamentale des services web
L'idée clé des services web est que le corps de la requête HTTP est utilisé pour transporter des données structurées, généralement codées en XML (ou tout autre format de données comme JSON, etc.). Cela permet un échange standardisé et interopérable d'informations entre applications sur le web.
Types de services web
Il existe principalement deux types de services web :
- Service web SOAP (Simple Object Access Protocol)
- Service web RESTful (Representational State Transfer)
Foire aux questions (FAQ)
Qu'est-ce qu'un service web ?
Un service web est un composant logiciel basé sur Internet (utilisant le protocole HTTP) qui permet aux applications de communiquer et d'échanger des données à distance. Il exécute des tâches spécifiques et utilise des formats standardisés comme XML (ou JSON) pour la communication, assurant l'interopérabilité entre différentes plateformes et langages de programmation.
Quels sont les principaux acteurs impliqués dans un service web ?
Les trois acteurs principaux sont le fournisseur, qui développe et met à disposition le service ; l'annuaire (comme UDDI), un registre où le service est publié et peut être découvert ; et le client, qui recherche, se connecte et utilise le service pour ses propres besoins.
Quelle est la différence entre un service web SOAP et RESTful ?
Les services web SOAP (Simple Object Access Protocol) sont basés sur des protocoles standards stricts (WSDL pour la description, XML pour les messages) et sont souvent plus complexes, offrant des fonctionnalités avancées pour la sécurité et les transactions. Les services web RESTful (Representational State Transfer) sont plus légers et s'appuient directement sur les méthodes et les principes de HTTP (GET, POST, PUT, DELETE), utilisant des formats comme JSON ou XML. RESTful est généralement privilégié pour sa simplicité, sa flexibilité et ses performances dans les applications web modernes.