Vous êtes sur la page 1sur 53

Services Web

Samir Tata Dpartement INFormatique TELECOM SudParis http://www-inf.it-sudparis.eu/cours/WebServices

2009-2010

Introduction

Source: Fabien HACQUEBART

2009-2010

Rfrences
Web
http://www-inf.it-sudparis.eu/cours/WebServices/ Site de W3C (normes) : www.w3.org Site de Zvon (tutoriel XML) : http://www.zvon.org/ Georges Gardarin : Des bases de donnes aux services Web, Dunod, Paris, 2002 Hubert Kadima et Valrie Monfort : Les services Web: techniques, dmarches et outils, Dunod, Paris, 2003 Gustavo Alonso, Fabio Casati, Harumi Kuno, and Vijay Machiraju : Web Services: Concepts, Architecture and Applications, Springer-Verlag, New York, 2004 Jorge Cardoso and Amit P. Sheth : Semantic Web Services, Processes and Applications (Semantic Web and Beyond: Computing for Human Experience), Springer-Verlag, New York, 2006

Livres

2009-2010

Plan
Gense de l orientation service Services Web Panorama de technologies Orchestration de services Web

2009-2010

Plan
Gense de l orientation service
Gense Dfinition Architecture

Services Web Panorama de technologies Orchestration de services Web

2009-2010

Orientation service
Gense, Dfinition et Architecture

2009-2010

Gense (1/3)
Paradigme procdure
procdures, fonctions et donnes structures applications monolithiques, applications serveurs isoles

Paradigme objet
classes (fonctions et donnes structures) li un langage de programmation applications monolithiques, applications c/s isoles

Paradigme composant
composant (groupe dinterfaces) li un modle de composant entit de plus gros grain, dcrit par ce quil offre et ce quil requiert, supporte des proprits non fonctionnelles de manire dclarative, utilisation indpendante de limplmentation (pour certains modle/plateforme de composants) interaction application-application

2009-2010

Gense (2/3)
POS, POO, POC : pourquoi on veut amliorer ?
Paradigmes ? on parle du code et non de larchitecture larchitecture suit le modle de programmation et alors ? Concepts abstraits et mapping concrets
mapping vers Java, C++, CORBA, COM Rutilisation entre domaines diffrents difficile sinon impossible

Besoins ?
Support de lhtrognit : plusieurs plate-formes logicielles et matrielles Accs et manipulation des donnes de partout
2009-2010

Gense (3/3)
CCM EJB .NET

CORBA
Assembleur Langages machine

Machines virtuelles
Langages procduraux

objets

* * *
composants services

services

01011 10100 11000 01011

Niveaux dabstraction grandissant


2009-2010

Dfinition (1/2)
Cest quoi alors un service
un block avec des proprits fonctionnelles et non fonctionnelles Localisations, plate-forme et code sont peu importants

implications sur
le service qui peut tre destinataire dun message (application) manipulateur dun message (infrastructure) transporteur dun message (protocole) l'utilisation dun service qui est toujours suppose distante passe toujours au dessus des plate-formes ignore limplmentation
2009-2010

10

Dfinition (2/2)

Un Service est Autonome (et sans tat)

Un Service expose un Contrat


Conditions Gnrales de Vente Rglement Intrieur Vos droits/Vos devoirs

in out

Les Frontires entre services sont Explicites

Les services communiquent par messages

Source A. Occello

2009-2010

11

Architecture (1/2)

Service Description Service Registry

Find

Publish
Service Description

Service Requestor

Bind

Service Provider Service

2009-2010

12

Architecture (2/2)
Les partenaires
Le fournisseur de services cre le service Web, puis publie son interface ainsi que les informations d'accs au service, dans un annuaire de services Web. L'annuaire de services rend disponible l'interface du service ainsi que ses informations d'accs, pour les demandeur potentiel de service. Le demandeur de services accde l'annuaire de service pour effectuer une recherche afin de trouver les services dsirs. Ensuite, il se lie au fournisseur pour invoquer le service.

2009-2010

13

Plan
Gense de l orientation service Services Web
Origines et dfinition WSDL : Web Service description Language SOAP : Simple Object Access Protocol Dveloppement de SW avec Axis

Panorama de technologies Orchestration de services Web

2009-2010

14

Services Web
Origines et Dfinitions

2009-2010

15

Service Web : les origines


Le Web daujourdhui
conu pour une interaction client-application dvelopp autour de 2 standards http et html permet de supporter le B2C

Le Web de demain ?
Le Web est partout. Que peut-on faire avec ? Supporter des places de march lectronique (Emarketpalces) intgrer des procds mtiers partager des ressources Les approches existantes sont ad hoc e.g. interactions application-application avec des formulaires html But: permettre une interaction application-application
2009-2010

16

