Services Web Option-RI8 Web Services Sana Sellami [email protected] 2016-2017 Objectifs du cours • Comprendre l’intérêt et les enjeux des services Web • Découvrir les principales technologies des services Web (SOAP, WSDL, UDDI , REST ) • Connaître les méthodes de découverte de services 2 PLAN Partie 1: Introduction aux Services Web (SW) Partie 2: Découverte de SWS 3 PARTIE 1 :INTRODUCTION AUX SERVICES WEB 1. 2. 3. 4. Qu’est ce qu’un service Web? Services Web SOAP Services Web REST Création et déploiement de SW SOAP 4 1. QU’ EST CE QU’UN SERVICE WEB 5 Un service Web .? Définition du W3C (World Wide Web Consortium) : Un service web est un système logiciel identifié par un URI, dont les interfaces publiques et les « bindings » sont définies et décrites en XML. Sa définition peut être découverte [dynamiquement] par d’autres systèmes logiciels. Ces autres systèmes peuvent ensuite interagir avec le service web d’une façon décrite par sa définition, en utilisant des messages XML transportés par des protocoles Internet. 6 http://www.w3.org/TR/ws-gloss/ Un service Web .? • Proposant diverses fonctionnalités que d’autres programmes peuvent • découvrir dynamiquement • et utiliser grâce à des protocoles • décrits en XML • basés sur l’échange de messages – écrits en XML – transmis par HTTP, FTP, SMTP, etc. • Caractéristiques • Réutilisable • Indépendamment de • la plate-forme (UNIX, Windows, …) • l’implémentation (VB, C#, Java, …) • l’architecture sous-jacente (.NET, JEE, …) 7 Un service Web .? Services Web CLIENT SERVEUR INTERNET CLIENT 8 CLIENT Les web services Ingénierie systèmes - Concevoir et utiliser des applications 2.0 C#, Java, PHP, API JavaScript, Android SDK, iOS SDK., Jonathan Fontanel, Philippe Un service Web .? • Un service Web est un programme sollicité via Internet par différents type de clients, permettant l’échange de données afin que l’application appelante puisse intégrer le résultat de cet échange à ses propres analyses. Les requêtes et les réponses s’effectuent dans des formats ouverts (HTML, XML, JSON ou text) et transitent par Internet. 9 Exemple de services existants • Google (http://www.google.com/apis/) : • accès gratuit mais limité (1000 requêtes par jour après enregistrement) • Amazon (http://aws.amazon.com/fr/ ) • accès gratuit mais limité (1 requête par seconde après enregistrement) • bien d’autres ! (cf http://www.xmethods.com/ http://webservicex.net par exemple) 10 Exemple de services existants • Pour la création d’un nuage de tags: • • • • Wordle: http://www.wordle.net/ Tag Cloud Generator: http://www.tagcloud-generator.com/ Tagxedo: www.tagxedo.com ….. 11 En saisissant un ensemble de mots clés En saisissant l’url de facebook Exemple de services existants • Outils vous permettant de vous organiser, de communiquer et de planifier votre travail: Google Docs, SlideRocket:, Toggl (Free Time Tracking Software), etc… • Réduction d’URL (goo.gl, TinyURL, bit.ly, etc.) • De nombreux services proposés par Google https://developers.google.com/apis-explorer/#p/ • • • • • Analyse de données Traduction Réduction d’URL Statistique fréquentation site web etc. 12 2. ARCHIECTURES DES SERVICES WEB 13 Architecture générale des services Web et des clients Clients du service Web Interface HTTP Socket Web Service JAVA Netbeans Bibliothèque JEE SOAP C# Visual Studio Bibliothèque C# REST PHP Eclipse PDT Bibliothèque PHP HTML JS Eclipse JavaScript XML-RPC AJAX 14 Les web services Ingénierie systèmes - Concevoir et utiliser des applications 2.0 C#, Java, PHP, API JavaScript, Android SDK, iOS SDK., Jonathan Fontanel, Philippe Un service Web .? Protocole de description des services (WSDL,…) Protocole de description des messages (SOAP,…) Protocole de description des services de transport (HTTP, SMTP,…) 15 Les web services Ingénierie systèmes - Concevoir et utiliser des applications 2.0 C#, Java, PHP, API JavaScript, Android SDK, iOS SDK., Jonathan Fontanel, Philippe Architecture Orientée Service (SOA) • Trois acteurs: le fournisseur, annuaire et client • Reçoit et enregistre les descriptions de services publiées par les fournisseurs • Obtient la description du service satisfaisant sa requête • Reçoit et répond aux recherches de services lancées par les clients Annuaire Localisation de service Publication de la description Serveur Web Client interaction Fournisseur • Définit le service • Publie sa description dans l’annuaire • Réalise les opérations 16 Standards • Protocole : SOAP = HTTP + XML • Requête/réponse = message XML • Cadre général permettant l’échange de données structurées au format XML • Protocole de transport de ces données basé sur HTTP • WSDL (Web Service Description Language)- Description de service web • Description des interfaces des services • UDDI - Découverte automatique des services (dynamicité) • Annuaire contenant les interfaces (Pages Jaunes, Vertes, Blanches), permettant d’enregistrer et de rechercher des descriptions de services web 17 SOAP • Simple Object Access Protocol, norme W3C • SOAP 1.0: 1999, basé sur HTTP • SOAP 1.1: 2000, plus générique, autres protocoles • SOAP 1.2: recommandation W3C, 2007: https://www.w3.org/TR/soap/ • Est un protocole de transmission de messages • Permet des appels de procédures à distance (RPC) s'appuyant principalement sur le protocole HTTP et sur XML, mais aussi SMTP et POP. 18 SOAP • S’appuie sur le protocole HTTP: • HyperText Transfert Protocol • Tim Berners-Lee, fin 89 - début 90 • Protocole de communication client/serveur basé sur TCP/IP • Simple pour le récupération de documents (GET, HEAD) • Simple pour la transmission de données (GET, POST) • Echange classique avec un service Web • Connexion du client vers le serveur • Demande d’un document via une méthode GET • Renvoi du document, erreur ou information sur le document • Déconnexion 19 SOAP La requête SOAP intervient sur le réseau entre le client et le serveur Interaction: SOAP Client SOAP Côté client • Ouverture d'une connexion HTTP • Requête SOAP: document XML décrivant o La méthode à invoquer sur la machine distante o les paramètres de la méthode Serveur Web Fournisseur listner SOAP Côté Serveur • Récupère la requête • Exécution de la méthode avec les paramètres • Renvoie une réponse SOAP (document XML) au client 20 SOAP: Structure • Envelope contient des définitions de namespaces • Header (en-tête) utilisé pour transmettre des données d’authentification ou de gestion de session. • Body (Corps) contient les informations obligatoires destinées à l'ultime destinataire du message. 21 SOAP: Exemple Requête SOAP getsomme envoyée à un service Sommer 22 SOAP: Exemple (suite) Réponse SOAP 23 WSDL (Web Services Description Language) • Langage de description des services web • Depuis 2007, WSDL 2.0 est une recommandation W3C • Objectif: Décrire les services comme un ensemble d’opérations et de messages abstraits reliés (bind) à des protocoles et des serveurs réseaux • Basé sur le langage XML (schéma XML) 24 WSDL (Web Services Description Language) • Regroupe les informations nécessaires pour interagir avec le service : • les méthodes, les paramètres et valeurs retournées, le protocole de transport utilisé, la localisation du service • Document indispensable au déploiement de Services Web • Publication et recherche de services au sein de l’annuaire se font via les documents WSDL • Pour l’accès à un service particulier, un client se voit retourné l’URL du fichier WSDL décrivant l’implémentation du service 25 WSDL (Web Services Description Language) • Description à 2 niveaux: Séparation entre la partie abstraite et concrète 26 Figure : Concepts définis par WSDL 1.1 et WSDL 2.0 http://www.w3.org/TR/wsdl20/ Source: http://en.wikipedia.org/wiki/Web_Services_Description_Language WSDL (Web Services Description Language) Décrit la structure des données transmises dans un message Décrit l’ensemble des données transmises au cours de l’opération Composé de l’ensemble des opérations abstraites Décrit la façon dont un ensemble d’opérations abstraites, appelé « type de port », est lié à un port selon un protocole réel Un ensemble de points finaux du réseau appelés « ports » permettant de déterminer la localisation du service 27 Exemple WSDL 1.1: sommer.wsdl Racine du document Définition des types de données (facultatif) Message: Définition des messages échangeables PortType: définition des ensembles d’opérations 28 service: localisation des services web Structure d’un WSDL : <Types> • Un type décrit la structure de données transmises dans un message. • Contient les définition de types utilisant un système de typage par défaut XML Schema (XSD). • Pouvant contenir des types simples et complexes 29 Structure d’un WSDL : <message> • Décrit les données associées à une opération (1 requête et 1 réponse HTTP par opération, 1 message d'erreur ”fault” optionnel). • Un document WSDL peut contenir zéro ou plusieurs messages. • Chaque message peut être un composé de plusieurs parties 30 Structure d’un WSDL : <portType> • Un document WSDL peut contenir 0 à plusieurs portType • L’élément portType contient un seul attribut name. La convention de nommage nameOfWebService PortType. • Composé d'un ensemble d'opérations abstraites (i.e. signature de la méthode). Une opération est composée d’un message pour l’appel (Input) et un pour le retour (Output). 31 Structure d’un WSDL : <portType> • Définition d’un seul type de port, avec les opérations abstraites, correspondant aux déclarations de méthodes dans l’interface Java : 32 Structure d’un WSDL : <binding> • Une liaison (ou binding) décrit la façon dont un portType(en d’autres termes l’abstraction du service, i.e. ses opérations abstraites) est mis en oeuvre pour un protocole particulier (HTTP par exemple) et un mode d’invocation (RPC par exemple). • Pour un portType, on peut avoir plusieurs liaisons, pour différencier les modes d’invocation (RPC ou autres) ou de transport (HTTP ou autre) des différentes opérations. 33 Structure d’un WSDL : <binding> Mode d’invocation Protocole Nom de l’opération dans le type de port La représentation du message request La représentation du message response 34 Structure d’un WSDL : <service> • Un service est décrit comme un ensemble de points finaux du réseau appelés « ports » • Un port spécifie une URL qui correspond à l’implémentation du service par un fournisseur. • Le port est associé à un « binding » définissant ainsi un simple point de terminaison (endpoint:@ où se situe le WS) 35 Structure d’un WSDL : <port> Nom du service qui encapsule les ports Nom du port Nom de la liaison associée au port 36 Mapping Java WSDL Code Java Fichier WSDL Classe Java public class IpAddressSearchWebService Service Commentaire /*using this function, user can find the country and city by Ip */ Documentation Méthode public String[] getCountryCityByIp(String theIpAddress) Operation Paramètre Types String theIpAddress <wsdl: service name="IpAddressSearchWebService"> </wsdl:service> <wsdl:documentation> using this function, user can find the country and city by Ip </wsdl:documentation> <wsdl:operation name="getCountryCityByIp"> <wsdl:input …./> <wsd:output…./> </wsdl:operation> <wsdl:types> <s:schema elementFromDefault=“qualified"> <s:element name="getCountryCityByIp"> <s:complexType> <s:sequence> <s:element minoccurs=“0" maxoccurs=“1" name=“theIpAddress" 37 type=“s:string" /> </s:sequence> </s:complexType>…</s:element> </wsdl:types> UDDI : Universal Description, Discovery and Integration • Universal Description, Discovery and Integration • Historique • À l’origine: annuaire universel pour les services web (à la Google) • Aujourd’hui: vise plutôt les environnements privés, à petite échelle • Raisons: peu d’annuaires généraux UDDI (IBM, Microsoft, …), contenu pauvre et non fiable • Meilleure fiabilité en environnements contraints, privés (~EAI) • Élément d’infrastructure qui aide aussi à stocker des infos absentes en WSDL • Versions • Version 1: les bases d’un annuaire de services • Version 2: adaptation à SOAP et WSDL • Version 3: redéfinition du rôle UDDI, accent sur les implémentations privées, sur l’interaction entre annuaires privés et publics 38 UDDI : Universal Description, Discovery and Integration • L’annuaire UDDI permet de : • Publier, découvrir des informations sur une entreprise et ses services • L’inscription sur UDDI permet à une entreprise de se présenter ainsi que ses services • L’adoption de UDDI facilite le développement des échanges de type « B2B » • L’enregistrement des services dans un annuaire s’effectue auprès d’un opérateur (Microsoft ou IBM actuellement) à travers son site mais on peut créer ses propres registres UDDI (UDDI4J, jUDDI) • http://uddi.xml.org/ • Un annuaire à l’aide d’un browser en ligne: http://soapclient.com/UDDIAdv.html 39 UDDI : Universal Description, Discovery and Integration • Comporte plusieurs catégories de données: Informations organisées en trois méthodes • . UDDI Pages Blanches Pour trouver un service par contact, nom et adresse Pages Jaunes Pour trouver un service par description (WSDL) répertorié par catégorie Pages vertes Pour trouver un service par caractéristiques techniques 40 UDDI • Le modèle UDDI comporte 5 structures de données principales décrites sous forme de schémas XML : • BusinessEntity : ensemble d’informations sur l’entreprise qui publie les services dans l’annuaire • BusinessService : ensemble d’informations sur les services publiés par l’entreprise • BindingTemplate : ensemble d’informations concernant le lieu d’hébergement du service (i.e. adresse du fournisseur) • tModel : ensemble d’informations concernant le mode d’accès du service (définitions WSDL) • publisherAssertion : ensemble d’informations contractuelles entre partenaires en échanges commerciaux 41 Revenons à l’architecture Demande de Service (Découverte): Search Message en SOAP Annuaire UDDI Publication de la description WSDL SOAP Client Programme client Récupération de la description WSDL Serveur Web Fournisseur Service interaction HTTP(S), FTP, etc 42 4. SERVICES WEB REST 43 REST • REST acronyme de REpresentational State Transfert • Concept introduit en 2000 dans la thèse de Roy FIELDING • Ce n’est pas: • Un format • Un protocole • Un standard • Est un style d’architecture inspiré de l’architecture WEB • Permet l’envoi de messages sans enveloppe SOAP et dans un encodage libre (XML, JSON, binaire, simple texte). 44 Services REST • REST n’est pas un standard: Pas de recommandation du W3C • Les services REST sont utilisés pour développer des architectures orientées ressources (ROA) ou orientées Données (DOA). • Qu’est ce qu’une ressource? « Any information that can be named can be a resource: a document or image, a temporal service (e.g. « today’s weather in Los Angeles »), a collection of other resources, a non-virtual object (e.g. a person), and so on. In other words, any concept that might be the target of an author’s hypertext reference must fit within the definition of a resource» Roy Fielding thesis , 2000 45 Services REST: Fournisseurs https://developer.yahoo.com/ 46 Services REST: Exemples Glassware pour GoogleGlass https://developers.google.com/glass/ 47 Services REST • C’est quoi REST ? • Ressources (Identifiant) • identifié par une URI • Méthodes pour manipuler l’identifiant • Méthodes HTTP: GET, POST, PUT, DELETE • Représentation donne une vue sur l ’état: • Informations transférées entre le client et le serveur • Exemples: XML, JSON, … 48 Services REST • Architecture Orientée Ressource • Toute information qui peut être nommée est une ressource • Une ressource est identifiée par un identificateur (URI) Qu’est ce qu’une URI ? 49 Services REST • Chaque URI identifie une ressource http://api.domain.com/users/hugo • Une URI ne contient pas de verbe • Une même URI peut être appelée avec différentes méthodes HTTP (GET, POST, PUT, DELETE) • GET http://api.domain.com/users récupère les utilisateurs • POST http://api.domain.com/users crée un nouvel utilisateur • PUT http://api.domain.com/users/hugo modifie Hugo • DELETE http://api.domain.com/users/hugo supprime Hugo 50 Services REST • Données fournies suivant une représentation pour • le client (GET) • Pour le serveur (POST et PUT) • Données retournées sous différents formats • • • • XML JSON (JavaScript Object Notation) (X)HTML …. • Le format d’entrée (POST) et le format de sortie (GET) d’un service Web d’une ressource peuvent être différents 51 Services REST • Exemples formats JSON et XML 52 53 54 Description de services Web REST • Langages: WSDL 2.0,WADL, RSDL (Restful Service Description Language), SERIN (Semantic RESTFul Interfaces) • WSDL 2.0 55 http://www.w3.org/TR/wsdl20/ Description de services Web REST WSDL2.0 • Évolution de Web Service Description Language recommandé en 2007 par le W3C. • WSDL 2.0 permet de spécifier un binding HTTP au lieu de SOAP, utilisant n’importe quel verbe HTTP. • Permet donc en théorie de décrire des interfaces REST-like et RESTful... • ... quoi que le modèle conceptuel sous-jacent reste centré sur la notion d’opération. • Des paramètres (partie de l’URI après le ?) peuvent être spécifiés à l’aide d’un schéma XML. • Cela permet notamment de leur associer un type de données. 56 Description de services Web REST • WADL (Web Application Description Language) • Un langage de description XML de services de type REST • Le W3C contribue à sa spécification • Permet une description de services par éléments de type: ressource, méthode, paramètre, requête, réponse. • Pas assez de frameworks qui supportent la description WADL • Liens utiles: https://wadl.java.net/, http://www.w3.org/Submission/wadl/ 57 Description de services Web REST EXEMPLE de description WADL pour l’application Yahoo News Search Description des espaces de noms Description de Grammaire XML utilisée par le service Description des ressources Et méthodes HTTP utilisées 58 Plus facile à comprendre, à interpréter et à écrire qu’un WSDL Description de services Web REST WADL ELEMENTS WADL DESCRIPTION <application> La racine d’une description WADL <ressources base=…….> • • Un conteneur pour les ressources que l’application fournit L’attribut base définit l’URI pour les ressource <resource id=“" path="”> • • • Décrit la ressource que l’application fournit L’attribut id identifie l’élément ressource L’attribut path fournit une URI relative pour l ’identifiant de la ressource. <method name=“ " id="”> • • Fils d’élément ressource ou application L’attribut name définit les méthodes HTTP <request> <response> • Request: décrit une requête à la méthode HTTP sur une ressource Response: décrit la sortie en réalisant la méthode HTTP sur le ressource • Pour les autres éléments et attributs pensez à regarder http://www.w3.org/Submission/wadl/ 59 Description de services Web REST • WADL Design simple Facile à lire, comprendre et implémenter N’est pas un standard • WSDL est une recommandation W3C design complexe Nécessité de comprendre plus de concepts utilise uniquement des paramètres XML 60 Description de services Web REST • Langages académiques pour la description sémantique de services REST: SA-REST (Semantic Annotation of Web Resources) et hREST (HTML for RESTFUL SERVICES). • Utilisent l’annotation sémantique de la description textuelle des services, par un micro-format (hRESTS) ou RDFa (SAREST). • Propositions très influencées par SOAP : • SA-REST découle explicitement de SA-WSDL, • le modèle conceptuel de hREST est très proche de celui des services SOAP, centré sur la notion d’opération. 61 SOAP VS REST 62 SOAP VS REST REST SOAP Standardisé Non Oui Sécurité Non (restreinte par l’emploi des méthodes HTTP) Oui (WS-Security) Complexité Non Oui (lourdeur) 63 3. CRÉATION ET DÉPLOIEMENT DE SERVICES WEB EN JAVA 64 Architecture générale des services Web et des clients Clients du service Web Interface HTTP Socket Web Service JAVA Netbeans Bibliothèque JEE SOAP C# Visual Studio Bibliothèque C# REST PHP Eclipse PDT Bibliothèque PHP HTML JS Eclipse JavaScript XML-RPC AJAX 65 Création de services web La conception d’un service Web nécessite les étapes suivantes : • Définir et créer un service Web • Publier le service Web sur le serveur d’application • Utiliser un service Web en créant un client. Créer un service Web Publier un service Web Utiliser un service Web Serveur d’application 66 CLIENT (utilisateur) Création de services web en Java • Deux approches pour la création de SW: • Approche Bottom-up (ou code first): Création d’une classe Javadéploiement WSDL • Approche top-down (ou contract-first) : Développer un Service Web à partir de sa description WSDL. • Outils utilisés: • Frameworks: Axis2 , Apache CXF (framework Java/Web Services) , Spring WS • API JAX-WS et JAX-RS • Etc. • Serveurs: Tomcat, Glassfish, tomEE Plus, etc. 67 JAX-WS (Java API for XML WS) • Java API for XML WS • Ensemble d’ APIs pour la programmation de services web sur JEE (incluant JAXB(Java Architecture for XML binding) et SAAJ) • Utilisation simplifiée par des annotations dans les classes Java • Spécification de la correspondance XML - Objets • Facilitation de la programmation des points d’ entrée de services 68 Annotations JAX-WS • JAX-WS repose sur l’utilisation massive d’annotations pour la configuration d’un Service Web • Les principales annotations sont les suivantes: • • • • • @WebService : Implémentation d’un Service Web @WebMethod : Paramétrer une opération @WebParam : Paramétrer un message @WebResult : Paramétrer un message de sortie @WebFault : Paramétrer un message fault • A noter que seule l’utilisation de l’annotation @WebService est nécessaire (utilisation de valeurs par défaut) 69 Et concrètement ça donne quoi? • Vous allez faire le TP qui est divisé en deux parties: 1. Tester des services web existants 2. Création et déploiement de services web • Java • L’IDE Netbeans • Le serveur d’applications Glassfish Serveur d’application 70 Les web services Ingénierie systèmes – Jonathan Fontanel, Philippe Lacomme, Libo Ren CLIENT (utilisateur) REFERENCES • “RESTful Web Services Web services for the real world” By Leonard Richardson, Sam Ruby, Publisher: O'Reilly Media; 2007 • Les web services Ingénierie systèmes - Concevoir et utiliser des applications 2.0 C#, Java, PHP, API JavaScript, Android SDK, iOS SDK., Jonathan Fontanel, Philippe Lacomme, Libo Ren • Cours Michael Mrissa ” Introduction aux services Web” • https://jersey.java.net/documentation/latest/jaxrsresources.html • http://www.developer.com/java/creating-restful-webservices-with-jax-rs.html • https://netbeans.org/kb/docs 71