Cours 4 Web Services UDDI WSDL Objectifs Architecture
Cours 4 : Web Services &UDDI & WSDL Objectifs Architecture Protocole Web (RPC, SOAP) Orchestration Sécurité Conclusion
1. Objectifs des S. I. u. Accès rapide, intégré et généralisé à l’information pertinente l en interne (Intranet) et en externe (Extranet, Internet) u. Système ouvert réduisant les coûts l l capable d'inter-opérer avec les applications existantes capable d'inter-opérer avec le monde extérieur (Extranet, Internet) u. Développement rapide d’applications (RAD) l l utilisation de composants distribués réduction des coûts de développement u. Administration simplifiée du système l depuis le Web avec des outils d'assistance
Besoins des Applications Web u. Accès programmable à des services l l l Cours de bourse Entrées d'annuaires Autorisation de cartes de crédits Authentification d'un client Enregistrement de clients Recherche Web, … u. Interface d'accès par fonctions l l l URL longues contraignantes (ASCII, plats, 255) Pouvoir découvrir dynamiquement les services Paramètres structurés et diversifiés
Exemple d'applications u. Diffusion d'information l horaires, incidents, états de stocks, etc. u. Documentation automatique l librairie électronique, manuels, maintenance, etc. u. Gestion de sites Web dynamiques l présentation, marketing, veille technologique, etc. u. Communication et "knowledge management" l échanges de données, gestion ressources humaines, etc. u. Commerce électronique l présentation, sélection, transaction, médiation, etc.
2. Architecture Web Services SERVEUR Service Provider Request Publish SERVEUR Service Provider Request Service Registry Publish Request Find SERVEUR Service Provider WEB-HTTP Request Service Requester CLIENT SERVEUR
Qu'est ce qu'un Web Service ? u Définition [W 3 C] l l l Un Web service est un système logiciel identifié par une URI, dont les interfaces publiques et les liens sont définis et décrits en XML. Sa définition peut être découverte par d'autres systèmes logiciels. Ces systèmes peuvent interagir avec le service Web d'une manière prescrite par sa définition, en utilisant des messages XML portés par les protocoles Internet. u Exposition l l Langage WSDL utilisé pour décrire le service Similaire à IDL mais basé sur XML u Activation l l Protocole Web au-dessus de HTTP (RPC XML, SOAP) Autres protocoles possibles …
Les Composants u. Service Provider (Fournisseur de service) l Application s'exécutant sur un serveur et comportant un module logiciel accessible par Ixx. Net en XML u. Service Registry (Annuaires de service) l l Annuaire des services publiés par les providers (UDDI) Géré sur un serveur niveau application, entreprise ou mondial u. Service Requester (Demandeur de service) l Application cliente se liant à un service et invoquant ses fonctions par des messages XML (SOAP)
Description des services: WSDL u. Elément Type l Types des paramètres (schéma XML) u. Elément Message l Appel et retour de chaque opération u. Elément Port type l Groupe d'opération u. Elément Binding l l URL de l'opération Type de protocole
Description en WSDL <definitions name = ". . . " xmlns: …> <types> <!--Définition des types de données; ceux des schémas utilisés par défaut--> … </types> <message> <!--Déclaration des messages (entrées et sorties)--> … </message> <port. Type> <!--Déclaration des opérations (par association des messages)--> … </port. Type> <binding> <!--Définition de la liaison WSDL – SOAP (noms d'actions et codages)--> … </binding> <service name= " … " > <!--Déclaration des ports (groupes d'opérations et protocoles d'accès)-->… </service> </definitions>
Annuaire des services: UDDI Annuaire UDDI u Universal Description, Discovery and Integration u Annuaire des services l l u Accessible en SOAP u Fonctions Gérant de requêtes l l Dde de Service décrit par un document WSDL, spec. EJB, autre … Enveloppe + Document Programme l l l Enregistrer votre société Enregistrer des services Enregistrer des opérations Découvrir des services …
Contenu de l’annuaire u Pages blanches (business. Entity) l l l Business. Key Name Description Category. Bag Business. Services u Contenu défini par un schéma XML u Spécifications pour réplication Business. Entity u Pages jaunes (business. Service) l l l Service. Key Business. Key Name Description Category. Bag Binding. Templates t. Model Spécifs de services et taxonomies Business. Service u Pages vertes (binding. Templates) l l Bindin. Key Service. Key Description Access. Point publisher. Assertion Relations entre deux parties Binding. Templates Infos techniques
Un Service Web, c’est quoi ? u Un service Web est une « unité logique applicative » accessible en utilisant les protocoles standard d’Internet u Caractéristiques: l l Réutilisable Indépendamment de u la plate-forme (UNIX, Windows, …) u l’implémentation (VB, C#, Java, …) u l’architecture sous-jacente (. NET, J 2 EE, …)
Web Services
Modèle des services
Annuaire UDDI Le Cusmar a trouvé ! Voici le serveur hébergeant ce service web Le Cusmar recherche un service WEB « Quel format d’appel au service proposes-tu ? » , demande le Cusmar Contrat SOAP Voici mon contrat (WSDL) XML Client XML Serveur Le Cusmar a compris comment invoquer ce service et t’envoie un document XML représentant sa requête XML J’ai exécuté ta requête et je te retourne le résultat
Fonctionnement de Web Services
Web Services : Place de XML u Une technologie "enabling" l l description et invocation des services similaire à CORBA (IDL/IIOP) ou DCOM, mais textuel et Internet peut être intégrée en sur-couche à l'existant facilite l'interopérabilité et la connaissance u Encapsulation des protocoles existants l l l échange de données (résultats) échange de requêtes (RPC) contrôle de transactions (AXTP) u Un nouveau protocole du W 3 C l l SOAP Web Protocol (WP) u Apporte lisibilité, validation, contrôle, interopérabilité l IBM, Sun, Microsoft supporteront le même WP
3. XML-RPC et SOAP u. XML-RPC l Appel de procédure distante sur Internet u. Requête en XML u. Résultat en XML l Utilisable au-dessus de HTTP u. Format MIME text/xml u. Différents formats de paramètres possibles u. SOAP et WP du W 3 C l l l Protocole plus complet et objet Sur HTTP, email, FTP, MQ, IIOP, etc. WP : ouverture, interopérabilité, sécurité. . .
Architecture type Client Autre serveur Application Java Browser. . . P R O X Y Ixx. Net Serveur HTTP SERVEUR SOAP Documents Handlers SOAP Data Run. Time Transaction WSDL Creation Application logic Services Noyau XML Donnees et acces aux objets Parser, DOM, XSL, XQL, Xpointer, DOMlets Classes Java, Securite, Gestion du cache
SOAP u Simple Object Access Protocol u Intégration de XML au-dessus de HTTP : l l Pour accéder services, objets et serveurs Indépendant de toute plate-forme u Codage universel XML par opposition aux spécifiques : l l DCOM - DCE/NDR CORBA - IIOP/CDR JAVA - RMI/JRMP RDA - XDR u Résolution des problèmes de sécurité : l l Les firewalls supportent des ports spécifiques (HTTP, FTP) La plupart des middlewares assignent des ports dynamiques … u Associé à WSDL pour publication d'interfaces
Un échange type Port de connexion (URL) Pare-feu Procuration d'interface Application Cliente Pare-feu Messages Appel SOAP Translateur SOAP HTTP RPC local Réponse Parser XML Serveur d'application
Eléments d'un message u. Envelope l Élément pouvant contenir des déclarations d'espaces de noms ou des sous-éléments u. Header l l Élément optionnel fils de Envelope Permet des extensions telles que authentification, session, etc. u. Body l l l Élément obligatoire fils de Envelope Définit la méthode appelée, contient les paramètres Peut contenir un élément Fault en cas d'erreur
Structure d'un message Protocol Headers SOAP Envelope SOAP Header Entête de protocoles (HTTP, SMTP, …) <Envelope> <Header> <Body> SOAP Body
Exemple uwww. stockquoteserver. com ufloat Get. Last. Trade. Price (Symbol) u. Le dialogue : Application Middleware SOAP HTTP www. e-xmlmedia. fr Request Reply Error Application Middleware SOAP HTTP www. stockquoteserver. com
Le WSDL de l'exemple <definitions name="Stock. Quote" target. Namespace="http: //example. com/stockquote. wsdl" xmlns: tns="http: //example. com/stockquote. wsdl" xmlns: xsd 1="http: //example. com/stockquote. xsd" xmlns: soap="http: //schemas. xmlsoap. org/wsdl/soap/" xmlns="http: //schemas. xmlsoap. org/wsdl/"> <types> <schema target. Namespace="http: //example. com/stockquote. xsd" xmlns="http: //www. w 3. org/1999/XMLSchema"> <element name="Trade. Price. Request"> <complex. Type> <all> <element name="ticker. Symbol" type="string"/> </all> </complex. Type> </element> <element name="Trade. Price"> <complex. Type> <all> <element name="price" type="float"/> </all> </complex. Type> </element> </schema> </types> <message name="Get. Last. Trade. Price. Input"> <part name="body" element="xsd 1: Trade. Price"/> </message> <message name="Get. Last. Trade. Price. Output"> <part name="body" element="xsd 1: Trade. Price. Result"/> </message> <port. Type name="Stock. Quote. Port. Type"> <operation name="Get. Last. Trade. Price"> <input message="tns: Get. Last. Trade. Price. Input"/> <output message="tns: Get. Last. Trade. Price. Output"/> </operation> </port. Type> <binding name="Stock. Quote. Soap. Binding" type="tns: Stock. Quote. Port. Type"> <soap: binding style="document" transport="http: //schemas. xmlsoap. org/soap/http"/> <operation name="Get. Last. Trade. Price"> <soap: operation soap. Action="http: //example. com/Get. Last. Trade. Price"/> <input> <soap: body use="literal" namespace="http: //example. com/stockquote. xsd" encoding. Style="http: //schemas. xmlsoap. org/soap/encoding/"/> </input> <output> <soap: body use="literal" namespace="http: //example. com/stockquote. xsd" encoding. Style="http: //schemas. xmlsoap. org/soap/encoding/"/> </output> </operation> </binding> <service name="Stock. Quote. Service"> <documentation>My first service</documentation> <port name="Stock. Quote. Port" binding="tns: Stock. Quote. Binding"> <soap: address location="http: //example. com/stockquote"/> </port> </service> </definitions>
La requête u POST /Stock. Quote HTTP/1. 1 Host: www. stockquoteserver. com Content-Type: text/xml; charset="utf-8" Content-Length: nnnn Standard HTTP SOAPAction: "Some-URI#Get. Last. Trade. Price" <SOAP: Envelope xmlns: SOAP="http: //schemas. xmlsoap. org/soap"> <SOAP: Body> <m: Get. Last. Trade. Price xmlns: m="Some-URI"> <symbol>DIS</symbol> </m: Get. Last. Trade. Price> </SOAP: Body> </SOAP: Envelope>
La réponse u HTTP/1. 1 200 OK Content-Type: text/xml; charset="utf-8" Content-Length: nnnn Standard HTTP <SOAP: Envelope xmlns: SOAP="http: //schemas. xmlsoap. org/soap"/> <SOAP: Body> <m: Get. Last. Trade. Price. Response xmlns: m="Some-URI"> <Price>34. 5</Price> </m: Get. Last. Trade. Price. Response> </SOAP: Body> </SOAP: Envelope>
Bilan SOAP u Protocole d’invocation de services Web l l l Lisible et extensible Intégré à HTTP Passant les firewalls Description en WSDL Pousser par Microsoft, IBM, Ariba u CORBA ou DCOM « killer » ? l l l Associé à nomination des objets Véritable échange de messages entre objets Performance ?
4. Stratégie des constructeurs u. Outil de développement. NET l l . net Framework SDK (//msdn. microsoft. com/webservices) Support depuis Visual Studio. Net Développement en tout langage (VB, C++, C#) Deux composants essentiels u. Common Language Runtime (MSIL) u. net class Libraries (GUI, DB, ASP, …) u. Au cœur des systèmes MS l l Evolution de DNA vers. net, Visual Studio. net, … Compilation des langages MS en MSIL Machine virtuelle pour l'exécution Semblable à Java mais MS
Architecture. NET VB SOAP & XML C++ ASP. NET C# BCL. NET JScript ADO. NET Toolkits Common Language Runtime (CLR) Windows et COM+ Services Stratégie … Visual Studio. NET
Exemples d'applications u. MS Office (Word, Excel, Power Point, …) l l Services = composants distribués Accès par abonnement u. Hail. Storm devenu. net My. Services l Communication par SOAP ue-Commerce et eb. XML l l l Intégration de protocoles de e-commerce Complément de UDDI pour le e-commerce Remplacement de l'EDI traditionnelle EDIFACT
Exemple: Google u. Search requests l Soumet une requête avec un ensemble de paramètres à Google Web APIs service et reçoit en réponse un ensemble de résultats de recherche. u. Cache requests l Soumet une URL à Google Web APIs service et reçoit en réponse le contenu de l'URL lors de la dernière visite du crawler Google. u. Spelling requests l Soumet une requête à Google Web APIs service et reçoit en réponse une suggestion de correction orthographique pour la requête.
Statégie J 2 EE de SUN, IBM, … u. J 2 EE l Ensemble d'API pour Java 2 u. Intégration de RPC, SOAP, WSDL, … l l l API spécialisée pour Java-XML (JAX) Java API for XML Processing (JAXP) Java Architecture for XML Binding (JAXB) Java API for XML Messaging (JAXM) Java API for XML-based RPC (JAX-RPC) Java API for XML Registries (JAXR)
Produits u. Apache SOAP (Apache project) l l Servlet permet de déployer les services Appel servlet depuis SOAP u. Web Services Toolkit (IBM, alpha. Works) l l Générateur WSDL à partir de classe Java ou EJB Générateur de Proxy client Java u. Sun. One l l Produit similaire de SUN annoncé Version béta en démonstration u. Autres l BEA, Broadvision, etc.
Architectures inter-opérables HTML Serveur de présentation Visual studio XML WEB Service WEB SERVICES. NET XML Java, C++, C#, Word, Excel, … … WEB SERVICES J 2 EE
5. Transactions et Processus u Objectifs l l l Modéliser des processus d'affaires / métiers Composer des services Web distribués Intégrer u. Orchestration d'activités u. Echanges XML u. Gestion de transactions l Business Process Management u. Transaction u. Workflow u Exemple : réservation Début Réserver Hotel OK ? oui non Echec Réserver Avion OK ? oui non Louer Voiture OK ? oui Succès Réserver Train oui non OK ? Echec non Echec
Exemple : Pilotage Fabrication Echange B 2 B Partenaire Serveur d'entreprise XML Usine XML WEB XML Interface XML ERP XML Mainframe Client Fournisseur
Architecture Web Services Négociation Assemblage et Orchestration Publication et Découverte WSDL, UDDI Echange de Messages SOAP Protocoles de Transport HTTP, HTTPS, FTP, SMTP Besoins Business
Pile de travail W 3 C
Support de transactions u Transaction simple l l Atomique Cohérente Isolée Durable u Saga T 2 T 1 T 2 l l T 3 CT 2 Tn . . . CT 1 Séquence de transactions Compensations si échec
Définitions u. Composition de services (Services Composition) l Techniques permettant d'assembler des services Web pour réaliser des processus métiers par des primitives de contrôles (boucles, tests, traitement d'exception, etc. ) et d'échanges (envoi et réception de messages).
Modélisation par Workflow u Définition de processus l l commande. Vacances Interface implémentation u Flux d'activités et de messages l reserver. Avion 1 e= reserver. Voiture ss la /c de <activity name="demande. Paiement"> <join condition=”(reserver. Voiture OR reserver. Avion) AND reserver. Hotel” when=”deferred”> </activity> an l Langage d'orchestration Chorégraphie Commande/classe=2 m l m u Modélisation en XML Commande/Partie 2 Co l Contrôle Données reserver. Vacances reserver. Hotel Commande/partie 1+partie 2 demande. Paiement
De multiples propositions u WSFL l Langage de workflow d'IBM u Xlang l Langage d'orchestration de Microsoft (Biz. Talk) u BPML l Workflow et orchestration de BPM. org u BPSS l Orienté B 2 B de eb. XML u BPEL l l l Proposition commune de IBM, Microsoft et BEA Fusion WSFL et Xlang Intégration aux Web Services
Vers un véritable standard ? u Trop de "standards" tue le standard u Il y a aussi BPSS de eb. XML u Initiative commune Microsoft, IBM et BEA l BPEL (Business Process Execution Language for Web Services) u Création de groupes au W 3 C l l WS-Choregraphy WS-Transaction u Les implémentations sont déjà là l l Intalio (BPML), Biz. Talk Server (XLang), Web. Sphere (WSFL), . . .
6. En résumé. . . u Invocation dynamique de services WEB décrits en WSDL u SOAP est le protocole d'invocation (WP) sur HTTP ou autre u Intégrité et typage des données (schémas XML) u Possibilité de découvrir dynamiquement les services (UDDI) u Lisibilité et sécurité renforcée (standard de cryptage) u Indépendance des constructeurs (W 3 C) u Intégration des transactions, des workflows et de la sécurité en cours
- Slides: 45