WEBSERVICES WEBSERVICES

afternoonhandsomelyΛογισμικό & κατασκευή λογ/κού

17 Νοε 2012 (πριν από 5 χρόνια)

341 εμφανίσεις

W
E B
S
E R V I C E S
W
E B
S
E R V I C E S
1
FABRICE
CLARI
-FABRICE.CLARI@ZALTANA.FR
FABRICE
CLARI
-FABRICE.CLARI@ZALTANA.FR
W
EB
SERVICES
XML
SOAP, WSDL
RPC avec SOAP
AXIS
SOA …
WEB
SERVICES
XML
SOAP, WSDL
RPC avec SOAP
AXIS
SOA …
W
E B
S
E R V I C E S
W
E B
S
E R V I C E S
2

Pré-requis
oXML
oEspaces de noms (namespaces)
oXML Schema
•Services Web : définition
•SOAP
•Les protocoles de communication
•RPC avec SOAP
•WSDL
•UDDI
•Un scénario
•Les éditeurs
•La sécuritédes services web
•AXIS
•SOA
W
E B
S
E R V I C E S
W
E B
S
E R V I C E S
3
W
E B
S
E R V I C E S
W
E B
S
E R V I C E S
4
Introduction àXML (2/4)
•Entre deux tags XML ouvert/fermé, se trouve un
élément
;
•Un tag XML peut contenir d’autres tags, ce qui permet une
représentation
hiérarchique des données
;
•Un tag peut contenir un (voire plusieurs)
attribut
(s) (pistedans le tag titre
de l’exemple précédent) ;
•Tous les tags ouverts doivent être fermés ;•
Un tag vide est valide
(<prix euros='20' /> par exemple) ;
•Exemple de commentaires en XML :
<!--commentaire -->
;
•Un document XML commence par un
prologue
:
<?xmlversion="1.0" encoding="ISO-8859-1" ?>
•Différents types de
parseur XML
existent :
DOM
(Document Object Model),
qui construit un arbre en mémoire du document, et
SAX
(Simple API to XML) qui
associe un évènement àchaque balise lue.
Astuce
: pour vérifier la validitéd’un document XML, vous pouvez l’ouvrir avec
Internet Explorer (version supérieure ou égale àla 5.5) qui dispose d’un parseur
XML. Il affichera une erreur si le document est syntaxiquement faux.
W
E B
S
E R V I C E S
W
E B
S
E R V I C E S
5
<?xmlversion="1.0" encoding="ISO-8859-1" ?>
<albums>
<album>
<artiste>Jean-Jacques Goldman</artiste>
<titre>Chansons pour les pieds</titre>
<date_de_parution>2001</date_de_parution>
<chansons>
<piste n='1'>Ensemble</piste>
<piste n='2'>Et l'on y peut rien</piste>
<piste n='3'>Une poussière</piste>
</chansons>
<prix euros='20' />
</album>
</albums>
W
E B
S
E R V I C E S
W
E B
S
E R V I C E S
6
<?xmlversion="1.0" encoding="ISO-8859-1" ?>
<magasin
xmlns:magasin="http://magasin.org"
xmlns:album="http://album.org"
xmlns:livre="http://livre.org">
<magasin:albums>
<magasin:album>
<album:artiste>Jean-Jacques Goldman</album:artiste>
<album:titre>Chansons pour les pieds</album:titre>
<album:date_de_parution>2001</album:date_de_parution>
<album:chansons>
<album:pistepiste='1'>Ensemble</album:piste>
<album:pistepiste='2'>Et l'on y peut rien</album:piste>
<album:pistepiste='3'>Une poussière</album:piste>
</album:chansons>
<album:prixeuros='20' />
</magasin:album>
</magasin:albums>
<magasin:livres>
<magasin:livre>
<livre:auteur>Jean-Marie Chauvet</livre:auteur>
<livre:titre>Services Web avec SOAP, WSDL, …</livre:titre>
<livre:date_de_parution>2002</livre:date_de_parution>
<livre:editeur>eyrolles</livre:editeur>
<livre:prixeuros='39' />
</magasin:livre>
</magasin:livres>
</magasin>
W
E B
S
E R V I C E S
W
E B
S
E R V I C E S
7
Introduction àXML Schema
XML Schema
précise comment représenter en XML une structure de données. A
la différence des
DTD
, qui ne définissent que les imbrications des éléments entre
eux,
XML Schema
définit les imbrications ainsi que les types des données
(éléments et attributs).
Ainsi, le XML Schemadéfinissant l’exemple <livre>(simplifié) est :
<xsd:schemaxmlns:xsd="http://www.w3.org/2000/10/XMLSchema">
<xsd:elementname="livre">
<xsd:complexType>
<xsd:sequence>
<xsd:elementname="auteur" type="xsd:string"
minoccurs="1" maxoccurs="1"/>
<xsd:elementname="titre" type="xsd:string"/>
<xsd:elementname="date_de_parution" type="xsd:string"/>
<xsd:elementname="editeur" type="xsd:string"/>
<xsd:elementname="prix">
<xsd:complexType>
<xsd:attributename="euros"
type="xsd:int"
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
W
E B
S
E R V I C E S
W
E B
S
E R V I C E S
8
De multiples définitions de la notion de
Web Services
existent, mais sont
généralement trop vagues ou trop précises.
Un groupe de travail du W3C (
Web Services Architecture group
, composéde
multiples membres de l’industrie) en donne une définition exacte :
«A web service is a software application identified by a
URI, whose interfaces and binding are capable of being
defined, described, and discovered by XML artifacts, and
supports direct interactions with other software
applications using XML-based messages via Internet-based
protocols ».
(source : http://www.w3c.org/2002/ws/arch/2/08/wd-wsa-arch-20020821.html#webservice)
•Cette définition met l’accent sur l’utilisation du langage XML, utilisépour décrire
la structure des messages échangés entre clients et serveurs de Services Web ;
•Elle ne précise pas quel protocole de transport doit être utilisé. Cependant, il doit
s’agir d’un protocole utilisésur Internet.
Web Services: une définition
W
E B
S
E R V I C E S
W
E B
S
E R V I C E S
9
W
E B
S
E R V I C E S
W
E B
S
E R V I C E S
10
Le protocole SOAP (1/5)
Le protocole
SOAP
(
Simple Object Access Protocol
) est devenu le standard
pour décrire les messages en XML entre services web. Ce dernier peut être utilisé
sur différents protocoles de transports. Les deux principaux protocoles utilisés
étant
HTTP
et
SMTP
.
De par sa nature, SOAP permet l’inter-opérabilitéentre différents systèmes
d’exploitation et différentes plate-formes(J2EE, .NET, …).
SOAP permet de créer des applications de type distribuées, en suivant le modèle
RPC (RemoteProcedureCall).
La grande majoritédes services web utilise
le protocole SOAP.
Un message SOAP est un document XML
composéd’une enveloppe qui contient
une entête et le corps du message.
Enveloppe SOAP
En-tête SOAP
(header)
Corps du message SOAP
(body)
W
E B
S
E R V I C E S
W
E B
S
E R V I C E S
11
<
Envelope
>
<
Header
>
<Transaction>3<Transaction>
</
Header
>
<
Body
>
<echoString>
<arg0>Hello!</arg0>
</echoString>
</
Body
>
</
Envelope
>
L’enveloppe contient tout le message
Le protocole SOAP (2/5)
Prenons l’exemple d’un message SOAP appelant une méthode echoString(string), qui prend
en paramètre une chaîne de caractères.
Le corps (body) du message
contient toutes les informations
destinées au récepteur (les
paramètres par exemple) ou
l’élément faultsi une erreur s’est
produite.
L’entête (header) contient des
informations non-liées àla
méthode, comme par exemple l’ID
de la transaction ou des
informations pour la sécurité(infos
du header = gestion du contexte).
L’entête est facultative et les
éléments qu’elle contient peuvent
avoir l’attribut mustUnderstand,
qui précise si le serveur est obligé
de connaître et traiter l’élément.
W
E B
S
E R V I C E S
W
E B
S
E R V I C E S
12
<
Envelope
>
<
Header
>
<Transaction>3<Transaction>
</
Header
>
<
Body
>
<echoStringResponse>
<return>Hello!</return>
</echoStringResponse>
</
Body
>
</
Envelope
>
Le protocole SOAP (3/5)
Lorsque le serveur répond àla méthode echoString(string), il ajoute Responseàla suite du
tag <echoString>(d’une manière générale, il rajoute Responseàla suite du tag contenant
le nom de la requête.
Si une erreur se produit, la réponse contient l’élément
Fault
(dans le corps du message).
W
E B
S
E R V I C E S
W
E B
S
E R V I C E S
13
Le protocole SOAP (4/5)
Une des forces de SOAP est de permettre l’inter-opérabilitéentre différentes
plate-formes. Il est donc important d’avoir des
règles de codage des types de
données
, afin que ces dernières puissent être encodées/décodées sans
difficultés.
On distingue deux types de données :
•Les données de
types simples
(une chaîne de caractère par exemple) ;
•Les
types composés
: structures ou tableaux.
Dans le cas oùdes données binaires devraient transiter (comme une image par
exemple), il est également possible d’envoyer un message
SOAP avec
attachement
et ce grâce àun message
MIME
(
MultimediaInternet Mail
Extension
).
Pour pouvoir référencer une pièce jointe depuis le corps du message SOAP, une
URIest utilisée, faisant référence àla pièce jointe.
W
E B
S
E R V I C E S
W
E B
S
E R V I C E S
14
Le protocole SOAP (5/5)
<soapenv:Envelopexmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<ns1:echoStringResponse
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:ns1="http://soapinterop.org/">
<return xsi:type="xsd:string">Hello!</return>
</ns1:echoStringResponse>
</soapenv:Body>
</soapenv:Envelope>
Les messages précédents présentaient SOAP sans l’utilisation des espaces de
noms, obligatoires d’après les spécifications du protocole.
•xsicorrespond au namespacedes types de données connus ;
•xsdcorrespond au namespacedu schemadu document ;
•soapenvcorrespond au namespacede l’enveloppe (utilisépour la gestion de la
version SOAP).
W
E B
S
E R V I C E S
W
E B
S
E R V I C E S
15
La couche de transport (1/6)
Comme nous l’avons vu précédemment, la définition ne définit pas
une couche
de transport
particulière. Le protocole SOAP quant àlui n’est pas dépendant
d’un transport particulier (dans sa version 1.0 il ne pouvait circuler que sur HTTP ;
cela a étécorrigédans la version 1.1).
Actuellement, deux couches de transport sont fréquemment utilisées (HTTP étant
le plus courant) :
•HTTP, lors d’
appels synchrones
;
•SMTP, lors d’
appels asynchrones
.
Les spécifications de SOAP ne précisant pas de protocole particulier, on peut très
bien imaginer invoquer des services web grâce au protocole FTP par exemple…
Le protocole
HTTP
(
HyperText Transfert Protocol
) est l’un des protocoles les
plus utilisés sur Internet. La plupart des clients web (IE, …) l’utilisent pour
communiquer avec un serveur.
Ce protocole définit le format des requêtes qu’un client peut envoyer ainsi que les
résultats qu’il peut attendre.
Chaque requête contient une URL qui contient l’identifiant d’un objet demandépar
le client (ex.: pages HTML, images, …).
Ce protocole est défini par le
W3C
et est présentédans une RFC (Requestfor
Comment) : ftp://ftp.isi.edu/in-notes/rfc2616.txt.
W
E B
S
E R V I C E S
W
E B
S
E R V I C E S
16
W
E B
S
E R V I C E S
W
E B
S
E R V I C E S
17

Quand un client envoie une requête, il l’envoie grâce àune méthode (
GET
,
POST
ou
HEAD
), suivie d’une
URI (Uniform Ressource Identifier) qui identifie la ressource demandée. Après cette URI se trouve la version
du protocole HTTP (1.0 ou 1.1) ;
•Dans les lignes suivantes se trouvent les entêtes qui précisent par exemple quels sont les documents
acceptés par client, de quel type de client il s’agit, …
•Après les entêtes se trouve le corps de la requête, rempli seulementlorsque la méthode POST est utilisée.
Permet de supprimer une ressource.
DELETE
Permet d’ajouter une ressource.
PUT
Permet au client d’envoyer des données dans le corps de la requête.
Utile pour envoyer des formulaires, des documents, poster des messages dans les
newsgroups…
Cette méthode est celle qui convient le mieux àSOAP
POST
Comme GET, mais aucune information ne se trouve dans le corps durésultat.
Notamment utilisépour voir si un document a étémis àjour.
HEAD
Utilisépour demander un document : GET index.html
Le corps d’une telle requête est toujours vide.
Permet également de passer des paramètres au serveur, en les collant àl’URL :
GET index.jsp?userLogin=toto&userPasswd=kkju
Comme résultat, GET renvoie d’abord les entêtes, puis le contenu du document
GET
Les méthodes
•D’autre méthodes existent : LINK, UNLINK, OPTIONS, TRACE mais sont rarement utilisées ;
•La réponse du serveur contient le statut de la réponse, les entêtes puis le corps de la réponse (par exemple
le contenu d’un document HTML ;
•Différents statuts existent. Les principaux sont : 200 (ok), 400 (mauvaise requête), 403 (client non
autorisé), 404 (document inexistant), 500 (erreur d’exécution –sur le serveur).
W
E B
S
E R V I C E S
W
E B
S
E R V I C E S
18
Résumé
:
•Format d’une
requête
HTTP:
Commande
En-têtes
[Ligne vide ]
Corps
La couche de transport (4/6) : HTTP
http://fr.wikipedia.org/wiki/HTTP
Codes de retour
:
http://fr.wikipedia.org/wiki/Liste_des_codes_HTTP
Version actuelle
: 1.1
•Format d’une
réponse
HTTP:
Status
En-têtes de réponse
[Ligne vide ]
Corps de réponse
W
E B
S
E R V I C E S
W
E B
S
E R V I C E S
19
La couche de transport (5/6) : SMTP
SMTP
(
Simple Mail Transfer Protocol
) est le principal protocole utilisésur
Internet pour faire transiter les emails entre deux hôtes (une passerelle peut
également être utilisée).
SMTP
utilise TCP comme couche de transport et le port 25 par défaut.
Exemple de l’utilisation du protocole
SMTP
pour l’envoi d’un mail sur
wanadoo.fr :
-La première étape est l’ouverture d’une connexion (socket) sur le port 25 de
smtp.wanadoo.fr.
W
E B
S
E R V I C E S
W
E B
S
E R V I C E S
20
Exemple d’envoi d’un message SOAP au dessus de HTTP
Le message ne contient aucune information le liant àla couche de transport.
Concernant le protocole HTTP, l’ajout d’un attribut SOAPAction:uneURIpermet au
destinataire (le serveur HTTP) de savoir qu’il reçoit une requête SOAP. La valeur
est une uriqui n’est pas vérifiée.
Pour un envoi viaHTTP:
•ouverture d’une socket sur le port du serveur (80 par défaut) ;
•puis :POST /axis/services/echoHTTP/1.0
Content-Type: text/xml; charset=utf-8
User-Agent: Axis/1.0
Host: 192.168.0.1:8080
Cache-Control: no-cache
Pragma: no-cache
SOAPAction: http://tempuri.org/echo
Content-Length: 453 •
puis est envoyée la requête.
La couche de transport (6/6)
Obligatoire pour requête
SOAP sur HTTP
W
E B
S
E R V I C E S
W
E B
S
E R V I C E S
21
W
E B
S
E R V I C E S
W
E B
S
E R V I C E S
22
Code de
l’appelant
STUB
Réseau
Réseau
W
E B
S
E R V I C E S
W
E B
S
E R V I C E S
23
A ses débuts, SOAP était destinéàêtre un protocole fournissant un mécanisme
de RPC, inter-opérable, car utilisant XML & HTTP (il est maintenant –entre autre–
un protocole de communication entre services web par échanges de messages
XML).
Lors d’un appel RPC, un message SOAP doit contenir :

l’adresse du destinataire du message ;

le nom de la méthode àexécuter ;

les paramètres àpasser àla méthode.
En devenant un RPC, les services web en SOAP peuvent être vus comme un point
d’entrée dans les applications «lourdes »: par exemple, un service web peut
permettre une connexion entre un client sur Internet et une application àbase
d’EJB.
De nombreuses API (Application Programmer Interface) permettent de créer des
stubsde méthodes exposées dans des services web.
Nous étudierons en TP l’API Axis d’Apache («un SOAP engine»).
RPC avec SOAP
W
E B
S
E R V I C E S
W
E B
S
E R V I C E S
24
W
E B
S
E R V I C E S
W
E B
S
E R V I C E S
25
W
E B
S
E R V I C E S
W
E B
S
E R V I C E S
26
W
E B
S
E R V I C E S
W
E B
S
E R V I C E S
27
WSDL (4/4)
WSDL : résumédes éléments d’un document •
Operation
: une action particulière supportée par le service web décrit. En
faisant l’analogie avec Java, on peut comparer une
Operation
àune
(méthode d’une)
Interface
;

Message
: définition des types de données utilisées lors de l’invocation (et
de la réponse) d’une opération ;•
PortType
: un ensemble (1..n) d’opérations ;

Binding
: lien entre un
PortType
et un protocole d’accès ;

Port
: définit un point d’accès (cadune URL par exemple) pour un
binding
;

Service
: contient une collection de
ports
.
W
E B
S
E R V I C E S
W
E B
S
E R V I C E S
28
W
E B
S
E R V I C E S
W
E B
S
E R V I C E S
29
UDDI (2/2)
L’API UDDI propose deux fonctionnalités principales :

la recherche de services
(envoi de requêtes).

la publication de services
dans un annuaire UDDI ;
Les clients UDDI interrogent les serveurs (les sites opérateurs) UDDI en
envoyant des requêtes formatées en SOAP (sur HTTP avec la méthode
POST).
______________
Le slidesuivant présente un scénario complet. Les étapes sont :
1.Publication d’un service web par une société;
2.Recherche d’un service web ;
3.Découverte d’un service web ;
4.Consommation d’un service web.
W
E B
S
E R V I C E S
W
E B
S
E R V I C E S
30
W
E B
S
E R V I C E S
W
E B
S
E R V I C E S
31
W
E B
S
E R V I C E S
W
E B
S
E R V I C E S
32
1.4
.
Tous les éditeurs du monde Java proposent leur kit pour les services web :

Oracle
pour 10gAS ;

BEA
pour WebLogic;

IBM
pour WebSphere;

Sun
pour Sun Java System Application Server ;
•…
De nombreux projets Open Source existent également, comme par exemple
l’API Axis utilisée en TP. Les IDE open source intègrent eux aussi ces
technologies : Eclipse, NetBeans...
W
E B
S
E R V I C E S
W
E B
S
E R V I C E S
W
E B
S
E R V I C E S
34
Seuls le client
et
le serveur
peuvent
déchiffrer ces
messages
W
E B
S
E R V I C E S
W
E B
S
E R V I C E S
35
W
E B
S
E R V I C E S
W
E B
S
E R V I C E S
36
W
E B
S
E R V I C E S
W
E B
S
E R V I C E S
37
W
E B
S
E R V I C E S
W
E B
S
E R V I C E S
38
W
E B
S
E R V I C E S
W
E B
S
E R V I C E S
39
W
E B
S
E R V I C E S
W
E B
S
E R V I C E S
40
W
E B
S
E R V I C E S
W
E B
S
E R V I C E S
41
W
E B
S
E R V I C E S
W
E B
S
E R V I C E S
42
W
E B
S
E R V I C E S
W
E B
S
E R V I C E S
43
La mobilitéet les services web (1/2)
De nombreuses solutions permettent d’invoquer des services web depuis des
clients mobiles
(PDA PocketPC/Linux, téléphones J2ME).
Avec un OS Microsoft :

.NET CF
: la version pour terminaux mobiles de l’environnement d’exécution
(runtime) de .NET intègre les API pour invoquer des services web ;

PocketSOAP
: client open source SOAP, disponible sous la forme d’un objet
COM (également disponible pour win32) ;
En faisant du Java :•
J2ME Web Service API
(JSR 172) :
http://developers.sun.com/techtopics/mobility/apis/articles/wsa
;

Oracle J2ME Web Service
: cfslidesuivant.
PS : ce n’est pas une liste exhaustive !
W
E B
S
E R V I C E S
W
E B
S
E R V I C E S
44
W
E B
S
E R V I C E S
W
E B
S
E R V I C E S
45
Architectures Orientées Services (1/4)
SOA = Services OrientedArchitecture
Source : http://fr.wikipedia.org/wiki/Service_Oriented_Architecture
L’
architectureorientée service
est un modèle d’interaction applicativequi met en
œuvre des services(composants logiciels) :
•avec une forte cohérence interne (par l'utilisation d'un format d'échange pivot, le plus
souvent XML)
•et des couplages externes «lâches »(par l'utilisation de couche d'interface
intéropérable, le plus souvent un Web services).
￿SOA est un concept, les services web en sont une utilisation.
Description d’une architecture SOA :

Annuaire de services
: référence l’ensemble des services disponibles au sein du
système d’information ;•
Bus de services
: le bus a un rôle de médiateur (middleware) entre le consommateur
et le producteur du service, il permet ainsi de réaliser le couplage lâche ;

Service
: cf. slidesuivant.
-> SOA définit comment allier développement orientéobjet et programmation distribuée.
W
E B
S
E R V I C E S
W
E B
S
E R V I C E S
46
W
E B
S
E R V I C E S
W
E B
S
E R V I C E S
47
W
E B
S
E R V I C E S
W
E B
S
E R V I C E S
48
Architectures Orientées Services (4/4)
Source : http://fr.wikipedia.org/wiki/Service_Oriented_Architecture
Parmi les différentescouches de
normes
et
protocoles
qui permettent de bâtir des
architectures orientées services, on relève :•la gestion d'un annuaire de services(quels sont les services mis àdisposition et par qui)
avec :
UDDI
(UniversalDescription Discoveryand Integration) normalisépar l'OASIS ;
•la description des interfaces des services(quelles sont les données nécessaires à
l'exécution du service, que fournit-il en retour, ...) avec :
WSDL
(Web Services Description
Language) recommandépar le W3C ;•l'invocation(ou l'appel) du service (la requête transmise au service) avec :
SOAP
(Simple
Object Access Protocol) recommandépar le W3C ;•le format des données échangéesavec :
XML
(eXtensibleMarkupLanguage) recommandé
par le W3C ;•le transport des donnéesavec les protocoles internet :
HTTP
et
TCP/IP
qui sont des
normes RFC ;•la gestion de la sécuritéavec :
SSL
(Secure Sockets Layer),
XML Signature
,
XML
Encryption
,
SAML
(Security Assertion MarkupLanguage) ou encore
XKMS
(XML Key
Management Specification, qui gère les infrastructures àclépublique ou PKI) ;
•l'orchestration(on parle également de chorégraphie) des services pour constituer des
processus métier avec :
BPEL4WS
(Business ProcessExecutionLanguageFor Web Services) qui
regroupe
WSFL
(Web Services Flow Language) d'IBM et
XLang
de Microsoft, ou encore
WSCI
(Web Services ChoregraphyInterface) ;•la gestion transactionnelle:
WS-Transaction
d'IBM,
XAML
(Transaction AuthorityMarkup
Language) ou encore
BTP
(Business Transaction Protocol).