87
Web Services Xavier Blanc [email protected]

Web Services Xavier Blanc [email protected]. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

Embed Size (px)

Citation preview

Page 1: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

Web Services

Xavier [email protected]

Page 2: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

Plan

Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

Page 3: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

Définition

Les Web Services sont des services offerts via le web.

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.

Page 4: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

Principes

Pourquoi un nouveau middleware

Page 5: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

Limitations des middleware

Passage à large échelle : Web Protocoles hétérogènes

IIOP, RMI, DCOMFirewall

Pas d’ouverture des servicesNotion de moteur de recherche inexistante

Trop de contraintes sur le client !Doit posséder les souchesDifficulté de construire dynamiquement

Page 6: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

Limitations des middleware

Inconvénients Intrinsèques Complexité

CORBA : IDL, Mapping, …EJB : Container, JNDI, …

Pérennité : remise en questionCORBA, EJB, .Net, …

Prix Plates-formesCompétences

Page 7: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

Solutions existantes

Modification du ProtocoleRMI / IIOP

PasserellesCORBA vers DCOM

Portage d’applications existantes difficile Solutions non standards

Page 8: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

Approche Envisagée

Un nouveau Protocole : SOAP Basé sur XML

Portabilité, Hétérogénéité Porté sur des protocoles large échelle existants

HTTP, SMTP, …

Paradigme orienté service : WSDL Définition de services offerts (en XML)

Découverte automatique des services (dynamicité) : UDDI Référentiel de Web Service (Pages Jaunes, Vertes,

Blanches)

Page 9: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

Ex : ModFact

SOAP / HTTP

IIOP

SOAP / SMTP

Les clients doivent savoir envoyer des messages SOAP (sur HTTP ou SMTP)

Le serveur doit savoir recevoir des messages SOAP (sur HTTP ou SMTP). Il effectue les traitements correspondant (ici délégation vers CORBA).

Application existante classique (ici CORBA)

UDDIExportation du Web Service dans le référentiel UDDI

Utilisation de UDDI pour construire dynamiquement des client

Page 10: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

SOAP

Protocole d’échange de messages (client / serveur)

Basé entièrement sur XML Standard W3C (Initiative IBM et Microsoft)

Actuellement SOAP 1.1 Concepts

Message = Enveloppe ( Header + Body ) Extensibilité

Porté sur HTTP, SMTP, …

Page 11: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

WSDL

Langage de définition de Web Services Basé entièrement sur XML Standard W3C (Initiative IBM et Microsoft)

Actuellement WSDL 1.1 Définition de l’interface, de l’URL et du port

du Web Service. Utilise le système de typage de XML Schéma

Page 12: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

UDDI

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

clients Recommandation OASIS Référentiel défini lui-même en WSDL Référentiel Public / Privé

Page 13: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

XML

Notions nécessaires pour les Web Services

Page 14: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

Exemple de document XML

<livre><titre> le super livre </titre><chapitre>

<numero> 1 </numero><titre> titre du chapitre 1 </titre><contenu> blabla blabla </contenu>

</chapitre><chapitre>

…</chapitre>

</livre>

Page 15: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

Principes

Ensemble non fini de balisesL’utilisateur peut créer de nouvelles balises

Définition de grammaires : XML est un Meta-LangageMathML, NewsML, XMI, Doc, Slides, …

Séparation de la forme et du fondUn document XML peut être constitué de deux

entités (le fond et la forme)

Page 16: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

Grammaire

Deux façons de définir une grammaire XML : DTD

Langage de définition de grammaire XML Largement utilisé Expression faible (type, structure)

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 estconforme à une grammaire

Page 17: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

Espaces de noms

Mécanismes permettant de partitionner les balises XML (permet d’avoir deux fois le même nom de balise)

Un espace de nom est défini dans n’importe quelle balise par l’attribut xmlns et par une URI.

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.

Ex :<meta:body xmlns:meta="http://meta.lip6.fr/meta/"

Page 18: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

XML est un succès !

Standard W3C 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

Page 19: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

A vous de jouer !

Pouvez-vous définir un document XML qui représente un message Client/Serveur ?

Quelles sont les informations que ce message doit contenir ?

Comment échanger ce message ?Quels sont les problèmes soulevés ?

Page 20: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