Trois gnrations dapplications Web


1re gnration Ressources statiques (rle de serveur) Documents e.g. pages Web statiques (HTML) 2me gnration Ressources dynamiques (rle de serveur) Applications e.g. pages Web dynamiques, ASP, JSP, PHP, ... 3me gnration Services (rles de serveur & client)

2009-2010

17

Service Web : dfinition


A Web service is a software application identified by a URI, whose interfaces and binding(1) are capable of being defined, described and discovered by XML artefacts and supports direct interactions with other software applications using XML based messages via Internet-based protocols. (W3C definition)

Un service Web est une application logicielle 1. identifie par un URI dont les interfaces et les liaisons sont dfinies, dcrites et dcouvertes avec des mcanismes XML, et 2. supporte une interaction directe avec les autres applications logicielles en utilisant des messages XML via un protocole Internet.
(1) An association between an Interface, a concrete protocol and a data format
2009-2010

18

Service Web : caractristique


Les services Web sont
des service autonome exposant des contrats dont les frontires sont explicites qui communiquent par messages accessible sur le Web Les messages sont vhiculs par des protocoles Web

2009-2010

19

Architecture Web service

2009-2010

20

Architecture Web service


Les partenaires
Le fournisseur de services cre le service Web, puis publie son interface ainsi que les informations d'accs au service, dans un annuaire de services Web. L'annuaire de services rend disponible l'interface du service ainsi que ses informations d'accs, pour les demandeur potentiel de service. Le demandeur de services accde l'annuaire de service pour effectuer une recherche afin de trouver les services dsirs. Ensuite, il se lie au fournisseur pour invoquer le service.

Les standards
Protocole SOAP : Achemine les messages entre fournisseur, annuaire et demandeur de services Langage WSDL : Dcrit les interface des services Norme UDDI : spcifie la structure des annuaires de services
2009-2010

21

Services Web
WSDL : Web Service description Language

2009-2010

22

Rle du langage WSDL


WSDL est un langage qui permet de dcrire :

linterface dun service Web (types de donnes, oprations, entres, sorties) comment invoquer un service Web Dcrire les services comme un ensemble doprations et de messages abstraits relis des protocoles et des serveurs rseaux

Objectif :

Permet de dcharger les utilisateurs des dtails techniques de ralisation dun appel WSDL est un langage qui standardise les schmas XML utiliss pour tablir une connexion entre metteurs et rcepteurs.

2009-2010

23

Web service description using WSDL

Source : Hubert Kadima & Valrie Monfort

2009-2010

24

Structure dun document WSDL


<definitions> <types>dfinition des types</types> <message>dfinition des messages</message> <portType>dfinition des interfaces </portType> <binding>dfinition des bindings</binding> <services>dfinition de endpoint </service> </definitions>

2009-2010

25

Exemple : un annuaire
Oprations
Ajouter une entre Entre :
Nom : Tata Prnom : Samir Adresse : 9 rue Charles Fourier 91011 Evry France

Chercher une adresse Entre : nom Sortie : Entre ou message drreur

2009-2010

26

WSDL : <types>
<wsdl:types> <schema targetNamespace="urn:AnnuaireTypes"> <import namespace="http://schemas.xmlsoap.org/soap/encoding/"/> <complexType name="AdresseType"> <sequence> <element name="code" nillable="true" type="soapenc:string"/> <element name="numero" type="xsd:int"/> <element name="pays" nillable="true" type="soapenc:string"/> <element name="rue" nillable="true" type="soapenc:string"/> <element name="ville" nillable="true" type="soapenc:string"/> </sequence> </complexType> <complexType name="EntreeType"> <sequence> <element name="adresse" nillable="true" type="tns1:AdresseType"/> <element name="nom" nillable="true" type="soapenc:string"/> <element name="prenom" nillable="true" type="soapenc:string"/> <element name="telephone" type="xsd:int"/> </sequence> </complexType> <complexType name="EntreeInexistanteType"> <sequence> <element name="messageErreur" nillable="true" type="soapenc:string"/> </sequence> </complexType> </schema> </wsdl:types>

2009-2010

27

WSDL : <message>

dcrit les noms et types dun ensemble de champs transmettre peut-tre compar aux paramtres d'un appel de procdure

<wsdl:message name="chercherEntreeRequest"> <wsdl:part name="nom" type="soapenc:string"/> </wsdl:message> <wsdl:message name="ajouterEntreeRequest"> <wsdl:part name="entree" type="tns1:EntreeType"/> </wsdl:message> <wsdl:message name="EntreeInexistante"> <wsdl:part name="fault" type="tns1:EntreeInexistanteType"/> </wsdl:message> <wsdl:message name="chercherEntreeResponse"> <wsdl:part name="chercherEntreeReturn" type="tns1:EntreeType"/> </wsdl:message> <wsdl:message name="ajouterEntreeResponse"> <wsdl:part name="ajouterEntreeReturn" type="soapenc:string"/> </wsdl:message>
2009-2010

