Web Services Xavier Blanc Xavier Blanclip 6 fr

  • Slides: 87
Download presentation
Web Services Xavier Blanc Xavier. Blanc@lip 6. fr

Web Services Xavier Blanc Xavier. [email protected] 6. fr

Plan Principes n XML (Notions) n SOAP n WSDL n UDDI n Axis n

Plan Principes n XML (Notions) n SOAP n WSDL n UDDI n Axis n Conclusion n

Définition Les Web Services sont des services offerts via le web. n Par exemple,

Définition Les Web Services sont des services offerts via le web. n Par exemple, un client demande le prix d’un article en envoyant un message sur le web. Ce message contient la référence de l’article. Le Web Service va recevoir la référence, effectuer le traitement du service et renvoyer le prix au client via un autre message. n

Principes Pourquoi un nouveau middleware

Principes Pourquoi un nouveau middleware

Limitations des middleware Passage à large échelle : Web n Protocoles hétérogènes ¨ IIOP,

Limitations des middleware Passage à large échelle : Web n Protocoles hétérogènes ¨ IIOP, RMI, DCOM ¨ Firewall n Pas d’ouverture des services ¨ Notion de moteur de recherche inexistante n Trop de contraintes sur le client ! ¨ Doit posséder les souches ¨ Difficulté de construire dynamiquement

Limitations des middleware Inconvénients Intrinsèques n Complexité ¨ CORBA : IDL, Mapping, … ¨

Limitations des middleware Inconvénients Intrinsèques n Complexité ¨ CORBA : IDL, Mapping, … ¨ EJB : Container, JNDI, … n Pérennité : remise en question ¨ CORBA, EJB, . Net, … n Prix ¨ Plates-formes ¨ Compétences

Solutions existantes n Modification du Protocole ¨ RMI / IIOP n Passerelles ¨ CORBA

Solutions existantes n Modification du Protocole ¨ RMI / IIOP n Passerelles ¨ CORBA vers DCOM Portage d’applications existantes difficile n Solutions non standards n

Approche Envisagée n Un nouveau Protocole : SOAP ¨ Basé sur XML n Portabilité,

Approche Envisagée n Un nouveau Protocole : SOAP ¨ Basé sur XML n Portabilité, Hétérogénéité ¨ Porté sur des protocoles large échelle existants n HTTP, SMTP, … n Paradigme orienté service : WSDL ¨ Définition de services offerts (en XML) n Découverte automatique des services (dynamicité) : UDDI ¨ Référentiel de Web Service (Pages Jaunes, Vertes, Blanches)

