Introduction Concepts fondamentaux Éléments d’architecture

Slides:



Advertisements
Présentations similaires
Les Web Services Schéma Directeur des Espaces numériques de Travail
Advertisements

Internet et le client- serveur Licence Pro IE Cours Internet / Intranet Le Web HTML Protocoles Le client universel Contenus dynamiques.
XML.
Les Web Services Schéma Directeur des Espaces numériques de Travail
1 SDET – Groupe de travail interopérabilité – 24 Novembre 2003 Thierry CAZENAVE Concepts dorigine et évolutions Le 24 Novembre.
Transformation de documents XML
Xavier Blanc Web Services Xavier Blanc
DTD Sylvain Salvati
Première expérience d’utilisation des Web Services dans SmartTools Didier Parigot Projet OASIS INRIA Sophia www-sop.inria.fr/oasis/SmartTools Journée.
Thème 3 : plate-forme de modélisation et de gestion de référentiels XML étapes modélisation des structures (UML) gestion du référentiel de modélisation.
Les espaces de nommage XML par Philippe Poulard 1
Stéphanie CLAPIÉ Antoine RENARD
Les webservices Samira Silhadi-Hacid Malika Tarafi.
l'impact sur le eBusiness
L’architecture .net et ASP.net
UML - Présentation.
1 Les technologies XML Cours 1 : Les Web Services et Architectures Orientées Services Fé vrier Version 1.0 -
Cours 2 : Les Web Services Concepts Généraux
Les Web Services.
Domaines nominaux XSLT
Nicolas Singer Maître de conférence, université Champollion
TP 3-4 BD21.
Le Workflow et ses outils
Introduction et Concepts : De SGML à XML
Introduction aux services WEB
1 ARCHITECTURE DACCÈS la méthode générale modèle de données définitions module daccès / modules métiers construction des modèles les modules daccès, les.
Cours 3: Base de donnée XML
Etude des Technologies du Web services
XML-Family Web Services Description Language W.S.D.L.
7 - EAI Les EAI : Enterprise Application Integration Marché
Introduction à la structuration des documents: les techniques M2: Gestion des connaissances.
STAF 2X XSL/FO Glaus & Ruckstuhl Mars © Glaus & Ruckstuhl TECFA Programme du 18 et 19 mars Revision XML Introduction à XSL/FO (intérêts et.
An Introduction to distributed applications and ecommerce 1 1 Les services Web, XML et les places de marchés.
Séminaire Service Interoperability on Context Level in Ubiquitous Computing Environments Davide Bazzi IIUF Etude de larticle: Service Interoperability.
J2EE vs .NET Réaliser par : SEIF ENNACER BADRA && CHETOUI RIM.
Langages de requêtes XML
Internet et le client- serveur Licence Pro IE Cours Internet / Intranet Le Web HTML Protocoles Le client universel Contenus dynamiques.
1 Architecture orientée service SOA Architecture orientée service SOA (Service Oriented Architecture)
XML et son usage dans la DMFA
XML-schema. Pourquoi XML-schema Les DTD : Pas de typage, peu de contraintes sur les contenus nombre d'apparitions d'un élément à choisir entre 0 et 1.
1 BDs Orientées Objets Witold LITWIN. 2 Pourquoi ? F Les BDs relationnelles ne sont pas adaptées aux applications CAD/CAM, cartes géo... F le problème.
Le contenu est basé aux transparents du 7 ème édition de «Software Engineering» de Ian Sommerville«Software Engineering» de Ian Sommerville B.Shishedjiev.
Programmation Web : Introduction à XML
Le web service
Mastère Professionnel Systèmes de Communication et Réseaux
Technologies web et web sémantique TP3 - XML. XML eXtensible Markup Language (langage extensible de balisage) – Caractéristiques: méta-langage = un langage.
MJ. Blin et M. CsernelPoleInfo31 XML et ses environnements Documents XML bien formés Prologue Arbre d'éléments Attributs Commentaires Entités internes.
Soutenance du mémoire de synthèse
Module : Langage XML (21h)
Modélisation des documents: DTD et Schéma
1. Introduction 2. DTD 3. Schémas
XSD XML Schema Definition Année universitaire UP web.
Document Type Definition (DTD) Plan 2.1Introduction 2.2Déclaration de Document Type 2.3Déclaration d’élément Type 2.3.1Séquences, Choix, indicateurs d’Occurrence.
eXtensible Markup Language. Généralités sur le XML.
Web Services 17/01/2009.
Introduction à MathML Par Katia Larrivée UQO Le 18 mars 2004.
1 Structure en MC Principes Stockage des données dans la mémoire volatile d’un ordinateur Problèmes Stockage temporaire «Petits» volumes de données Langages.
Présentation TELW M2 Contexte : passage de la matière de M1 en M2 Transformation cours->TDs Sujet plus haut niveau basé : Web Services echanges au format.
Introduction aux technologies des web services en Java EE
SOAP et les RPC XML SOAP WSDL RPC. Rappels sur le XML Langage avec des balises Très lisible Pour stocker des données Séparation entre contenu et présentation.
XML : un métalangage pour la description de documents structurés XML a été défini par le consortium W3 en fonction de 2 objectifs: Compenser les limitations.
Universel Description Discovery and Integration « UDDI «
Modèle à objets et sérialisation Olivier ChamlaFrançois Chastanet.
Le langage XML Documents bien formés Un document XML est dit bien formé lorsque le document est correct sans toutefois posséder une DTD. Le prologue du.
XML Introduction. Langage XML eXtensible Markup Language XML permet de créer des documents Avec des balises propres au document Langage «extensible» Représentant.
DTD - Y. Bekkers - IFSIC1 DTD Document Type Definition Yves Bekkers Mise à jour : 31 mai 2016.
Préparé par : Marouane FELJA
Applications distribuées Introduction Jean-Jacques LE COZ.
Schéma de base de données Présentation. Conception du schéma logique  Transformation du schéma conceptuel en structures de données supportées par les.
20 Données semi-structurées et XML
Transcription de la présentation:

Introduction Concepts fondamentaux Éléments d’architecture Les Services Web Introduction Concepts fondamentaux Éléments d’architecture Université Paris 5 - M2 - 2007

Stratégie d’entreprise Processus, modèles métier Système d’information, applications Infrastructure (serveurs, réseaux…)

L’architecture SOA Architectures orientées services (SOA) : Distribuées A base de composants interopérables Services autonomes et indépendants Accessibles via les technologies de l’Internet Dynamiques, modulaires « Scallables »

Pourquoi les SOA ? Complexité grandissante des infrastructures Réduire le time to market : Promouvoir la réutilisation Réutiliser des services existants Use before buy, buy before build, build for reuse Évolution des interfaces Nouveaux types d’applications (BI, KM…)

Serveurs d’applications Composants Core Business Interfaces Intranet WS Vocal server Web TV Internet Mobile

Un héritage important… CORBA (OMG) protocole IIOP : Multi langages, multi plates-formes, multi vendeurs DCOM (Microsoft) : Multi langages, mono plate-forme, mono vendeur Java RMI (Sun + …) : Mono langage (Java), multi plates-formes DCE (OSF), DCST (MIT)… Principes issus de l’approche Objet Technologies d’interopérabilité issues du Net

Services Web Multi : Format client-serveur contextuel Multi langages Multi plates-formes Multi vendeurs Format client-serveur contextuel Utilisation systématique du langage XML Transport sur HTTP, MOM (JMS), SMTP Spécification indépendante et ouverte (W3C)

Services Web Rien de nouveau au niveau des modèles … et de l’architecture Mais repose sur des standards (Internet, XML…) En devenir pour les couches hautes : Sécurité, workflow, transactions distribuées Processus métier

Caractéristiques des Services Web Accessibles via le Web Exportent une interface publiée en XML (WSDL) Localisables via un annuaire (UDDI…) Échangent des messages XML sur les protocoles classiques du Web Dynamiques : Liens tardifs, répartition dynamique de la charge…

Guerre des standards Enjeux : stratégiques, économiques et financiers… Organismes de normalisation : W3C, OASIS, WS-I, Nations Unies… Initiatives privées : Microsoft, BEA, IBM… Communauté Open Source : Apache AXIS, Open Office…

Schéma général d’architecture XML Encryption, XKMS…) (XML Signature Sécurité Processus métier (BPML, WSFL, XLANG…) (BTP, WS-Transaction…) Transactions Découverte / Localisation (UDDI) Description (WSDL) Echange de messages (SOAP) Transport (HTTP, HTTPR, SMTP, JMS…)

Mise en œuvre Client Service Publication Recherche Annuaire (WSDL, UDDI) Recherche (UDDI) Client Service Lien (XML) Echange de messages (SOAP) Transport (HTTP, HTTPR, SMTP, JMS…)

Exemples de plates-formes Apache AXIS (open source) Microsoft .Net IBM Web Services Architecture (WebSphere) Oracle Dynamic Services Sun ONE, NetBeans… BEA Web Services Architecture (WebLogic) IONA SilverStream, CapeClear…

L’espéranto des SI distribués Le langage XML Concepts fondamentaux Rappels

eXtensible Markup Language Sous-ensemble de SGML Plus généraliste, moins complexe… Orienté « Web » Recommandation du W3C (1996 XML 1.0) A la base de plus de 150 dialectes

XML et ses dialectes dérivés META Parcours Transform. API Interrog. DTD XPath XSL SAX XQL Schémas XLink XSLT DOM XQuery XPointer

Objectifs Utilisation sur le réseau Internet Lisible par un humain Description formelle et concise Support de plusieurs types d’applications Aisément manipulable par des programmes de gestion de contenus Compatibilité avec SGML

Le document XML Règles strictes de construction Document bien formé (well formed) Document valide (valid) Structures logique et physique Physique : structuré autour de la notion d’entités Logique : structuré autour des notions : Déclarations, éléments, commentaires, instructions de traitement…

Structure du document XML Un prologue Des entités imbriquées, structurées hiérarchiquement Un élément racine unique Chaque élément : Nom, attributs (facultatifs) Contenu (des éléments ou du texte) Prologue Prologue

Le contenu d’un document XML Balises (markup tags) : <nom_elem> Attributs : <img src="computer.gif" /> <?xml version="1.0"?> <note> <to importance="haute">D. Seret</to> <from>A. Seigneur</from> <heading>Rappel</heading> <body>Texte…</body> <body>Texte…</body> <body for=“GR” font=“Arial”>Texte…</body> </note>

Les espaces de noms (namespaces) Gérer des proximités sémantiques Éviter les conflits de noms <espace_de_nom:element> <espace_de_nom:element xmlns:espace_de_nom="URI"> Espace de nom implicite <stylesheet xmlns="http://www.w3.org/XSL/Transform/1.0"> <template match="Y"/> </stylesheet>

Valider un document : les DTD Document Type Definition Renforcer la puissance sémantique d’un document Passer d’un document bien formé à un document valide Exemple simpliste de DTD interne : <?xml version="1.0"?> <!DOCTYPE hello SYSTEM "hello.dtd"> <…

Exemple de DTD interne <?xml version=1.0" encoding=UTF-8"?> <!DOCTYPE hello [ <!ELEMENT hello (#PCDATA)> ]> <hello>Bonjour à tous</hello> Si les deux déclarations (internes et externes) sont utilisées, les déclarations internes sont prioritaires

Spécification du nombre d’occurrences Symbole + : au moins une fois Symbole * : facultatif, peut apparaître plusieurs fois Symbole ? : au plus une fois Aucun symbole : une et une seule fois <!ELEMENT elem1 (elem11, (elem12?, elem13)*)>

Déclaration des attributs CDATA : données textuelles sans balises (v1|v2…) : liste de valeurs possibles ENTITY : entité déclarée dans la DTD ENTITIES : liste d’ENTITY ID : identificateur unique IDREF : référence à un ID IDREFS : liste de références à des ID NMTOKEN(S) : nom XML (élément ou attribut) NOTATION : notation déclarée dans la DTD

Déclaration des attributs #REQUIRED : valeur requise #IMPLIED : valeur facultative #FIXED "valeur" : valeur obligatoire et fixée Exemple complet contenant une erreur : <!ATTLIST elem attrib (vrai|faux) #REQUIRED> <!ATTLIST elem attrib (vrai|faux) "faux"> <!ATTLIST elem attrib ID #FIXED="A">

<. DOCTYPE journal [. <. ELEMENT journal (article+)>. < <!DOCTYPE journal [ <!ELEMENT journal (article+)> <!ELEMENT article (titre, chapo, riviere, notes)> <!ELEMENT titre (#PCDATA)> <!ELEMENT chapo (#PCDATA)> <!ELEMENT riviere (#PCDATA)> <!ELEMENT notes (#PCDATA)> <!ATTLIST article auteur CDATA #REQUIRED> <!ATTLIST article editeur CDATA #IMPLIED> <!ATTLIST article date CDATA #IMPLIED> <!ATTLIST article edition CDATA #IMPLIED> <!ENTITY journal "Le Monde"> <!ENTITY editeur "XXX"> <!ENTITY copyright "Copyright 1998 XXX"> ]>

Syntaxe non nativement XML 1.0 Typage faible, non évolutif : Limites des DTD Syntaxe non nativement XML 1.0 Typage faible, non évolutif : 10 types de données (datatypes) Pas de contrainte d’intégrité de domaine "l’élément <hauteur> doit contenir un entier compris dans l’intervalle [0, 12,000]" Incompatibilité avec le typage fort propres aux langages et SGBD

Schémas XML Décrire la structure d’un document et les types de données utilisées (classe -> instance) Structure des instances de documents : Cet élément contient les éléments XXX, lesquels contiennent d’autres éléments… Types de données à associer aux éléments / attributs du modèle de document : Cet élément peut contenir un entier (integer) dans l’intervalle [0, 12 000]

Validation d’un document XML Contrôle syntaxique Suntaxis : ranger ensemble, ensemble des caractères et mots significatifs du langage Rôle et disposition des mots dans une phrase Vocabulaire des DTD : <! & * ? ELEMENT ATTLIST CDATA #REQUIRED #FIXED #IMPLIED… Vocabulaire des schémas : xs:element name xs:complexType xs:simpleType xs:extension base xs;sequence maxOccurs type xs:anyURI…

Validation d’un document XML Contrôle grammatical Règles d’assemblage et d’accord des mots permettant à un langage d’exprimer des idées Les erreurs de grammaire : Ordre du sens d’écriture Contre-sens Fautes d’accord et de logique Utilisation des types et unités de mesure

Validation d’un document XML Contrôle structurel Structure du langage, i.e., poupées russes en XML Contrôle des types de données Dissociation entre nom et type Impossible en XML 1.0 avec les DTD Possible avec les schémas XML Création de types indépendants <xscomplexType name=‘‘t’’> Utilisation des types <xs:element name=‘‘e’’ type=‘‘t’’>

Puissance sémantique des schémas 44 types de données en version 1.0 Création possible de nouveaux types : Extension / restriction de types existants "Le type Heure est basé sur le type string et doit respecter le design-pattern hh-hh, où h représente un chiffre (digit) » Notion d’ensembles d’éléments (pas d’ordre) Syntaxe XML 1.0 native

Puissance sémantique des schémas Permettent de spécifier des contraintes d’unicité : Portant sur le contenu d’un élément Y compris entre portions de documents Permettent de définir des éléments null Permettent de décrire des règles et contraintes de substitution entre éléments

Conversion d’une DTD simple CatalogueLivres en un schéma XML Conversion réalisée en mode « 1 pour 1 » Les éléments Titre, Auteur, Date, ISBN et Editeur contiendront des chaînes de caractères <!DOCTYPE CatalogueLivres [ <!ELEMENT CatalogueLivres (Livre)*> <!ELEMENT Livre (Titre, Auteur, ISBN, Editeur)> <!ELEMENT Titre (#PCDATA)> <!ELEMENT Auteur (#PCDATA)> <!ELEMENT ISBN (#PCDATA)> <!ELEMENT Editeur (#PCDATA)> ]>

Schéma CatalogueLivres Prologue… <?xml version="1.0"?> <xsd:schema xmlns:xsd= "http://www.w3.org/2000/10/XMLSchema" targetNamespace= "http://www.publishing.org" xmlns="http://www.publishing.org" elementFormDefault="qualified">

Schéma CatalogueLivres Déclaration de l’élément racine… <xsd:element name=“CatalogueLivres"> <xsd:complexType> <xsd:sequence> <xsd:element ref=“Livre" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element>

<xsd:element name=“Livre"> <xsd:complexType> <xsd:sequence> <xsd:element ref=“Titre" minOccurs="1" maxOccurs="1"/> <xsd:element ref=“Auteur" minOccurs="1“ maxOccurs="1"/> <xsd:element ref="ISBN" minOccurs="1“ maxOccurs="1"/> <xsd:element ref=“Editeur" minOccurs="1“ maxOccurs="1"/> </xsd:sequence> </xsd:complexType> </xsd:element>

Éléments feuilles et fin de document <xsd:element name=“Titre" type="xsd:string"/> <xsd:element name=“Auteur" type="xsd:string"/> <xsd:element name="ISBN" type="xsd:string"/> <xsd:element name=“Editeur" type="xsd:string"/> </xsd:schema>

<?xml version="1.0"?> <xsd:schema xmlns:xsd="http://www.w3.org/2000/10/XMLSchema" targetNamespace="http://www.publishing.org" xmlns="http://www.publishing.org" elementFormDefault="qualified"> <xsd:element name=“CatalogueLivres"> <xsd:complexType> <xsd:sequence> <xsd:element ref=“Livre" minOccurs="0" …"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name=“Livre"> <xsd:element ref=“Titre" minOccurs="1" maxOccurs="1"/> <xsd:element ref=“Auteur" minOccurs="1" maxOccurs="1"/> <xsd:element ref="ISBN" minOccurs="1" maxOccurs="1"/> <xsd:element ref=“Editeur" minOccurs="1" maxOccurs="1"/> <xsd:element name=“Titre" type="xsd:string"/> <xsd:element name=“Auteur" type="xsd:string"/> <xsd:element name="ISBN" type="xsd:string"/> <xsd:element name=“Editeur" type="xsd:string"/> </xsd:schema> <!ELEMENT CatalogueLivres (Livre)*> <!ELEMENT Livre (Titre, Auteur, ISBN, Editeur)> <!ELEMENT Titre (#PCDATA)> <!ELEMENT Auteur (#PCDATA)> <!ELEMENT ISBN (#PCDATA)> <!ELEMENT Editeur (#PCDATA)>

Typage fort Les schémas XML permettent de définir des types de données complexes <xs:complexType name=“monType”> <xs:all> <xs:element name=“crea” type=“xs:date”> <xs:element name=“maj” type=“xs:date”> </xs:all> <xs:attribute name=“ URL” type=“xs:anyURI”/> </xs:complexType>

Éléments connecteurs Les éléments connecteurs permettent de décrire l’ordre et la fréquence d’apparition des éléments dans les documents instances <xs:sequence> = même ordre <xs:choice> = ou exclusif <xs:all> = tous les éléments doivent être utilisés, quel que soit leur ordre d’apparition

Exemple un peu plus complexe <xs:element name=“siteWeb”> <xs:complexType> <xs:sequence> <xs:element name=“dataCreation” type=“xs:date”/> <xs:element name =“dateMaj” type=“xs:date”/> </xs:sequence> <xs:attribute name=“URL” type=“xs:anyURI”/> </xs:complexType> </xs:element>

Restriction des types de base Dépend des « facettes » du type de base Exemple: le type string possède six facettes de restriction : pattern enumeration length minLength maxlength whitespace (preserve | replace | collapse)

Exemple de restriction simple <xs:simpleType name="Telephone"> <xsd:restriction base="xs:string"> <xsd:length value=“6"/> <xsd:pattern value="\d{2}-\d{3}"/> </xsd:restriction> </xsd:simpleType>

Exemple de restriction plus complexe <xs:simpleType name=“Couleurs-drap"> <xs:restriction base="xs:string"> <xs:enumeration value=“bleu"/> <xs:enumeration value=“blanc"/> <xs:enumeration value=“rouge"/> </xs:restriction> </xs:simpleType>

SOAP Simple Object Access Protocol

SOAP 1.2 Standard du W3C (origine : Microsoft) Protocole d’échange de messages Véhicule du contenu au format XML Analogue à un protocole d’objets distribués Plusieurs éléments dans la spéc. : Enveloppe SOAP = représentation des msg Implémentation des échanges au dessus d’un protocole Internet (binding) Implémentation native en HTTP Modèle de données en XML (encoding)

SOAP : en route vers la maturité Évolution rapide du standard Ancêtre : XML-RPC (www.xmlrpc.com/spec) SOAP 1.1 en mai 2000 (www.w3.org/…) Modèle de données supportant les entiers, réels, booléens, chaînes et dates Structures, tableaux, listes, pointeurs Un protocole basique : POST HTTP SOAP 1.2 en décembre 2002 Modularité et abstraction Séparation modèle de données de représentation en XML

Est-ce utile de connaître SOAP ? NON : Les API et outils le font pour nous Qui maîtrise parfaitement TCP-IP ? OUI : Savoir lire les messages permet de déboguer les applications Pour comprendre l’implémentation profonde d’un Service Web, un exemple d’interaction SOAP est très parlant

Messages SOAP Transmission unidirectionnelle (émetteur vers récepteur) Notion de routage : un message passe éventuellement par des récepteurs intermédiaires qui peuvent modifier son contenu Format prévoit des messages dédiés à la gestion des erreurs

Codage XML Espace de noms spécifique (préfixe env) http://schemas.xmlsoap.org/sopa/envelope/ Élément racine : env:Envelope En-tête : env:Header Corps : env:Body Envelope SOAP Header Header Field Header Field SOAP Body Body Field Body Field

En-tête SOAP Optionnel Plusieurs entrées dont le format n’est pas spécifié par la norme Chaque entrée doit définir son espace de noms Permet d’étendre les mécanismes de base fournis pas SOAP (par exemple, WS-Security, WS-RP) Attributs facilitant le traitement des entrées Exemple : env:mustUnderstand 1 (true en SOAP 1.2) = le récepteur du message doit comprendre l’entrée désignée 0 = élément optionnel pour l’application réceptrice

Modèle de données SOAP propose un encoding au format XML de son modèle de données L’utilisation de cette traduction est facultative Mais il faut impérativement que l’émetteur et le récepteur exploitent la même traduction L’encoding XML s’appuie sur les schémas du W3C, étendus avec la notion de type composé <element name=‘‘llivre’’><complexType> <element name=‘‘auteur’’ type=‘‘xsd:string’’> <element name=‘‘titre’’ type=‘‘xsd:string’’> </complexType></element>

Le modèle RPC L’appel d’une fonction (opération dans la terminologie WS) est décrite par un msg SOAP particulier Appel représenté par une struc (structure) : Nom = nom de la fonction Paramètre = champ de la structure Résultat représenté dans une structure 3 modes de passage des paramètres In : utilisé mais non modifié (appel seulement) In/out : utilisé et modifié (appel et réponse) Out : retour uniquement (réponse)

Exemple de requête HTTP POST ListeDUs HTTP/1.1 Host: www.p5server.com Content-Type: text/html; charset=‘‘utf-8’’ Content-Length: 1250 SOAPAction: ‘‘monAction’’ <SOAP-ENV:Envelope xmlns:SOAP-ENV=‘‘http://schemas…> <SOAP-ENV:Body> <p5:GetAllDUs xmlns:m=‘‘…’’> <symbol>MINT</symbol> </p5:GetAllDUs> </SOAP-ENV:Body> </SOAP-ENV:Envelope>

Exemple de réponse HTTP/1.1 200 OK Content-Type: text/html; charset=‘‘utf-8’’ Content-Length: 1250 <SOAP-ENV:Envelope xmlns:SOAP-ENV=‘‘http://schemas…> <SOAP-ENV:Body> <p5:GetAllDUs xmlns:m=‘‘…’’> <DU>XML</DU> <DU>Gestion de Projets</DU> <DU>J2ME</DU> <DU>Services Web</DU> </p5:GetAllDUs> </SOAP-ENV:Body> </SOAP-ENV:Envelope>

Pour ou contre SOAP ? Contre : Pour : Très volumineux et verbeux 10 fois plus gourmand qu’un appel binaire Protocole HTTP déconnecté peu adapté Ne couvre pas tout (garbage, regroupement de messages, passages par référence…) Pour : Réelle interopérabilité (Windows, Unix…) Souplesse (HTTP, SMTP…) Extensibilité native

WSDL Web Services Description Language

WSDL Standard du W3C (origine Ariba, IBM, Microsoft) Langage XML permettant de décrire les services Ensemble d’opérations et de messages abstraits reliés (bind) à des protocoles et des serveurs réseaux Rôle semblable à l’Interface Definition Language (IDL) de CORBA Description du service indépendante du langage et de la plate-forme de production

Vocabulaire WSDL Vocabulaire : <types> : définition des types utilisés <message> : Noms et types d’un ensembles de champs (paramètres d’un appel, valeur de retour…) <porttype> : Ensemble d’opérations (<=1 msg en entrée, n messages en sortie) <binding> : Liaison entre un <porttype> et un protocole (SOAP, HTTP, MIME…) <port> : Point d’entrée comme combinaison d’un <binding> et d’une adresse sur le réseau <service> : Collection de points d’entrée

Document WSDL Un espace de noms : http://schemas.xmlsoap.org/wsdl/ Préfixe : wsdl Elément racine : wsdl:definitions Enfants : wsdl:types (*) : les types de données wsdl:messages (*) : les messages échangés wsdl:porttype (*) : opérations wsdl:binding (*) : bindings wsdl:service (*) : Services Web

WSDL : <types> <types> <xsd:complexType name=‘‘livre’’> <xsd:element name=‘‘auteur’’ type=‘‘xsd:string’’/> <xsd:element name=‘‘titre’’ type=‘‘xsd:string’’/> <xsd:element name=‘‘date’’ type=‘‘xsd:date’’/> <xsd:complexType> </types> Possibilité de définition de types faisant référence à de nouveaux types

WSDL : <message> <message name=‘‘CreerDUrequest’’> <part name=‘‘nom’’ type=‘‘xsd:string’’/> <part name=‘‘responsable’’ type=‘‘xsd:string’’/> <part name=‘‘niveau’’ type=‘‘xsd:int’’/> </message> <message name=‘‘CreerDUresponse’’> <part name=‘‘acceptation’’ type=‘‘xsd:string’’/> </message> <message name=‘‘AssocierSupport’’> <part name=‘‘support’’ type=‘‘typens:livre’’/> </message>

WSDL : <porttype> Types d’opérations supportées : One-Way : le point d’entrée reçoit un message <input> Request-response : Le point d’entrée reçoit un message <input> et retourne un message corrélé <output> Solicit-response : Le point d’entrée envoie un message <output> et reçoit un message corrélé <input> Notification : Le point d’entrée envoie un message de notification <output> Les champs des messages constituent les paramètres (in, out, inout) des opérations

WSDL : <porttype> <portType name=‘‘GestionDU’’> <!-- One-way --> <operation name=‘‘AssociationSupport’’> <input message=‘‘AssocierSupport’’/> </operation> <!-- Request-reponse ->> <operation name=‘‘CreationDU> <input message=‘‘CreerDUrequest’’/> <output message=‘‘CreerDUresponse’’/> </message> </porttype>

WSDL : <binding> Exemple de binding sur HTTP <binding name=‘‘GestionDUBinding’’ type=‘‘GestionDU’’ <soap:binding style=‘‘rpc’’ transport=‘‘http://schemas.xmlsoap.org/soap/http’’/> <operation name=‘‘creationDU’’> <soap:operation soapAction=‘‘’’/> <input><soap:body use=‘‘encoded’’…/></input> <output><soap:body use=‘‘encoded’’…/></output> </operation> <operation name=‘‘… > </operation> </binding>

WSDL : <service> Exemple de déclaration de service <?xml version= ‘‘1.0’’ ?> <definitions name=‘‘localName’’…> <service name=‘‘GestionDUService’’> <port name=‘‘creationDU’’ binding=‘‘GestionDUBinding’’> <soap:address location=‘‘http://www.p5.com/soapservlet/rpcrouter’’/> </port> </service> </definitions>

Génération du code WSDL Tous les environnements de développement orientés SOA proposent des générateurs de code WSDL : A partir de modèles de déploiement, de source EJB… Parfois nécessaire de retoucher le code généré Attention à ne pas perdre la traçabilité ! Ces environnements proposent également des générateurs de squelettes de code permettant d’exploiter des WS à partir de contrats WSDL (exemple : Axis WSDL2Java)

Un langage plutôt verbeux… Comme SOAP, WSDL parle beaucoup pour dire peu de choses… Exemple, l’API du WS proposé par Amazon.com : 1 150 lignes de code WSDL Pour 23 opérations (34 lignes de code Java) Engendre 12 000 lignes de code Java avec WSDL2Java d’Axis, dont l’essentiel décrit les types et leur correspondance en Java)

UDDI Universal Description, Discovery and Integration

Pourquoi UDDI ? Origine : Ariba, IBM, Microsoft + 260 sociétés Créer un annuaire mondial de Services Web afin d’automatiser les communications entre sociétés tierces Fournir un identifiant unique et une description détaillée des composants (WSDL) UDDI définit un modèle de données (XML) et des interfaces SOAP pour l’enregistrement et la localisation des WS

Principes opérationnels ISV Comité de standardisation … Places de marché Moteurs de recherche Entreprises … Interrogation de l’annuaire UDDI Définition des types de services et modèles de données UDDI Types de services WSDL White pages Services Yellow pages Green pages Enregistrement des Services proposées Fournisseurs de Services Web Assemblage des services, consommation Des services à travers le réseau Internet

Principes opérationnels Pages blanches : Nom du fournisseur, contacts (noms, téléphones, sites web…), identifiant Pages jaunes : Catégories d’entreprises (classification, taxonomie) Industrie, Produits/Services, localisation Pages vertes : Informations métier et techniques sur les services : Processus métier, description, information de binding…

API SOAP Recherche : Recherche détaillée : Publication : Sécurité : find_business, find_service, find_binding… Recherche détaillée : get_businessDetail, get_serviceDetail… Publication : save_business, save_service, save_binding… Sécurité : get_authToken, discard_authToken…

Principes opérationnels UDDI Types de services WSDL Publication White pages Services Yellow pages Green pages WS 1 Rechercher WSDL WS 2 Appli. cliente Bind + appels métier Stub WS 3 Client

Une architecture en devenir

Gérer la sécurité Confidentialité : Autorisation et authentification XML Encryption (W3C) – chiffrement WS-Security SSL Autorisation et authentification Intégrité (ACIDité) Non répudiation : XML Signature (W3C) SOAP SecExt (digital signature W3C)

Gérer les transactions Business Transaction (BT) : Transactions longues, multi-acteurs Gestion des incidents, interruptions, erreurs… Support de services transactionnels plus complexes que ceux fournis par les moniteurs transactionnels Résignation Gestion de timeout Processus discontinues

Gérer les transactions Plusieurs protocoles et propositions : Oasis BTP (consortium) Protocole XML d’orchestration de TP longues, mode B2B UN 2PC flexible WS-T (Microsoft, IBM et BEA) S’appuie sur le protocole WS-Coordination Pourrait remplacer BTP

Gestion des processus métier Cœur de l’activité d’une entreprise (modèle analytique issu de la théorie du signal) Il convient de les : Modéliser, Informatiser, Piloter, Administrer Tel est le rôle du BPM – Business Process Management

XLANG, WSFL, BPML… De nouveaux standards pour un langage formel de définition des processus métier Description formelle des modèles comportementaux Rester indépendant des modèles d’implémentation Prendre en charge les contraintes : Temps d’exécution longs (dépassant les frontièrs de l’entreprise) Gestion des erreurs et des exceptions

XLANG Origine : Microsoft Langage (XML) utilisé pour la description des processus dans BizTalk Server Forts liens avec WSDL : Processus XLANG = assemblage de WS, orchestrées (connecteurs Sequence, Switch, All, While…) Service XLANG = service WSDL + extension décrivant le comportement du processus (échanges successifs de messages)

WSFL Web Services Flow Language Origine : IBM Langage (XML) utilisé pour la description des processus dans MQSeries et WebSphere Forts liens avec WSDL Très proches de XLANG Mais extensions intéressantes : Modèles de transformation des données Détermination dynamique des participants

BPML Business Process Management Language Origine : BPMI.org Dialecte XML de description de processus Processus = flux de messages entre participants Applications, utilisateurs, WS… Fonctions étendues : Gestion des transactions (courtes et longues) Gestion des exceptions Nombreux connecteurs d’orchestration Transformation des données

Conclusion

Une architecture en devenir - points forts Un modèle d’architecture prometteur Des fondements solides, déjà bien normalisés (XML, Schémas, SOAP, WSDL, UDDI) Une volonté marquée d’ouverture et d’indépendance technique Forte montée en puissance des outils pour les éléments fondamentaux

Une architecture en devenir - points faibles De nombreux éléments manquent pour généraliser le déploiement des WS Guerre des standards - BPM, sécurité… Encore trop peu d’outils pour la partie BPM Un problème de taille : intégration des applications existantes (core business) La complexité de l’ensemble pénalise son adoption

Front Office Middle Office Back Office Business Obj Tech Obj XML XML ODBC Call POST/GET Databases 1 HTTP ODBC Response XML Framework Front Services SOAP XML 1 XML 1 HTML Legacy Call Legacy+ XML HTTP Legacy Response 1 XML

Middle Office Back Office Bus Obj MSXML3 Tech Obj Stored Procedures PL/SQL XML Parser Soap Call (XML) COM object COM object ODBC Call 1 ODBC Driver ODBC Response 1 SOAP ENCAPSULATION Oracle DB 1 MSXML3 1 XSLT Pre-Processor Soap Response (XML) COM object COM object OPG OPG XSLT Mainframe