28

WSDL : <portType>
<wsdl:portType name="Annuaire"> <wsdl:operation name="chercherEntree" parameterOrder="nom"> <wsdl:input message="impl:chercherEntreeRequest" name="chercherEntreeRequest"/> <wsdl:output message="impl:chercherEntreeResponse" name="chercherEntreeResponse"/> <wsdl:fault message="impl:EntreeInexistante" name="EntreeInexistante"/> </wsdl:operation> <wsdl:operation name="ajouterEntree" parameterOrder="entree"> <wsdl:input message="impl:ajouterEntreeRequest" name="ajouterEntreeRequest"/> <wsdl:output message="impl:ajouterEntreeResponse" name="ajouterEntreeResponse"/> </wsdl:operation> </wsdl:portType>
2009-2010

29

WSDL : <porttype> Les types de port (port Type) dcrivent un ensemble doprations et euvent tre compars une interface Java
One-way le service reoit un message en entre (<input>). Request-response le service reoit un message en entre (<input>) et renvoie un message en sortie <output> ou un ou plusieurs messages derreur (<fault>) Solicit-response Le service envoie un message (<output>) et reoit un message corrl (<input>) ou un ou plusieurs messages derreur (<fault>). Notification le service envoie un message de notification (<output>)

2009-2010

30

WSDL : <binding>
Les Liaisons (binding) dfinissent le format des messages et le protocole utilis par chaque type de port
<wsdl:binding name="AnnuaireServiceSoapBinding" type="impl:Annuaire"> <wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="chercherEntree"> <wsdl:input name="chercherEntreeRequest"> <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> </wsdl:input> <wsdl:output name="chercherEntreeResponse"> <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> </wsdl:output> <wsdl:fault name="EntreeInexistante"> <wsdlsoap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="EntreeInexistante"/> </wsdl:fault> </wsdl:operation> <wsdl:operation name="ajouterEntree"> </wsdl:operation> </wsdl:binding>
2009-2010

31

WSDL : <service>
Le port est un point de terminaison identifi de manire unique par la combinaison d'une adresse Internet et d'une liaison Un Service est une collection de points dentre (endpoint) relatifs.
<?xml version="1.0" encoding="UTF-8"?> <wsdl:definitions targetNamespace="http://localhost:8080/axis/services/AnnuaireService" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="http://localhost:8080/axis/services/AnnuaireService" xmlns:intf="http://localhost:8080/axis/services/AnnuaireService" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns1="urn:AnnuaireTypes xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <!-- service decln --> <wsdl:service name="AnnuaireService"> <wsdl:port binding="impl:AnnuaireServiceSoapBinding" name="AnnuaireService"> <wsdlsoap:address location="http://localhost:8080/axis/services/AnnuaireService"/> </wsdl:port> </wsdl:service> </definitions>

2009-2010

32

Exercice
crire la description WSDL dun service qui calcule la somme de deux entiers naturels

2009-2010

33

Services Web
SOAP: Simple Object Access Protocol

2009-2010

34

SOAP
Simple Object Access Protocol Intgration de XML au-dessus de HTTP : Pour accder services, objets et serveurs Indpendant de toute plate-forme Codage universel XML par opposition aux spcifiques : DCOM - DCE/NDR CORBA - IIOP/CDR JAVA - RMI/JRMP RDA - XDR Rsolution des problmes de scurit : Les firewalls supportent des ports spcifiques (HTTP, FTP) La plupart des middlewares assignent des ports dynamiques Associ WSDL pour publication d'interfaces Source G. Gardarin
2009-2010

35

Un change type

Port de connexion (URL) Pare-feu Pare-feu

Messages
Procuration d'interface

SOAP HTTP

Appel

Translateur SOAP

Application Cliente

RPC

Rponse Parser XML Parser XML

local

Serveur d'application

Source G. Gardarin
2009-2010

36

Elments d'un message


Envelope
lment pouvant contenir des dclarations d'espaces de noms ou des sous-lments

Header
lment optionnel fils de Envelope Permet des extensions telles que authentification, session, etc.

Body
lment obligatoire fils de Envelope Dfinit la mthode appele, contient les paramtres Peut contenir un lment Fault en cas d'erreur
Source G. Gardarin
2009-2010 XML-RPC et

SOAP

37

Structure dun message SOAP

SOAP Message HTTP Headers SOAP Envelope SOAP Header Headers SOAP Body Method Call & Data

Le message SOAP Complet Entte standard HTTP et entte SOAP HTTP Enveloppe Entte Entte individuelle Corps qui contient les appels de mthodes SOAP Appel de mthode et description en XML de donnes