Ex : Mod. Fact Le serveur doit savoir recevoir des messages SOAP (sur HTTP

Ex : Mod. Fact Le serveur doit savoir recevoir des messages SOAP (sur HTTP ou SMTP). Il effectue les traitements correspondant (ici délégation vers CORBA). Les clients doivent savoir envoyer des messages SOAP (sur HTTP ou SMTP) SOAP / HTTP IIOP SOAP / SMTP Application existante classique (ici CORBA) UDDI Utilisation de UDDI pour construire dynamiquement des client Exportation du Web Service dans le référentiel UDDI

SOAP n n n Protocole d’échange de messages (client / serveur) Basé entièrement sur

SOAP n n n Protocole d’échange de messages (client / serveur) Basé entièrement sur XML Standard W 3 C (Initiative IBM et Microsoft) ¨ Actuellement SOAP 1. 1 n Concepts ¨ Message = Enveloppe ( Header + Body ) n Extensibilité ¨ Porté sur HTTP, SMTP, …

WSDL Langage de définition de Web Services n Basé entièrement sur XML n Standard

WSDL Langage de définition de Web Services n Basé entièrement sur XML n Standard W 3 C (Initiative IBM et Microsoft) n ¨ Actuellement WSDL 1. 1 Définition de l’interface, de l’URL et du port du Web Service. n Utilise le système de typage de XML Schéma n

UDDI Référentiel de définitions Web Service n Permet de construire dynamiquement des clients n

UDDI Référentiel de définitions Web Service n Permet de construire dynamiquement des clients n Recommandation OASIS n Référentiel défini lui-même en WSDL n Référentiel Public / Privé n

XML Notions nécessaires pour les Web Services

XML Notions nécessaires pour les Web Services

Exemple de document XML <livre> <titre> le super livre </titre> <chapitre> <numero> 1 </numero>

Exemple de document XML <livre> <titre> le super livre </titre> <chapitre> <numero> 1 </numero> <titre> titre du chapitre 1 </titre> <contenu> blabla </contenu> </chapitre> <chapitre> … </chapitre> </livre>

Principes n Ensemble non fini de balises ¨ L’utilisateur peut créer de nouvelles balises

Principes n Ensemble non fini de balises ¨ L’utilisateur peut créer de nouvelles balises n Définition de grammaires : XML est un Meta-Langage ¨ Math. ML, News. ML, XMI, Doc, Slides, … n Séparation de la forme et du fond ¨ Un document XML peut être constitué de deux entités (le fond et la forme)

Grammaire Deux façons de définir une grammaire XML : n DTD Langage de définition

Grammaire Deux façons de définir une grammaire XML : n DTD Langage de définition de grammaire XML ¨ Largement utilisé ¨ Expression faible (type, structure) ¨ n XML Schéma Langage XML de définition de grammaire XML ¨ De + en + utilisé ¨ Expression puissante (type, structure, héritage) ¨ Un document XML est dit valide lorsqu’il est conforme à une grammaire

Espaces de noms Mécanismes permettant de partitionner les balises XML (permet d’avoir deux fois

Espaces de noms Mécanismes permettant de partitionner les balises XML (permet d’avoir deux fois le même nom de balise) n Un espace de nom est défini dans n’importe quelle balise par l’attribut xmlns et par une URI. n Dans un document XML, un espace de noms est identifié par un nom logique, les balises appartenant à cet espace doivent alors être préfixée par ce nom logique. n Ex : <meta: body xmlns: meta="http: //meta. lip 6. fr/meta/" n

XML est un succès ! n n n Standard W 3 C La syntaxe

XML est un succès ! n n n Standard W 3 C La syntaxe XML ne contient que peu de mot clef: Simplicité XML est indépendant des plates-formes: Portabilité XML est un méta-langage, il est possible de créer ses propres balises: Extensibilité Outils disponibles (et gratuits) Largement utilisé pour les échanges inter-applications

A vous de jouer ! Pouvez-vous définir un document XML qui représente un message

A vous de jouer ! Pouvez-vous définir un document XML qui représente un message Client/Serveur ? n Quelles sont les informations que ce message doit contenir ? n Comment échanger ce message ? n ¨ Quels sont les problèmes soulevés ?

SOAP Simple Object Access Protocol Version 1. 1

SOAP Simple Object Access Protocol Version 1. 1

Abstract n n n SOAP is a lightweight protocol for exchange of information in

Abstract n n n SOAP is a lightweight protocol for exchange of information in a decentralized, distributed environment. It is an XML based protocol that consists of three parts: an envelope that defines a framework for describing what is in a message and how to process it, a set of encoding rules for expressing instances of application-defined datatypes, and a convention for representing remote procedure calls and responses. SOAP can potentially be used in combination with a variety of other protocols; however, the only bindings defined in this document describe how to use SOAP in combination with HTTP and HTTP Extension Framework.

Exemple de message n Stock. Quote est un ensemble de services qui permet d’obtenir

Exemple de message n Stock. Quote est un ensemble de services qui permet d’obtenir des informations sur des actions boursières. ¨ Get. Last. Trade. Price est le service qui permet de connaître la dernière valeur d’une action. n Cet exemple présente un échange de messages entre un client qui veut savoir la valeur de l’action « DIS » .

Exemple de message POST /Stock. Quote HTTP/1. 1 Host: www. stockquoteserver. com Content-Type: text/xml;

Exemple de message POST /Stock. Quote HTTP/1. 1 Host: www. stockquoteserver. com Content-Type: text/xml; charset="utf-8" Content-Length: nnnn SOAPAction: "Some-URI" Propre au portage sur HTTP <SOAP-ENV: Envelope xmlns: SOAP-ENV="http: //schemas. xmlsoap. org/soap/envelope/" SOAPENV: encoding. Style="http: //schemas. xmlsoap. org/soap/encoding/"> <SOAP-ENV: Body> <m: Get. Last. Trade. Price xmlns: m="Some-URI"> <symbol>DIS</symbol> </m: Get. Last. Trade. Price> </SOAP-ENV: Body> </SOAP-ENV: Envelope>

Exemple de message HTTP/1. 1 200 OK Content-Type: text/xml; charset="utf-8" Content-Length: nnnn Propre au

Exemple de message HTTP/1. 1 200 OK Content-Type: text/xml; charset="utf-8" Content-Length: nnnn Propre au portage sur HTTP <SOAP-ENV: Envelope xmlns: SOAP-ENV="http: //schemas. xmlsoap. org/soap/envelope/" SOAPENV: encoding. Style="http: //schemas. xmlsoap. org/soap/encoding/"/> <SOAP-ENV: Body> <m: Get. Last. Trade. Price. Response xmlns: m="Some-URI"> <Price>34. 5</Price> </m: Get. Last. Trade. Price. Response> </SOAP-ENV: Body> </SOAP-ENV: Envelope>

Analyse de l’exemple n Des Balises Utilisateur Get. Last. Trade. Price. Response ¨ Symbol

Analyse de l’exemple n Des Balises Utilisateur Get. Last. Trade. Price. Response ¨ Symbol ¨ Price ¨ n Un Namespace Utilisateur ¨ n xmlns: m="Some-URI" Des Balises SOAP Enveloppe ¨ Body ¨ n Un Namespace SOAP ¨ n xmlns: SOAP-ENV="http: //schemas. xmlsoap. org/soap/envelope/" Des informations dans la partie HTTP

Namespace SOAP n Le namespace des balises SOAP ¨ http: //schemas. xmlsoap. org/soap/envelope n

Namespace SOAP n Le namespace des balises SOAP ¨ http: //schemas. xmlsoap. org/soap/envelope n Le namespace de l’encodage SOAP ¨ http: //schemas. xmlsoap. org/soap/encoding

Framework Structure d’un message SOAP n Un message SOAP est contenu dans une balise

Framework Structure d’un message SOAP n Un message SOAP est contenu dans une balise Envelope ¨ Une Envelope peut contenir une balise Header n ¨ Une Header peut contenir n’importe quel ensemble de balises. Ces balises doivent appartenir à des namespaces. Une Envelope doit contenir une balise Body n n Un Body peut contenir n’importe quelle ensemble de balises. Ces balises peuvent appartenir à des namespaces. Un Body peut contenir des balises Fault qui permettent d’identifier des erreurs.

Framework SOAP Header Mécanisme d’extension du protocol SOAP n La balise Header est optionnelle

Framework SOAP Header Mécanisme d’extension du protocol SOAP n La balise Header est optionnelle n Si la balise Header est présente, elle doit être le premier fils de la balise Envelope n La balise Header contient des entrées n Une entrée est n’importe quelle balise incluse dans un namespace

Framework SOAP Header Example <SOAP-ENV: Header> <t: Transaction xmlns: t="some-URI"> 5 </t: Transaction> </SOAP-ENV:

Framework SOAP Header Example <SOAP-ENV: Header> <t: Transaction xmlns: t="some-URI"> 5 </t: Transaction> </SOAP-ENV: Header>

Framework SOAP Body Le Body contient le message à échanger n La balise Body

Framework SOAP Body Le Body contient le message à échanger n La balise Body est obligatoire n La balise Body doit être le premier fils de la balise Envelope (ou le deuxième si il existe une balise Header) n La balise Body contient des entrées n Une entrée est n’importe quelle balise incluse optionnellement dans un namespace n Une entrée peut être une Fault.

Framework SOAP Fault Balise permettant de signaler des cas d’erreur. n La balise Fault

Framework SOAP Fault Balise permettant de signaler des cas d’erreur. n La balise Fault contient les balises suivantes ¨ faultcode : un code permettant d’identifier le type d’erreur n Client, Server, Version. Mismatch, Must. Understand ¨ faultstring : une explication en langage naturel ¨ faultactor : une information identifier l’initiateur de l’erreur ¨ detail : Définition précise de l’erreur.

Encoding Encodage Un message SOAP contient des données typées. Il faut donc définir un

Encoding Encodage Un message SOAP contient des données typées. Il faut donc définir un moyen d’encoder ces données. n Vocabulaire SOAP : n ¨ Value (valeur d’une donnée) n Simple value (string, integers, etc) n Compound value (array, struct, …) ¨ Type (d’une value) n Simple Type n Compound Type

Encoding Encodage L’encodage c’est la représentation de valeurs sous forme XML. n Le décodage

Encoding Encodage L’encodage c’est la représentation de valeurs sous forme XML. n Le décodage c’est la construction de valeurs à partir d’XML n L’XML qui représente les valeurs a une structure qui dépend du type des valeurs n Il faut donc définir le type n ¨ Soit mécanisme définit par l’utilisateur ¨ Soit utilisation d’XML Schéma (préconisé)

Encoding Simple Types Type (XML Schema) <element name="age" type="int"/> Type XML Schema <element name="color">

Encoding Simple Types Type (XML Schema) <element name="age" type="int"/> Type XML Schema <element name="color"> <simple. Type base="xsd: string"> <enumeration value="Green"/> <enumeration value="Blue"/> </simple. Type> </element> n Valeurs Construction de Type XML Schema <age>45</age> <color>Blue</color> n

Encoding Simple Types La définition d’un XML Schéma pour tout type peut être fastidieux

Encoding Simple Types La définition d’un XML Schéma pour tout type peut être fastidieux n SOAP a défini deux façons de préciser le type d’une valeur sans définir le Schéma XML: n ¨ <SOAP-ENC: int>45</SOAP-ENC: int> ¨ <cost xsi: type="xsd: float">29. 5</cost>

Encoding Compound Types Une structure est un type composé dans lequel les membres sont

Encoding Compound Types Une structure est un type composé dans lequel les membres sont accessibles uniquement grâce à des noms différents. n Un tableau est un type composé dans lequel les membres sont accessibles uniquement grâce à leur position. n

Encoding Struct Type (XML Schéma) <element name="Person"> <complex. Type> <element name="name" type="xsd: string"/> <element

Encoding Struct Type (XML Schéma) <element name="Person"> <complex. Type> <element name="name" type="xsd: string"/> <element name="age" type="xsd: int"/> </complex. Type> <element> n Valeur <Person> <name>Xavier</name> <age>30</age> </Person> n

Encoding Array Le type est directement précisé grâce aux balises SOAP: <my. Favorite. Numbers

Encoding Array Le type est directement précisé grâce aux balises SOAP: <my. Favorite. Numbers SOAPENC: array. Type="xsd: int[2] "> <SOAP-ENC: int>3</SOAP-ENC: int> <SOAP-ENC: int>4</SOAP-ENC: int> </my. Favorite. Numbers> n

Convention SOAP avec HTTP n SOAP peut être facilement porté sur Http. ¨ Convient

Convention SOAP avec HTTP n SOAP peut être facilement porté sur Http. ¨ Convient au mode Request/Response de Http ¨ Le message SOAP est mis dans une requête POST avec un content-type text/xml ¨ Définition d’un header http : SOAPAction ¨ Utilisation des codes http (2 xx, 4 xx, 5 xx)

Convention SOAP avec HTTP POST /Stock. Quote HTTP/1. 1 Host: www. stockquoteserver. com Content-Type:

Convention SOAP avec HTTP POST /Stock. Quote HTTP/1. 1 Host: www. stockquoteserver. com Content-Type: text/xml; charset="utf-8" Content-Length: nnnn SOAPAction: "Some-URI" <SOAP-ENV: Envelope xmlns: SOAP-ENV="http: //schemas. xmlsoap. org/soap/envelope/" SOAPENV: encoding. Style="http: //schemas. xmlsoap. org/soap/encoding/"> <SOAP-ENV: Body> <m: Get. Last. Trade. Price xmlns: m="Some-URI"> <symbol>DIS</symbol> </m: Get. Last. Trade. Price> </SOAP-ENV: Body> </SOAP-ENV: Envelope>

Convention SOAP avec HTTP/1. 1 500 Internal Server Error Content-Type: text/xml; charset="utf-8" Content-Length: nnnn

Convention SOAP avec HTTP/1. 1 500 Internal Server Error Content-Type: text/xml; charset="utf-8" Content-Length: nnnn <SOAP-ENV: Envelope xmlns: SOAP-ENV="http: //schemas. xmlsoap. org/soap/envelope/"/> <SOAP-ENV: Body> <SOAP-ENV: Fault> <faultcode>SOAP-ENV: Server</faultcode> <faultstring>Server Error</faultstring> </SOAP-ENV: Fault> </SOAP-ENV: Body> </SOAP-ENV: Envelope>

Convention SOAP & RPC n Pour faire un RPC SOAP, il faut: ¨ L’URI

Convention SOAP & RPC n Pour faire un RPC SOAP, il faut: ¨ L’URI de l’objet cible ¨ Le nom de la méthode ¨ Les paramètres de la méthode SOAP s’appuie sur le protocole d’en dessous (http) pour l’URI de l’objet. n Le nom de la méthode et les paramètres sont encodés dans le message SOAP sous forme de structure. n

Convention SOAP & Document L’approche RPC est de moins en moins préconisée n On

Convention SOAP & Document L’approche RPC est de moins en moins préconisée n On préfère maintenant utiliser l’approche Document qui consiste à envoyer des document XML dans les messages SOAP sans convention particulière. n

A vous de jouer ! n Comparer SOAP par rapport à CORBA ? ¨

A vous de jouer ! n Comparer SOAP par rapport à CORBA ? ¨ IDL ? ¨ IIOP ? n SOAP est-il dédié uniquement au RPC ? ¨ Si non, à quoi d’autre ? n Quel est l’intérêt de porter SOAP sur d’autres protocoles ?

WSDL Web Services Description Language Version 1. 1

WSDL Web Services Description Language Version 1. 1

Présentation Une description WSDL : 1. 2. Décrit le type d’un service web (méthodes,

Présentation Une description WSDL : 1. 2. Décrit le type d’un service web (méthodes, types des paramètres) Cette description peut être comparée à la description IDL CORBA, elle peut servir à générer automatiquement des amorces. Décrit les aspects techniques d’implantation d’un service web (quel est le protocole utilisé, quel est le l’adresse du service) Cette description sert à se connecter concrètement à un service web.

Balises n Une description WSDL est un document XML qui commence par la balise

Balises n Une description WSDL est un document XML qui commence par la balise definition et contient les balises suivantes : ¨ ¨ ¨ types: cette balise décrit les types utilisés message: cette balise décrit la structure d’un message échangé port. Type: cette balise décrit un ensemble d’opérations (interface d’un service web) n operation: cette balise décrit une opération réalisée par le service web. Une opération reçoit des messages et envois des messages. binding: cette balise décrit le lien entre un protocole (http) et un port. Type. ¨ service: cette balise décrit un service comme un ensemble de ports. ¨ n port: cette balise décrit un port au travers duquel il est possible d’accéder à un ensemble d’opérations. Un port référence un Binding

Balises (avec XML Spy) Utilisé pour sectionner descriptions WSDL

Balises (avec XML Spy) Utilisé pour sectionner descriptions WSDL

types n Description en utilisant XML Schema. <wsdl: types> <xs: schema target. Name. Space="http:

types n Description en utilisant XML Schema. <wsdl: types> <xs: schema target. Name. Space="http: //www. exemple. fr/personne. xsd" xmlns: xs="http: //www. w 3. org/2001/XMLSchema"> <xs: element name="personne"> <xs: complex. Type> <xs: sequence> <xs: element name="nom" type="xs: string" /> <xs: element name="prenom" type="xs: string" /> </xs: sequence> </xs: complex. Type> </xs: element> </xs: schema> </wsdl: types>

message Les messages sont envoyés entre deux interlocuteurs (ex: une opération reçoit des message

message Les messages sont envoyés entre deux interlocuteurs (ex: une opération reçoit des message et envoie des messages. n Un message est composé de plusieurs part n Deux façons de définir des part n ¨ Soit une part est un élément de type simple ¨ Soit une part est un élément XML dont le type est défini dans un XML Schema

message n Part de type simple <wsdl: message name="personne. Msg"> <wsdl: part name="nom" type="xsd:

message n Part de type simple <wsdl: message name="personne. Msg"> <wsdl: part name="nom" type="xsd: string" /> <wsdl: part name="prenom" type="xsd: string" /> </wsdl: message> n Part qui utilise un XML Schema <wsdl: message name="personne. Msg"> <wsdl: part name="personne" element="exemple: personne" /> </wsdl: message> Défini dans un XML Schema

port. Type n Un port. Type permet d’identifier (nommer) de manière abstraite un ensemble

port. Type n Un port. Type permet d’identifier (nommer) de manière abstraite un ensemble d’opérations. <wsdl: port. Type name="description. Personnes" > <wsdl: operation name="get. Personne" > … </wsdl: operation> <wsdl: operation name=“set. Personne" > … </wsdl: operation> </wsdl: port. Type>

operation n WSDL définit 4 types d’opération : ¨ One-Way : lorsque les opérations

operation n WSDL définit 4 types d’opération : ¨ One-Way : lorsque les opérations reçoivent des messages mais n’envoient pas ¨ Request-response : lorsque les opérations reçoivent des messages puis renvoient des messages ¨ Solicit-response : lorsque les opérations envoient des messages puis en reçoivent ¨ Notification : lorsque les opérations envoient des messages mais n’en reçoivent pas

operation Quelque soit le type d’opération la définition est sensiblement la même : n

operation Quelque soit le type d’opération la définition est sensiblement la même : n Une opération : n ¨ Reçoit des messages : <wsdl: input …> ¨ Envoie des messages : <wsdl: output …> ou <wsdl: fault …> n La présence et l’ordre des input/outputs/fault dépendent du type de l’opération.

operation <wsdl: operation name="operation_name"> <wsdl: input name="nom_optionel" message="nom_message" /> </wsdl: operation> <wsdl: operation name="operation_name">

operation <wsdl: operation name="operation_name"> <wsdl: input name="nom_optionel" message="nom_message" /> </wsdl: operation> <wsdl: operation name="operation_name"> <wsdl: output name="nom_optionel" message="nom_message" /> <wsdl: input name="nom_optionel" message="nom_message" /> <wsdl: fault name="nom_optionel" message="nom_message" />* </wsdl: operation> <wsdl: operation name="operation_name"> <wsdl: input name="nom_optionel" message="nom_message" /> <wsdl: output name="nom_optionel" message="nom_message" /> <wsdl: fault name="nom_optionel" message="nom_message" />* </wsdl: operation>

binding WSDL permet de lier une description abstraite (port. Type) à un protocole. n

binding WSDL permet de lier une description abstraite (port. Type) à un protocole. n Chacune des opérations d’un port. Type pourra être liée de manière différente. n Le protocole SOAP est un des protocole qui peut être utilisé. n D’autres binding sont standardisés par WSDL : HTTP et MIME. n

binding n Un Binding : ¨ peut être identifié par un nom : name

binding n Un Binding : ¨ peut être identifié par un nom : name ¨ identifie le port. Type : type <wsdl: binding name="binding_name" type="nom du port. Type" > … </wsdl: binding>

binding SOAP Pour préciser que le binding est de type SOAP, il faut inclure

binding SOAP Pour préciser que le binding est de type SOAP, il faut inclure la balise suivante : <soap: binding transport="uri" style="soap_style" /> n Transport définit le type de transport n ¨ http: //schemas. xmlsoap. org/soap/http pour utiliser SOAP/HTTP n Style définit la façon dont sont créer les messages SOAP de toutes les opérations ¨ rpc : Encodage RPC défini par SOAP RPC ¨ document : Encodage sous forme d’élément XML

binding SOAP n Pour chaque opération du port. Type : ¨ il faut préciser

binding SOAP n Pour chaque opération du port. Type : ¨ il faut préciser l’URI de l’opération : soap. Action ¨ Il est aussi possible de repréciser la façon dont sont créés les messages SOAP : style n Pour chaque message de chaque opération, il faut définir comment sera créé le message SOAP

Exemple <wsdl: binding type="description. Personnes" > <soap: binding transport="http: //schemas. xmlsoap. org/soap/http" style="rpc" />

Exemple <wsdl: binding type="description. Personnes" > <soap: binding transport="http: //schemas. xmlsoap. org/soap/http" style="rpc" /> <wsdl: operation name="get. Personne"> <soap: operation soap. Action="http: //www. exemple. fr/get. Personne" /> <wsdl: input> <soap: body use="encoded" encoding. Style="schemas. xmlsoap. org/soap/encoding"/> </wsdl: input> <wsdl: output> <soap: body use="encoded" encoding. Style="schemas. xmlsoap. org/soap/encoding"/> </wsdl: output> </wsdl: operation> </wsdl: binding>

service n n n Un service est un ensemble de ports Un port a

service n n n Un service est un ensemble de ports Un port a un port. Type Dans le cadre de SOAP, un port à une adresse (qui correspond à l’adresse http) <wsdl: service name=“Mon. Service"> <wsdl: port binding="intf: Mon. Service. Soap. Binding"> <soap: address location="http: //mda. lip 6. fr: 8080/axis/services/Mon. Service"/> </wsdl: port> </wsdl: service>

A vous de jouer Comparer WSDL à IDL ? n Expliquer les dépendances entre

A vous de jouer Comparer WSDL à IDL ? n Expliquer les dépendances entre SOAP et WSDL ? n Quel est le point le plus délicat lors d’un passage à une implémentation ? n

UDDI Universal Description Discovery and Integration Version 3. 0

UDDI Universal Description Discovery and Integration Version 3. 0

Introduction n n Web services are meaningful only if potential users may find information

Introduction n n Web services are meaningful only if potential users may find information sufficient to permit their execution. The focus of Universal Description Discovery & Integration (UDDI) is the definition of a set of services supporting the description and discovery of ¨ ¨ ¨ n (1) businesses, organizations, and other Web services providers, (2) the Web services they make available, and (3) the technical interfaces which may be used to access those services. Based on a common set of industry standards, including HTTP, XML, XML Schema, and SOAP, UDDI provides an interoperable, foundational infrastructure for a Web services-based software environment for both publicly available services and services only exposed internally within an organization.

Rôles n Un référentiel UDDI joue 3 rôles : ¨ Pages blanches : le

Rôles n Un référentiel UDDI joue 3 rôles : ¨ Pages blanches : le référentiel comporte des informations sur les fournisseurs de services. ¨ Pages Jaunes : le référentiel comporte des critères de catégorisation de services. ¨ Pages vertes : le référentiel comporte des informations techniques (WSDL). n Les services d’un référentiel UDDI sont des Web Services !

Exemple Le référentiel UDDI de microsoft est accessible à http: //uddi. microsoft. com n

Exemple Le référentiel UDDI de microsoft est accessible à http: //uddi. microsoft. com n Il est possible de parcourir ce référentiel à l’aide d’un navigateur pour : n ¨ Recher un service. ¨ Ajouter un service au référentiel.

Exemple : search Nous allons recher les Web Services de la société Amazon. Façons

Exemple : search Nous allons recher les Web Services de la société Amazon. Façons de recher un service.

Exemple : search Amazon. Business propose un Web Service Ce Web Service s’appelle Get.

Exemple : search Amazon. Business propose un Web Service Ce Web Service s’appelle Get. Book. Price

Référentiels n Type ¨ Public : n n ¨ n Microsoft : uddi. microsoft.

Référentiels n Type ¨ Public : n n ¨ n Microsoft : uddi. microsoft. com IBM : www. ibm. com/services/uddi HP : uddi. hp. com SAP : udditest. sap. com Privé ou d’entreprise Accès Défini en WSDL ¨ JAXR définit une API pour naviguer dans un référentiel UDDI ¨

A vous de jouer Quel est la place d’UDDI dans les Web Services ?

A vous de jouer Quel est la place d’UDDI dans les Web Services ? n Comparer les référentiels UDDI avec les moteurs de recherche style Yahoo et Google ? n Quel est l’intérêt des référentiels UDDI d’entreprise ? n

Axis Version 1. 3

Axis Version 1. 3

Introduction n Implantation Open. Source de SOAP 1. 1 ¨ Java n Communauté Apache

Introduction n Implantation Open. Source de SOAP 1. 1 ¨ Java n Communauté Apache ¨ Apache, Tomcat, Xerces, Struts, Cocoon n Support Server ¨ Servlet qui reçoit et envoie des messages SOAP HTTP (pont SMTP) n Support Client ¨ API pour envoyer des messages SOAP sur HTTP et SMTP

Servlet (Notion) n n n Une Servlet est un objet Java qui fonctionne en

Servlet (Notion) n n n Une Servlet est un objet Java qui fonctionne en mode requête/reponse Une Servlet http est une serlvet qui est capable de traiter des requête http et qui est capable de renvoyer des réponses http. Un moteur (container) de Servlet est une application qui reçoit des requêtes http et qui les transmet aux Servlet ¨ Tomcat (couplage avec Apache), Websphere (couplage avec IBM http Server), Weblogic …

Architecture (Serveur) n n Axis fournit une Servlet (Axis. Servlet) qui reçoit des message

Architecture (Serveur) n n Axis fournit une Servlet (Axis. Servlet) qui reçoit des message SOAP sur http et qui transforme l’appel en un appel de méthode classique Java Développer un Web Service revient alors à développer un objet Java et à enregistrer ses méthodes auprès de la Servlet Axis. Servlet. Les clients envoient alors leurs messages SOAP sur http à Axis. Servlet. Pour SMTP les clients envoient leurs messages par mail à un démon. Le démon reçoit ces messages et les renvoie sur http à Axis. Servlet.

Architecture (Serveur) La Servlet Axis. Servlet reçoit et renvoie les messages SOAP et transmet

Architecture (Serveur) La Servlet Axis. Servlet reçoit et renvoie les messages SOAP et transmet aux objets Java correspondant SOAP/HTTP Les Objets Java effectuent les services. Ils sont des objets Java classiques. Axis. Servlet Moteur de Servlet Le client envoie des messages SOAP/HTTP JVM Objets Java et Servlet sont dans la même JVM (pas de répartition).

Développement d’un Web Service Développer une classe Java public class My. First. Web. Service

Développement d’un Web Service Développer une classe Java public class My. First. Web. Service { public final String BOOK 1 = "La méthode"; public final String BOOK 2 = "Le Macroscope"; public int get. Price(String book. Title) { if (book. Title. compare. To(BOOK 1)==0) { return 15; } else if (book. Title. compare. To(BOOK 2)==0) { return 20; } else return 300; } }

Déploiement un Web Service Elaborer un descripteur SOAP de votre classe <deployment xmlns="http: //xml.

Déploiement un Web Service Elaborer un descripteur SOAP de votre classe <deployment xmlns="http: //xml. apache. org/axis/wsdd/" xmlns: java="http: //xml. apache. org/axis/wsdd/providers/java"> <service name="My. First. Web. Service" provider="java: RPC"> <parameter name="class. Name « value="My. First. Web. Service"/> <parameter name="allowed. Methods" value="*"/> </service> </deployment> Exporter le descripteur java org. apache. axis. client. Admin. Client deploy. wsdd

Déploiement un Web Service Le fichier jws sont les équivalents des jsp pour les

Déploiement un Web Service Le fichier jws sont les équivalents des jsp pour les Web Service. n Construction d’un fichier jws à partir d’une classe java: n ¨ Copy My. First. Web. Service. java /…/My. First. Web. Service. jws

Le Client à partir du WSDL n Génération d’un ensemble de classes facilitant l’envoi

Le Client à partir du WSDL n Génération d’un ensemble de classes facilitant l’envoi de message SOAP: ¨ java org. apache. axis. wsdl. WSDL 2 Java file. wsdl n Classes générées: ¨ Pour les Type ¨ Pour les Port. Type ¨ Pour les Binding ¨ Pour les Port ¨ Pour les Service

Le Client à partir du WSDL n Construction du client : ¨ Instancier un

Le Client à partir du WSDL n Construction du client : ¨ Instancier un Service ¨ Obtenir un Port à partir du Service ¨ Utiliser les méthodes du Port n Construire les paramètres en fonction des Types

Obtention du WSDL de l’exemple Sous axis, dans un navigateur, mettre l’adresse du Web

Obtention du WSDL de l’exemple Sous axis, dans un navigateur, mettre l’adresse du Web Service suivie de ? WSDL n http: //localhost: 8080/axis/jwspages/My. Firs t. Web. Service. jws? WSDL n

Les classes générées à partir de l’exemple My. First. Web. Service. java n My.

Les classes générées à partir de l’exemple My. First. Web. Service. java n My. First. Web. Service. Locator. java n My. First. Web. Service. Binding. Stub. java n

Un exemple de Client public class Client { public static void main(String[] args) {

Un exemple de Client public class Client { public static void main(String[] args) { try { My. First. Web. Service service = new My. First. Web. Service. Locator(); My. First. Web. Service port = service. get. My. First. Web. Service(); String st = ""; int price = port. get. Price(st); System. out. println("Le prix est : "+price); } catch (Exception ex) { ex. print. Stack. Trace(); } } }

A vous de jouer Comparer cette approche avec CORBA ? n A quoi sert

A vous de jouer Comparer cette approche avec CORBA ? n A quoi sert le WSDL ? n Comment se fait le mapping avec un langage de programmation ? n

Conclusion Web Service : Un nouveau Buzz Word ?

Conclusion Web Service : Un nouveau Buzz Word ?

Conclusion n Avantages : ¨ Des standards simples (SOAP, WSDL, UDDI) ¨ Multi Protocole

Conclusion n Avantages : ¨ Des standards simples (SOAP, WSDL, UDDI) ¨ Multi Protocole / Multi OS / Multi Langage ¨ Paradigme de Service ¨ Des outils (éditeurs et moteurs) n Inconvénients : ¨ Typage (pas de consensus) ¨ Performance ¨ Jeunesse (Sécurité, Transaction, …)

Références n n SOAP : http: //www. w 3. org/TR/SOAP/ WSDL : http: //www.

Références n n SOAP : http: //www. w 3. org/TR/SOAP/ WSDL : http: //www. w 3. org/TR/2001/NOTE-wsdl 20010315 UDDI : http: //www. uddi. org/ Apache SOAP : http: //xml. apache. org/soap/