SOAP

Simple Object Access Protocol Version 1.1

Page 21: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

Abstract

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.

Page 22: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

Exemple de message

StockQuote est un ensemble de services qui permet d’obtenir des informations sur des actions boursières. GetLastTradePrice est le service qui permet de

connaître la dernière valeur d’une action.

Cet exemple présente un échange de messages entre un client qui veut savoir la valeur de l’action « DIS ».

Page 23: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

Exemple de message

POST /StockQuote HTTP/1.1Host: www.stockquoteserver.comContent-Type: text/xml; charset="utf-8"Content-Length: nnnnSOAPAction: "Some-URI"

<SOAP-ENV:Envelope  xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"  SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body>    <m:GetLastTradePrice xmlns:m="Some-URI">        <symbol>DIS</symbol>    </m:GetLastTradePrice></SOAP-ENV:Body>

</SOAP-ENV:Envelope>

Propre au portage sur HTTP

Page 24: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

Exemple de message

HTTP/1.1 200 OKContent-Type: text/xml; charset="utf-8"Content-Length: nnnn

<SOAP-ENV:Envelope  xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"  SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/><SOAP-ENV:Body>    <m:GetLastTradePriceResponse xmlns:m="Some-URI">        <Price>34.5</Price>    </m:GetLastTradePriceResponse></SOAP-ENV:Body>

</SOAP-ENV:Envelope>

Propre au portage sur HTTP

Page 25: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

Analyse de l’exemple

Des Balises Utilisateur GetLastTradePriceResponse Symbol Price

Un Namespace Utilisateur xmlns:m="Some-URI"

Des Balises SOAP Enveloppe Body

Un Namespace SOAP xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"

Des informations dans la partie HTTP

Page 26: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

Namespace SOAP

Le namespace des balises SOAPhttp://schemas.xmlsoap.org/soap/envelope

Le namespace de l’encodage SOAPhttp://schemas.xmlsoap.org/soap/encoding

Page 27: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

Structure d’un message SOAP

Un message SOAP est contenu dans une balise Envelope Une Envelope peut contenir une balise Header

Une Header peut contenir n’importe quel ensemble de balises. Ces balises doivent appartenir à des namespaces.

Une Envelope doit contenir une balise Body 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

Page 28: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

SOAP Header

Mécanisme d’extension du protocol SOAP La balise Header est optionnelle Si la balise Header est présente, elle doit

être le premier fils de la balise Envelope La balise Header contient des entrées Une entrée est n’importe quelle balise

incluse dans un namespace

Framework

Page 29: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

SOAP Header Example

<SOAP-ENV:Header>

<t:Transaction xmlns:t="some-URI">5

</t:Transaction>

</SOAP-ENV:Header>

Framework

Page 30: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

SOAP Body

Le Body contient le message à échanger La balise Body est obligatoire La balise Body doit être le premier fils de la balise

Envelope (ou le deuxième si il existe une balise Header)

La balise Body contient des entrées Une entrée est n’importe quelle balise incluse

optionnellement dans un namespace Une entrée peut être une Fault.

Framework

Page 31: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

SOAP Fault

Balise permettant de signaler des cas d’erreur. La balise Fault contient les balises suivantes

faultcode : un code permettant d’identifier le type d’erreur

Client, Server, VersionMismatch, MustUnderstand

faultstring : une explication en langage naturel faultactor : une information identifier l’initiateur de

l’erreur detail : Définition précise de l’erreur.

Framework

Page 32: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

Encodage

Un message SOAP contient des données typées. Il faut donc définir un moyen d’encoder ces données.

Vocabulaire SOAP : Value (valeur d’une donnée)

Simple value (string, integers,etc) Compound value (array, struct, …)

Type (d’une value) Simple Type Compound Type

Encoding

Page 33: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

Encodage

L’encodage c’est la représentation de valeurs sous forme XML.

Le décodage c’est la construction de valeurs à partir d’XML

L’XML qui représente les valeurs a une structure qui dépend du type des valeurs

Il faut donc définir le typeSoit mécanisme définit par l’utilisateurSoit utilisation d’XML Schéma (préconisé)

Encoding

Page 34: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

Simple Types

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

<simpleType base="xsd:string"><enumeration value="Green"/><enumeration value="Blue"/>