2009-2010

38

SOAP : Message

<soap:Envelope <soap:Header> ... entte... </soap:Header> <soap:Body> ... Corps du message... <soap:Fault> ... Erreurs ventuelles ... </soap:Fault> </soap:Body> </soap:Envelope>
2009-2010

39

Lenveloppe et lentte
Lenveloppe dfinit le document XML comme tant un message SOAP <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" soap:encodingStyle="http://schemas.xmlsoap.org/soap/ encoding/"> </soap:Envelope> L entte contient des lments dfinis par lutilisateur <soap:Header> <m:local xmlns:m="http://www.Computer.com/local/"> <m:language>fr</m:language> <m:currency>Euro</m:currency> </m:local> </soap:Header>
2009-2010

40

Le corps : Appel
Le corps
Doit tre prsent dans le message SOAP Contient le message

<soap:Envelope> <soap:Body> <sommeDemande xmlns:m="urn:MonPremierService"> <param1>25</param1> <param2>-25</param2> </sommeDemande> </soap:Body> </soap:Envelope>

2009-2010

41

Le corps: rponse
<soap:Envelope> <soap:Body> <sommeReponse xmlns:m=urn:MonPremierService> <return>0</return> </sommeReponse> </soap:Body> </soap:Envelope>

2009-2010

42

Le corps : rponse
Erreurs qui apparaissent pendant lexcution du message <soap:Envelope> <soap:Body> <soap:Fault> <faultstring> On ne peut sommer des entiers ngatifs </faultstring> </soap:Fault> </soap:Body> </soap:Envelope>

2009-2010

43

Exercice
crire un exemple dun message SOAP envoy ou par le service Web annuaire

2009-2010

44

Services Web
Dveloppement de SW avec Axis

2009-2010

45

Introduction
Implantation de SOAP1.1

Java
OpenSource Communaut Apache

Apache, Tomcat, Xerces, Struts, Cocoon


Support cot serveur

Servlet qui reoit et envoie des messages SOAP HTTP (pont SMTP)
Support cot client

API pour envoyer des messages SOAP sur HTTP et SMTP

2009-2010

46

Moteur de Servlets (Notion)


Une Servlet (HTTP) objet Java qui fonctionne en mode requte/rponse (HTTP) Un moteur (container) de Servlet application qui reoit des requtes http et qui les transmet aux Servlets Exemples Tomcat (couplage avec Apache), Websphere (couplage avec IBM http Server), Weblogic

2009-2010

47

Architecture (Serveur)
Le client envoie des messages SOAP/HTTP La Servlet AxisServlet reoit et renvoie les messages SOAP et transmet aux objets Java correspondant Les Objets Java effectuent les services. Ils sont des objets Java classiques.

SOAP/HTTP AxisServlet Moteur de Servlet (Tomacat) JVM

2009-2010

48

Tomcat File System


TOMCAT webapps
examples WEB-INF web.xml classes *.class jsp index.html web.xml WEB-INF classes *.class lib axis Somme.jws anotherapp

lib Exp.jsp *.jar

*.jar

2009-2010

49

Dveloppement dun Web Service JWS (axis1)


Dvelopper une classe Java public class Somme { public int sommer(int i1, int i2) { return i1+i2; } } Sauvegarder la classe dans Somme.jws Copier Somme.java dans le rpertoire axis Lancer le serveur tomcat Obtention de la description WSDL http://postex:8080/axis/Somme.jws?WSDL

2009-2010

50

Dveloppement dun client partir du WSDL (axis1)

Gnration dun ensemble de classes facilitant lenvoi de messages SOAP: java org.apache.axis.wsdl.WSDL2Java file.wsdl Classes gnres: Type, PortType, Binding et Service Construction du client : Instancier un Service Obtenir un Port partir du Service Utiliser les mthodes du Port Construire les paramtres en fonction des Types

2009-2010

51

Le client (axis1)
public class Client { public static void main(String[] args) { try { // Instancier un Service SommeService service=new SommeServiceLocator(); // Obtenir un Port partir du Service Somme port=service.getSomme(); // Utiliser les mthodes du Port int result = port.sommer(2,3); System.out.println("La somme est : "+result); } catch (Exception ex) { ex.printStackTrace(); }

} }

2009-2010

52

Axis2 avec ADB

Gnration dun ensemble de classes facilitant lenvoi de messages SOAP: $AXIS2_HOME/bin/wsdl2java.sh uri file.wsdl -d adb -s Classes gnres: Sub Construction du client : Instancier le stub Instancient et initialiser la requte (sous classe du stub) Utiliser les mthodes du stub Construire les paramtres en fonction des Types

2009-2010

53

Vous aimerez peut-être aussi