Web Services Objectifs Architecture Protocole web (SOAP) Composition de services web Position du marché Conclusion 1
1. Besoins des Applications Web Le Web classique Conçu pour les applications à interactions humaines Partage d'information E-commerce de type B2C Extensions nécessaires Accès à l'information depuis des programmes Processus de e-commerce B2B automatisés Accès par le Web à des applications existantes Interopérabilité entre applications Introduction 2 2
Principes des services Web Proposer une plate-forme de traitement distribuée autour d'internet/intranet Permettre l'interopérabilité totale entre composants Offrir un modèle de composants simple Modules avec interfaces de fonctions Paramètres structurés et diversifiés en place des URL longues contraignantes (ASCII, plats, 4K) Permettre de découvrir dynamiquement les services Annuaire de services et service de recherche Offrir des outils d'intégration de composants A l'échelle de l'internet ou de l'intranet Introduction 3 3
Exemple d'applications Diffusion d'information horaires, incidents, états de stocks cours de bourse, entrées d'annuaires, etc. Contrôle d'information autorisation de cartes de crédits authentification d'un client Mise à jour de logiciels Documentation automatique présentation, marketing, veille technologique librairie électronique, manuels, maintenance, etc. communication et "knowledge management" Commerce électronique présentation, sélection, transaction, médiation, etc. Introduction 4 4
2. Architecture Web Services SERVEUR Service Provider SERVEUR Request Service Provider Publish Publish SERVEUR Service Provider Publish Request Service Registry SERVEUR Publish Request Find SERVEUR Service Provider Request WEB-HTTP Service Requester CLIENT Architecture 5 5
Qu'est ce qu'un Web Service? Définition [W3C] Un Web service est un composant logiciel identifié par une URI, dont les interfaces publiques sont définies et appelées en XML. Sa définition peut être découverte par d'autres systèmes logiciels. Les services Web peuvent interagir entre eux d'une manière prescrite par leurs définitions, en utilisant des messages XML portés par les protocoles Internet. Exposition Langage WSDL utilisé pour décrire le service Similaire à IDL mais basé sur XML Activation Protocole Web au-dessus de HTTP (RPC XML, SOAP) Autres protocoles possibles Architecture 6 6
Les Composants Service Provider (Fournisseur de service) Application s'exécutant sur un serveur et comportant un module logiciel accessible par IxxNet en XML Service Registry (Annuaires de service) Annuaire des services publiés par les providers (UDDI) Géré sur un serveur niveau application, entreprise ou mondial Service Requester (Demandeur de service) Application cliente se liant à un service et invoquant ses fonctions par des messages XML (SOAP) Architecture 7 7
Vue d'ensemble Application Interface client Find? UDDI Description of providers and services Category Provider WSDL Service Publication XML Service Call Service Provider SOAP Transport HTTP/S SOAP Transport Interface Service Architecture 8 8
Description des services: WSDL Elément Type Types des paramètres (schéma XML) Elément Message Appel et retour d'opération Elément Port type Groupe d'opération Elément Binding URL de l'opération Type de protocole Port (e.g. http://host/svc) Binding (e.g. SOAP) Service porttype operation(s) inmessage Port Binding outmessage Abstract interface Architecture 9 9
Description en WSDL <definitions name = "..." xmlns: > <types> <!--Définition des types de données; basés sur ceux des schémas --> </types> <message> <!--Déclaration des messages (entrées et sorties)--> </message> <porttype> <!--Déclaration des opérations (par association des messages)--> </porttype> <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> Architecture 10 10
Exemple: GetLastTradePrice <?xml version="1.0"?> <definitions name="stockquote"> <types> <schema> <element name="tradepricerequest"> <complextype> <all> <element name="tickersymbol" type="string"/> </all> </complextype> </element> <element name="tradeprice"> <complextype> <all> <element name="price" type="float"/> </all> </complextype> </element> </schema> </types> <message name="getlasttradepriceinput"> <part name="body" element="xsd1:tradepricerequest"/> </message> <message name="getlasttradepriceoutput"> <part name="body" element="xsd1:tradeprice"/> </message> <porttype name="stockquoteporttype"> <operation name="getlasttradeprice"> <input message="tns:getlasttradepriceinput"/> <output message="tns:getlasttradepriceoutput"/> </operation> </porttype> <binding name="stockquotesoapbinding" type="tns:stockquoteporttype"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="getlasttradeprice"> <soap:operation soapaction="http://example.com/getlasttradeprice"/> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> </operation> </binding> <service name="stockquoteservice"> <documentation>my first service</documentation> <port name="stockquoteport" binding="tns:stockquotebinding"> <soap:address location="http://example.com/stockquote"/> </port> </service> </definitions> Architecture 11 11
Annuaire des services: UDDI Annuaire UDDI Dde de Service Gérant de requêtes Programme Enveloppe + Document Annuaire UDDI Universal Description, Discovery and Integration Annuaire des services décrit par un document WSDL, spec. EJB, autre Accessible en SOAP Fonctions Enregistrer votre société Enregistrer des services Enregistrer des opérations Découvrir des services Architecture 12 12
Contenu de l annuaire Pages blanches (businessentity) BusinessKey Name Description CategoryBag BusinessServices Pages jaunes (businessservice) ServiceKey BusinessKey Name Description CategoryBag BindingTemplates Pages vertes (bindingtemplates) BindinKey ServiceKey Description AccessPoint Architecture Contenu défini par un schéma XML Spécifications pour réplication 13 BusinessEntity publisherassertion Relations entre deux parties BusinessService tmodel Spécifs de services et taxonomies BindingTemplates Infos techniques 13
Principaux fournisseurs IBM UDDI Registry Un registre UDDI avec des fonctionnalités de recherche www-3.ibm.com/services/uddi/ Microsoft UDDI Business Registry (UBR) uddi.microsoft.com/default.aspx SAP UDDI Business Registry Public pour l'instant Systinet Registry Support complet de UDDI V3 www.systinet.com/products/sr/overview Oracle Application Server UDDI Registry otn.oracle.com/tech/webservices/htdocs/uddi/ Architecture 14 14
Client Web de Recherche Architecture 15 15
3. SOAP Inspiré du RPC DCE adapté à XML Appel de procédure distante sur Internet Appelant Appelant Stub ou Proxy Skeleton ou Listener Appelé Souche Réseau d'interconnexion Souche Appelé SOAP 16 16
Qu'est-ce-que SOAP? Simple Object Access Protocol Ni simple, ni objet Invocations de fonctions en XML au-dessus de HTTP : Pour accéder services, objets et serveurs Indépendant de toute plate-forme Codage universel XML par opposition aux spécifiques : DCOM - DCE/NDR CORBA - IIOP/CDR JAVA - RMI/JRMP RDA - XDR Résolution des problèmes de session, sécurité, transaction Associé à WSDL pour publication d'interfaces SOAP 17 17
Un échange type Port de connexion (URL) Procuration d'interface Pare-feu Messages SOAP Pare-feu Appel Translateur SOAP Application Cliente HTTP RPC Réponse local Parser XML Parser XML Serveur d'application CLIENT SERVEUR SOAP 18 18
Eléments d'un message Envelope Élément pouvant contenir des déclarations d'espaces de noms ou des sous-éléments Header Élément optionnel fils de Envelope Permet des extensions telles que authentification, session, etc. Body É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 SOAP 19 19
Structure d'un message Protocol Headers Entête de protocoles (HTTP, SMTP, ) SOAP Envelope SOAP Header <Envelope> <Header> <Body> SOAP Body SOAP 20 20
Exemple www.stockquoteserver.com float GetLastTradePrice (Symbol) Le dialogue : Application Interface SOAP HTTP www.xquark.org SOAP Request Reply Error Application Interface SOAP HTTP www.stockquoteserver.com SOAP 21 21
La requête POST /StockQuote HTTP/1.1 Host: www.stockquoteserver.com Content-Type: text/xml; charset="utf-8" Content-Length: nnnn Standard HTTP SOAPAction: "Some-URI#GetLastTradePrice" <SOAP:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap"> <SOAP:Body> <m:getlasttradeprice xmlns:m="some-uri"> <symbol>dis</symbol> </m:getlasttradeprice> </SOAP:Body> </SOAP:Envelope> SOAP 22 22
La réponse 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:getlasttradepriceresponse xmlns:m="some-uri"> <Price>34.5</Price> </m:getlasttradepriceresponse> </SOAP:Body> </SOAP:Envelope> SOAP 23 23
Exemple: Google Search requests 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. Cache requests 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. Spelling requests Soumet une requête à Google Web APIs service et reçoit en réponse une suggestion de correction orthographique pour la requête. SOAP 24 24
Bilan SOAP Protocole d invocation de services Web Lisible et extensible Au-dessus de HTTP Description en WSDL Possibilité d attachements MIME (PDF, GIF, BIN, ) Pousser par Microsoft, IBM, BEA, CORBA ou DCOM «killer»? Associé à nomination des objets Véritable échange de messages entre objets Performance? Questions? SOAP 25 25
4. Composition de Services Web Objectifs Modéliser des processus métiers (business process) Exemple : réservation Début Composer des services Web distribués Piloter l'exécution Orchestration d'activités Echanges XML Gestion de transactions Business Process Management Workflow Transaction et Saga Réserver Hotel OK? oui Réserver Avion OK? oui Louer Voiture OK? oui Succès non non non Echec oui Réserver Train OK? Echec non Echec BPM 26 26
Exemple : Pilotage Fabrication Echange B2B Partenaire Serveur d'entreprise XML XML Usine XML Interface XML WEB XML XML ERP Fournisseur BPM Mainframe 27 Client 27
Les briques à standardiser Choreography - CDL4WS Orchestration - BPEL4WS Business Processes Transactions Management WS-Messaging WS-Security UDDI WSDL Notifications Quality Quality of Service Discovery Description SOAP XML Message HTTP, IIOP, JMS, SMTP Transport BPM 28 28
Composition de services Objectifs: Alliances entre business pour offrir des services intégrés à valeur ajoutée en combinant des services existants Réutilisation et extension de services existants Support pour la planification, la définition et l'implémentation de services composés Développement d'applications distribuées composées de services web BPM 29 29
Quelques définitions Processus métier (Business Process) Module fonctionnel réalisé par enchaînement d'activités business exécutées par des acteurs échangeant des messages et implémentant des objets et règles spécifiques à une entreprise. Orchestration d'activité (Activity Orchestration) Mécanisme d'invocation, de contrôle et de coordination des activités participant à la réalisation de processus métier. Composition de services (Services Composition) 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). BPM 30 30
Modélisation par Workflow Graphe acyclique d'activités modélisant un processus métier Les liens de contrôle définissent le flux d'exécution [ WS] Les activités représentent les unités de traitement Les activités correspondent à des services Web BPM Les liens de données définissent le flux d'information. 31 Les activités peuvent être d'autres business process 31
Composition d activités simples et complexes Description du flux d activité en XML Receive <PO> <sequence> Invoke <InventoryService> Invoke <CreditService> <flow> Reply <Invoice> </sequence> BPM 32 32
Vers un standard XML BPML (Intallio et al) BPSS (ebxml) WSCI (Sun et al) WS-Choreography (W3C) 2000/05 2001/03 2001/05 2001/06 2002/03 2002/06 2002/08 2003/01 2003/04 XLang (Microsoft) WSFL (IBM) WSCL (HP) BPEL4WS 1.0 (IBM, Microsoft) BPEL4WS 1.1 (OASIS) BPM 33 33
BPEL: Structure d un Business Process <process> <! Definition and roles des participants --> <partnerlinks>... </partnerlinks> <!- Données utilisées dans le process --> <variables>... </variables> <!- Propriétés permettant les conversations --> <correlationsets>... </correlationsets> <!- Gestion des exception --> <faulthandlers>... </faulthandlers> <!- Traitement des erreurs --> <compensationhandlers>... </compensationhandlers> <!- Gestion des compensations --> <eventhandlers>... </eventhandlers> <!- Workflow d activités --> (activités)* </process> BPM 34 34
BPEL: Business Process composé d'activités Compositions des web services en séquence et parallèle Véritable langage de programmation parallèle codé en XML BPM 35 35
BPEL: Exemple <sequence> <receive partnerlink= customer porttype= lns:purchaseorderpt" operation= sendpurchaseorder variable= PO createinstance="yes" /> <flow> <invoke partnerlink= inventorychecker porttype= lns:inventorypt operation="checkinv" inputvariable="inventoryrequest" outputvariable="inventoryresponse" /> <invoke partnerlink="creditchecker" porttype= lns:creditpt" operation="checkcred" inputvariable="creditrequest" outputvariable="creditresponse" /> </flow>... <reply partnerlink= customer porttype= lns:purchaseorderpt operation= sendpurchaseorder variable= invoice"/> </sequence> BPM 36 36
Bilan Processus Métiers Un domaine chaud Au cœur des architectures SOA Développements de nombreux outils Questions? BPEL s'impose comme un standard de l OASIS Vers trois standards pour la qualité de services WS-Reliable Messaging WS-Transactions WS-Security BPM 37 37
5. Stratégie des constructeurs Au cœur des systèmes Microsoft Evolution de DNA vers.net avec échanges en XML Visual Studio.Net et.net Framework 2.0 SDK Permettent le développement de Web Services Génération de proxy client à partir de WSDL Publication et découverte facilitées en UDDI Utilisable depuis 20 langages de programmation Développement possible de pages ASP comme WS Invocables depuis les outils Office Version open source de.net par Novell: Mono Stratégie 38 38
Architecture.NET VB C++ C# JScript SOAP & XML Toolkits ASP.NET BCL.NET ADO.NET Visual Studio.NET Common Language Runtime (CLR) Windows et COM+ Services Stratégie 39 39
Extensions des Web Services Sécurité, routage et attachements binaires VCF (Windows Communication Framework) Implémentation des standards WS-* de ws-i.org Moteur de workflow de base Stratégie 40 40
Exemple de développement WS en ASP.Net <%@ WebService Language="VB" Class= "StockQuote" %> Imports System Imports System.Web.Services Public Class TempConvert :Inherits WebService <WebMethod()> Public Function GetLastTradePrice (ByVal tickersymbol As String) As Float /* Calcul du prix Price */ Return Price End Function End Class Génération automatique du WSDL et du translateur SOAP Possibilité d appel par client HTTP ou API SOAP générée Stratégie 41 41
Intérêt de la généralisation des WS Applications Partenaires Infrastructure Information Worker Administration et S Sécurit curité Stratégie Unix Linux Infrastructure Web Services Applicative Gestion des Données Infrastructure Système 42 OS390 Outils de d développement AS400 Pattern & Design, ASP.NET Web Matrix, ASP.NET starter kit, Communautés 42
Produits J2EE Apache AXIS (Open Source) Servlet permet de déployer les services Appel servlet depuis SOAP Intégrés aux serveurs d'applications API JAX chez IBM, BEA, Oracle, SUN, Equivalent de.net dans le monde Java (JSP ~ ASP) Nombreux assistants et outils Large support expérimental de BPEL Stratégie 43 43
Java WS Developer Pack (Sun) Boite à outils logiciel gratuite pour construire, tester et déployer les applications Java/XML Supporte les dernières versions des technologies et standards Web Services Avec la dernière version Java WSDP 2.0, les développeurs : Develop and deploy using the latest XML and Web services technologies slated for inclusion into Sun's deployment platforms. Enhance Web services performance without revising WSDL files or application code with the refreshed Fast Infoset features from Java WSDP 1.6. Create XML and Web service-enabled applications that exploit the enhanced security features with enhanced XWSS features. Continue to enjoy Java interoperability and portability across different platforms and devices. Simplify and lower the cost of legacy application integration, data interchange, and publishing in a Web environment. Stratégie 44 44
Architectures inter-opérables HTML Serveur de présentation Visual studio XML XML XML WEB SERVICES.NET Java, C++, C#, Word, Excel, Stratégie WEB SERVICES J2EE 45 45
Position des constructeurs Challengers Leaders Composants métiers appelables par message XML Ability to Execute Fujitsu Niche Players BEA Oracle HP CA Siebel Peoplesoft IBM Sun Novell SAP Visionaries Microsoft Encapsulent les applications existantes Début du développement des architectures SOA Agilité du système d'information Développement des workflows de coopération Completeness of Vision Conclusion 46 46
Exemple d'application: Dollar Rent a Car 6e société US de location 400 sites dans 26 pays, 260 sites US; +75.000 véhicules $750MM de revenu en 2001 Réservation à travers GDS NorthWest Une alternative à GDS: les services Web XML Lien direct avec les partenaires 25 en 2 mois. XML / SOAP Global Distribution Systems Sabre Worldspan Amadeus Galileo $4 XML / SOAP ACMS VaxVMS Conclusion SouthWest 47 Frontal WS Dollar Rent a Car 47
Ligue de Football Professionnel Ligue de Football Professionnel (CA 990M Euros) rebâtit son système de billetterie en.net: Système dimensionné et validé pour 8000 ventes/minutes Un nouveau système qui simplifie le développement de nouveaux canaux/ partenariat : Interopérabilité via Services Web avec les réseaux TicketNet et France Billet Conclusion 48 48
SNCF: Fidélisation clients (CRM) Aujourd'hui, la filiale Chargée de la gestion des programme de fidélité (cartes seniors, 12/25 ans ou grand voyageur) s'appuie sur plus de 30 modules Siebel dont les principaux sont Loyalty, pour la gestion de la fidélité pure, Call Center, Analytics (reporting et tableaux de bords) et Gestion des campagnes marketing. Il dispose d'une douzaine de sites de production dont l'outil interne de fidélisation de la SNCF, auquel il se connecte régulièrement pour mettre à jour ses données. Enfin, deux centres d'appels relaient les besoins clients liés à l'aspect fidélisation. "Après 3 mois de mise en production, nous disposons d'un système qui fonctionne bien. Nous distribuons plus de 30 000 primes par mois, dont 30% par nos services Internet. Nous envoyons nos premiers mailings depuis trois semaines", ajoute Cyril Garnier. A terme, de nouvelles fonctions viendront encore enrichir l'offre de services Web tels le relevé de points à distance, l'achat de cartes, la modification de coordonnées clients ou la transformation des points en réservations. Extrait du JDNET du 07/11/2005 Conclusion 49 49
7. En résumé... Invocation dynamique de services WEB décrits en WSDL SOAP est le protocole d'invocation (WP) sur HTTP Intégrité et typage des données (schémas XML) Possibilité de découvrir dynamiquement les services (UDDI) Lisibilité et sécurité renforcée (standard de cryptage) Indépendance des constructeurs (W3C) Intégration des workflows (BPEL) Ajout de contrôle qualité (transaction, sécurité) Questions? Conclusion 50 50