</simpleType></element> Valeurs<age>45</age><color>Blue</color>

Type XML Schema

Construction de Type XML Schema

Encoding

Page 35: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

Simple Types

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

SOAP a défini deux façons de préciser le type d’une valeur sans définir le Schéma XML:<SOAP-ENC:int>45</SOAP-ENC:int><cost xsi:type="xsd:float">29.5</cost>

Encoding

Page 36: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

Compound Types

Une structure est un type composé dans lequel les membres sont accessibles uniquement grâce à des noms différents.

Un tableau est un type composé dans lequel les membres sont accessibles uniquement grâce à leur position.

Encoding

Page 37: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

Struct

Type (XML Schéma)<element name="Person"><complexType>

<element name="name" type="xsd:string"/><element name="age" type="xsd:int"/>

</complexType><element> Valeur<Person>

<name>Xavier</name><age>30</age>

</Person>

Encoding

Page 38: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

Array

Le type est directement précisé grâce aux balises SOAP:

<myFavoriteNumbers SOAP-ENC:arrayType="xsd:int[2] ">

<SOAP-ENC:int>3</SOAP-ENC:int>

<SOAP-ENC:int>4</SOAP-ENC:int>

</myFavoriteNumbers>

Encoding

Page 39: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

SOAP avec HTTP

SOAP peut être facilement porté sur Http.Convient au mode Request/Response de HttpLe message SOAP est mis dans une requête

POST avec un content-type text/xmlDéfinition d’un header http : SOAPActionUtilisation des codes http (2xx, 4xx, 5xx)

Convention

Page 40: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

SOAP avec HTTP

POST /StockQuote HTTP/1.1Host: www.stockquoteserver.comContent-Type: text/xml; charset="utf-8"Content-Length: nnnnSOAPAction: "Some-URI"

<SOAP-ENV:Envelope  xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"  SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body>    <m:GetLastTradePrice xmlns:m="Some-URI">        <symbol>DIS</symbol>    </m:GetLastTradePrice></SOAP-ENV:Body>

</SOAP-ENV:Envelope>

Convention

Page 41: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

SOAP avec HTTP

HTTP/1.1 500 Internal Server ErrorContent-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

Page 42: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

SOAP & RPC

Pour faire un RPC SOAP, il faut:L’URI de l’objet cibleLe nom de la méthodeLes paramètres de la méthode

SOAP s’appuie sur le protocole d’en dessous (http) pour l’URI de l’objet.

Le nom de la méthode et les paramètres sont encodés dans le message SOAP sous forme de structure.

Convention

Page 43: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

SOAP & Document

L’approche RPC est de moins en moins préconisée

On préfère maintenant utiliser l’approche Document qui consiste à envoyer des document XML dans les messages SOAP sans convention particulière.

Convention

Page 44: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

A vous de jouer !

Comparer SOAP par rapport à CORBA ? IDL ? IIOP ?

SOAP est-il dédié uniquement au RPC ?Si non, à quoi d’autre ?

Quel est l’intérêt de porter SOAP sur d’autres protocoles ?

Page 45: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

WSDL

Web Services Description Language

Version 1.1

Page 46: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

Présentation

Une description WSDL :1. 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.

2. 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.

Page 47: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

Balises

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é portType: cette balise décrit un ensemble d’opérations (interface d’un

service web) 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

portType. service: cette balise décrit un service comme un ensemble de ports.

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

Page 48: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

Balises (avec XML Spy)

Utilisé pour sectionner des descriptions WSDL

Page 49: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

types

Description en utilisant XML Schema.<wsdl:types>

<xs:schema targetNameSpace="http://www.exemple.fr/personne.xsd"xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:element name="personne"> <xs:complexType> <xs:sequence>

<xs:element name="nom" type="xs:string" /> <xs:element name="prenom" type="xs:string" />

</xs:sequence> </xs:complexType>

</xs:element></xs:schema>

</wsdl:types>

Page 50: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

message

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

Un message est composé de plusieurs part Deux façons de définir des part

Soit une part est un élément de type simpleSoit une part est un élément XML dont le type

est défini dans un XML Schema

Page 51: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

message

Part de type simple<wsdl:message name="personneMsg">

<wsdl:part name="nom" type="xsd:string" /><wsdl:part name="prenom" type="xsd:string" />

</wsdl:message>

Part qui utilise un XML Schema<wsdl:message name="personneMsg">

<wsdl:part name="personne" element="exemple:personne" /></wsdl:message>

Défini dans un XML Schema

Page 52: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

portType

Un portType permet d’identifier (nommer) de manière abstraite un ensemble d’opérations.

<wsdl:portType name="descriptionPersonnes" ><wsdl:operation name="getPersonne" >

…</wsdl:operation>

<wsdl:operation name=“setPersonne" >…

</wsdl:operation>

</wsdl:portType>

Page 53: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

operation

WSDL définit 4 types d’opération :One-Way : lorsque les opérations reçoivent des

messages mais n’en n’envoient pasRequest-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

Page 54: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

operation

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

Une opération : Reçoit des messages : <wsdl:input …>Envoie des messages : <wsdl:output …> ou

<wsdl:fault …> La présence et l’ordre des input/outputs/fault

dépendent du type de l’opération.

Page 55: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

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>

Page 56: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

binding

WSDL permet de lier une description abstraite (portType) à un protocole.

Chacune des opérations d’un portType pourra être liée de manière différente.

Le protocole SOAP est un des protocole qui peut être utilisé.

D’autres binding sont standardisés par WSDL : HTTP et MIME.

Page 57: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

binding

Un Binding :peut être identifié par un nom : name identifie le portType : type

<wsdl:binding name="binding_name" type="nom du portType" >

…</wsdl:binding>

Page 58: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

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" /> Transport définit le type de transport

http://schemas.xmlsoap.org/soap/http pour utiliser SOAP/HTTP

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

Page 59: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

binding SOAP

Pour chaque opération du portType : il faut préciser l’URI de l’opération :

soapAction Il est aussi possible de repréciser la façon

dont sont créés les messages SOAP : style Pour chaque message de chaque

opération, il faut définir comment sera créé le message SOAP

Page 60: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

Exemple

<wsdl:binding type="descriptionPersonnes" ><soap:binding

transport="http://schemas.xmlsoap.org/soap/http"style="rpc" />

<wsdl:operation name="getPersonne"><soap:operation soapAction="http://www.exemple.fr/getPersonne" />

<wsdl:input><soap:body use="encoded"

encodingStyle="schemas.xmlsoap.org/soap/encoding"/> </wsdl:input> <wsdl:output>

<soap:body use="encoded" encodingStyle="schemas.xmlsoap.org/soap/encoding"/>

</wsdl:output></wsdl:operation>

</wsdl:binding>

Page 61: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

service

Un service est un ensemble de ports Un port a un portType Dans le cadre de SOAP, un port à une adresse

(qui correspond à l’adresse http)

<wsdl:service name=“MonService"><wsdl:port binding="intf:MonServiceSoapBinding">

<soap:address location="http://mda.lip6.fr:8080/axis/services/MonService"/></wsdl:port>

</wsdl:service>

Page 62: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

A vous de jouer

Comparer WSDL à IDL ? Expliquer les dépendances entre SOAP et

WSDL ? Quel est le point le plus délicat lors d’un

passage à une implémentation ?

Page 63: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

UDDI

Universal Description Discovery and Integration

Version 3.0

Page 64: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

Introduction

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 (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.

Page 65: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

Rôles

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). Les services d’un référentiel UDDI sont des

Web Services !

Page 66: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

Exemple

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

Il est possible de parcourir ce référentiel à l’aide d’un navigateur pour :Rechercher un service.Ajouter un service au référentiel.

Page 67: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

Exemple : search Façons de rechercher un service.

Nous allons rechercher les Web Services de la société Amazon.

Page 68: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

Exemple : searchAmazonBusiness propose un Web Service

Ce Web Service s’appelle GetBookPrice

Page 69: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

Référentiels

Type Public :

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

Page 70: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

A vous de jouer

Quel est la place d’UDDI dans les Web Services ?

Comparer les référentiels UDDI avec les moteurs de recherche style Yahoo et Google ?

Quel est l’intérêt des référentiels UDDI d’entreprise ?

Page 71: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

Axis

Version 1.3

Page 72: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

Introduction

Implantation OpenSource de SOAP1.1 Java

Communauté Apache Apache, Tomcat, Xerces, Struts, Cocoon

Support Server Servlet qui reçoit et envoie des messages SOAP HTTP

(pont SMTP) Support Client

API pour envoyer des messages SOAP sur HTTP et SMTP

Page 73: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

Servlet (Notion)

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 …

Page 74: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

Architecture (Serveur)

Axis fournit une Servlet (AxisServlet) 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 AxisServlet.

Les clients envoient alors leurs messages SOAP sur http à AxisServlet.

Pour SMTP les clients envoient leurs messages par mail à un démon. Le démon reçoit ces messages et les renvoie sur http à AxisServlet.

Page 75: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

Architecture (Serveur)

JVM

Moteur de Servlet

AxisServlet

La Servlet AxisServlet reçoit et renvoie les messages SOAP et transmet aux objets Java correspondant Les Objets Java effectuent

les services. Ils sont des objets Java classiques.

Objets Java et Servlet sont dans la même JVM (pas de répartition).

SOAP/HTTP

Le client envoie des messages SOAP/HTTP

Page 76: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

Développement d’un Web Service

Développer une classe Javapublic class MyFirstWebService {

public final String BOOK1 = "La méthode";public final String BOOK2 = "Le Macroscope";

public int getPrice(String bookTitle) {if (bookTitle.compareTo(BOOK1)==0) {

return 15;}else if (bookTitle.compareTo(BOOK2)==0) {

return 20;}else return 300;

}}

Page 77: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

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="MyFirstWebService" provider="java:RPC">  

<parameter name="className«  value="MyFirstWebService"/>   <parameter name="allowedMethods" value="*"/>  

</service> </deployment>

Exporter le descripteurjava org.apache.axis.client.AdminClient deploy.wsdd

Page 78: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

Déploiement un Web Service

Le fichier jws sont les équivalents des jsp pour les Web Service.

Construction d’un fichier jws à partir d’une classe java:Copy MyFirstWebService.java

/…/MyFirstWebService.jws

Page 79: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

Le Client à partir du WSDL

Génération d’un ensemble de classes facilitant l’envoi de message SOAP: java org.apache.axis.wsdl.WSDL2Java file.wsdl

Classes générées: Pour les Type Pour les PortType Pour les Binding Pour les Port Pour les Service

Page 80: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

Le Client à partir du WSDL

Construction du client : Instancier un ServiceObtenir un Port à partir du ServiceUtiliser les méthodes du Port

Construire les paramètres en fonction des Types

Page 81: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

Obtention du WSDL de l’exemple

Sous axis, dans un navigateur, mettre l’adresse du Web Service suivie de ?WSDL

http://localhost:8080/axis/jwspages/MyFirstWebService.jws?WSDL

Page 82: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

Les classes générées à partir de l’exemple MyFirstWebService.java MyFirstWebServiceService.java MyFirstWebServiceLocator.java MyFirstWebServiceBindingStub.java

Page 83: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

Un exemple de Client

public class Client {

public static void main(String[] args) {try {

MyFirstWebServiceService service =new MyFirstWebServiceServiceLocator();

MyFirstWebService port = service.getMyFirstWebService();

String st = ""; int price = port.getPrice(st);

System.out.println("Le prix est : "+price);} catch (Exception ex) {

ex.printStackTrace();}

}}

Page 84: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

A vous de jouer

Comparer cette approche avec CORBA ? A quoi sert le WSDL ? Comment se fait le mapping avec un

langage de programmation ?

Page 85: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

Conclusion

Web Service : Un nouveau Buzz Word ?

Page 86: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

Conclusion

Avantages :Des standards simples (SOAP, WSDL, UDDI)Multi Protocole / Multi OS / Multi LangageParadigme de ServiceDes outils (éditeurs et moteurs)

Inconvénients :Typage (pas de consensus)PerformanceJeunesse (Sécurité, Transaction,…)

Page 87: Web Services Xavier Blanc Xavier.Blanc@lip6.fr. Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

Références

SOAP : http://www.w3.org/TR/SOAP/ WSDL :

http://www.w3.org/TR/2001/NOTE-wsdl-20010315

UDDI : http://www.uddi.org/ Apache SOAP : http://xml.apache.org/soap/