INTRODUCTION AUX WEB SERVICES
DÉFINITIONS
W3C
"Un Web Service est une application logicielle
identifiée par un URI, dont les interfaces et associations peuvent être définies, décrites et découvertes par des méthodes XML, et qui peut interagir directement avec d'autres applications en utilisant des messages XML via les protocoles Internet standards."
Forrester Research
"Logiciel conçu pour être utilisé par d'autres logiciels à travers les protocoles et standards Internet."
18/10/2020
1
CARACTÉRISTIQUES:
Accessible via le web par des protocoles bien
connus
Décrits à partir de XML Interagissent via XML Localisables à partir de registres Transversaux aux plateformes et très
faiblement couplés
L’ORIENTÉE SERVICE
Ils introduisent un nouveau modèle de
développement basé sur ce qu’on appelle les architectures orientées services (SOA)
Un service traite un problème donné
Plusieurs services peuvent être combinés pour
résoudre des problèmes de plus en plus complexes
18/10/2020
2
L’ORIENTÉE SERVICE
Avantage le client consommateur n’as pas besoin
de connaître l’identité du fournisseur du service
Le client doit simplement exprimer son besoin
Face à un besoin, plusieurs fournisseurs de services
peuvent exister
Chacun ayant des caractéristiques de coût, de
performance, de fiabilité, etc.
Le client choisit le fournisseur ( Le service)
correspondant le mieux à ses besoins
POURQUOI?
Lorsque l’on a besoin d’interopérabilité dans des
environnements applicatifs distribués Les services peuvent communiquer entre eux et cela
depuis des environnements applicatifs distants Lorsque l’on veut accéder aux applications à
travers un pare-feux Les services web sont définis et accédés avec XML
sur des protocoles standards comme HTTP et SMTP. Ils peuvent alors être invoqués à travers un pare-feux
Lorsque l’on veut profiter de différents
environnement et langages de développement Par une description et une invocation XML, les
services web sont très flexibles et indépendants des langages et des systèmes
18/10/2020
3
18/10/2020
USAGES
Les services web pour représenter des
applications sophistiquées bien délimitées et sans forte interactivité Par exemple, une application qui donne les conditions
de temps
Les services web sont adaptés pour l’assemblage
de composants
Les services web sont adaptés à la représentation
d’application orientées messages
EXEMPLE D’USAGE DES SERVICES WEB
8 SOURCE : W3C
4
18/10/2020
LA VISION: TROUVER UN TRUC
1.
Interroger un annuaire : qui fournit des Trucs?
2. Négocier avec les fournisseurs potentiels
3.
• Nature exacte du service fourni • Qualité/coût/etc. Interagir avec le service du fournisseur choisi • Connaître les modalités d’interaction •
Introduire le service dans ma chaîne de traitements
4. Eventuellement composer des services 5. Eventuellement publier mes propres
services
9
PRINCIPE GÉNÉRAL D’ARCHITECTURE
10 SOURCE : W3C
5
LES TECHNOLOGIES
L’architecture des services web repose essentiellement sur les
technologies suivantes:
UN SERVICE WEB EN ACTION
18/10/2020
6
18/10/2020
ORGANISATION
Introduction Prérequis: XML Le protocole SOAP Description des services web: WSDL Annuaire des services web: UDDI Pour aller plus loin… Conclusion
Les Pages Jaunestm
13
JARGON
XML
XSL-FO
Beaucoup trop d’acronyme s !
WSCI
XHTML
RDF
.NET
WSFL
DTD
RosettaNet
XSLT
ebXML
namespace
HTTPS
ICE
OASIS
OAGIS
HTTP
XML Schema
XSL
SOAP
MIME
RSS
WSDL
UDDI
WSDL
14
7
PRÉREQUIS
XML Arbres étiquettes et ordonnés Syntaxe d’échange normalisée (w3c) Typage par DTD ou XML Schema Langages de requêtes (XPath, XQuery) et de
transformation (XSLT) … vous connaissez déjà !
18/10/2020
8
15
16
NAMESPACES XML
Espaces de nommage, identifiés de manière unique par
URI
<html xmlns="http://www.w3.org/HTML/1998/html4"
Advertisement
xmlns:xdc="http://www.xml.com/books">
<head><title>Book Review</title></head> <body>
<xdc:bookreview>
<xdc:title>XML: A Primer</xdc:title> <table>
<tr align="left">
<td><xdc:author>Simon St. Laurent</xdc:author></td> <td><xdc:price>31.98</xdc:price></td>
</tr>
</table>
</xdc:bookreview>
</body>
</html>
17
XML SCHEMA
Définit la structure d’un document XML: Pour chaque élément, ses fils sont décrits par
une expression régulière.
Spécialisation Syntaxe XML (on va voir des exemples)
Chaque schéma est associé à un
namespace Possibilité de
référencer/importer/réutiliser des schémas externes, grâce aux namespaces.
18
18/10/2020
9
SOAP (EX) SIMPLE OBJECT ACCESS PROTOCOL
LES POINTS FORTS DE SOAP
SOAP est un protocole de transmission de messages. Indépendant de la plateforme (windows, unix, mac,
…)
Définit un ensemble de règles pour structurer des
messages principalement pour exécuter des dialogues requête-réponse de type RPC (Remote Procedural Call)
SOAP n’est pas lié à un protocole de transport donné,
mais il est souvent porté sur HTTP.
Un message SOAP est document XML ayant la forme
suivante: Une déclaration XML (optionnelle) Une enveloppe SOAP (élément racine) composée de:
Une entête SOAP (Header) . Un corps SOAP (body).Basé sur XML et les namespaces.
18/10/2020
10
19
20
PRINCIPES DE SOAP
Permet d’envoyer des messages XML entre deux
machines.
Les messages sont « emballés » dans une enveloppe SOAP L’enveloppe SOAP utilise un XML schéma prédéfini Le schéma du message dépend de l’application
SOAP Envelope (SOAP grammar)
Application Message (Application-Specific grammar)
SOURCE: JEZ WAIN, BULL
21
LES MESSAGES SOAP : PRÉSENTATION
18/10/2020
11
EXEMPLE SOAP: REQUÊTE
<?xml version=“1.0”> <soap:Envelope xmlns:soap=http://www.w3.org/2001/12/soap-
envelope soap:encodingStyle=http://www.w3.org/2001/12/soap- encoding> <soap:Body xmlns:m=http://www.stock.org/stock>
<m:GetStockPrice>
<m:StockName>IBM</m:StockName>
</m:GetStockPrice>
</soap:Body> </soap:Envelope>
EXEMPLE SOAP: RÉPONSE
<?xml version=“1.0”>
<soap:Envelope xmlns:soap=“http://www.w3.org/2001/12/soap-
encoding” soap:encodingStyle=“http://www.w3.org/2001/12/soap- encoding”>
<soap:Body xmlns:m=“http://www.stock.org/stock”>
<m:GetStockPricesResponse>
<m:Price>34.5</m:price>
</m:GetStockPricesResponse>
</soap:Body>
</soap:Envelope>
18/10/2020
12
23
24
WSDL : WEB SERVICES DESCRIPTION LANGUAGE
25
PRINCIPES
Un langage (en XML) de description des services
fournis par un serveur.
Une description de type « boîte noire » de ces services :
Quelles sont les opérations disponibles ? Comment on y accède (adresse, protocole,…) Quel est le format des messages échangés entre le client et le
serveur: Pour invoquer le service Pour interpréter les résultats
Types XML Schema des entrées sorties.
…mais rien sur ce qu’ils font vraiment (leur
sémantique).
Documents WSDL, générés par les outils de
26
développement favorisent une intégration rapide des services
18/10/2020
13
STRUCTURE D’UN DOCUMENT WSDL
Les 4 premières parties , décrivant les informations
abstraites indépendantes, sont les suivantes: Les types: un type décrit la structure de donnée transmise
dans un message
Les messages: un message décrit l’ensemble des données transmises au cours de l’opération (requête ou réponse)
Les types de ports: un type de port est composé de
l’ensemble des opérations abstraites applicables au service
Les liaisons: la liaison décrit la façon dont un ensemble
d’opérations abstraites, appelé « type de port », est lié à un port selon un protocole réel
STRUCTURE D’UN DOCUMENT WSDL
Les deux dernières parties décrivant des
informations liées à un usage de contexte du service, sont les suivantes: Les ports: un port spécifie une adresse qui est
associé à une liaison définissant un simple point de terminaison
Le service : un service est décrit comme un
ensemble de points finaux du réseaux appelés « ports »
18/10/2020
14
Service
Port
Binding
Port Types
Operations
Messages
TYPES : DÉFINITION XML SCHEMA DES DONNÉES
<types>
<schema targetNamespace="http://example.com/stockquote.xsd"
xmlns="http://www.w3.org/2000/10/XMLSchema"> <element name="TradePriceRequest">
<complexType>
<element name="tickerSymbol" type="string"/>
</complexType>
</element> <element name="TradePrice">
<complexType>
<element name="price" type="float"/>
</complexType>
</element>
Advertisement
Types
</schema>
</types>
SOURCE: FRANK ROBINSON. SILVERSTREAM
29
Service
MESSAGES : COLLECTIONS DE TYPES
Port
Binding
Port Types
Operations
Messages
<message name="GetLastTradePriceInput">
<part name="body" element="xsd1:TradePriceRequest"/>
</message>
<message name="GetLastTradePriceOutput">
<part name="body" element="xsd1:TradePrice"/>
Types
</message>
SOURCE: FRANK ROBINSON. SILVERSTREAM
30
18/10/2020
15
OPERATIONS : FONCTIONS DISPONIBLES
Définition du pattern d’intéraction par les entrées- sorties : - Input only - Output only - Input-Output - Output-Input
Service
Port
Binding
Port Types
Operations
<operation name="GetLastTradePrice">
<soap:operation
soapAction="http://example.com/GetLastTradePrice"/>
Messages
<input>
<soap:body use="literal"/>
</input> <output>
<soap:body use="literal"/>
Types
</output>
</operation>
SOURCE: FRANK ROBINSON. SILVERSTREAM
31
PORT TYPES (INTERFACES): ENSEMBLES D’OPÉRATIONS
Service
Port
Binding
Port Types
<portType name="StockQuotePortType">
<operation name="GetLastTradePrice">
<input message="tns:GetLastTradePriceInput"/> <output message="tns:GetLastTradePriceOutput"/>
Operations
</operation>
</portType>
Messages
Types
SOURCE: FRANK ROBINSON. SILVERSTREAM
32
18/10/2020
16
18/10/2020
Service
Port
BINDING : ASSOCIE DES PROTOCOLES AUX MÉTHODES
Trois types de bindings : • SOAP • HTTP GET & POST • MIME
Binding
<binding name="StockQuoteSoapBinding“ type="tns:StockQuotePortType"> <soap:binding style="document"
Port Types
Operations
transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="GetLastTradePrice">
<soap:operation
soapAction="http://example.com/GetLastTradePrice"/> <input>
<soap:body use="literal"/>
</input> <output>
<soap:body use="literal"/>
Messages
</output>
</operation>
</binding>
Types
SOURCE: FRANK ROBINSON. SILVERSTREAM
33
Service
PORT : ASSOCIE UNE ADDRESSE (URL) À CHAQUE BINDING
Port
<port name="StockQuotePort" binding="tns:StockQuoteBinding"> <soap:address location="http://example.com/stockquote"/>
</port>
Binding
Port Types
Operations
Messages
Types
SOURCE: FRANK ROBINSON. SILVERSTREAM
34
17
18/10/2020
Service
Port
SERVICE : ENSEMBLE DE PORTS
<service name="StockQuoteService">
<documentation>My first service</documentation> <port name="StockQuotePort"
binding="tns:StockQuoteBinding">
<soap:address
location="http://example.com/stockquote"/>
Binding
</port>
</service>
Port Types
Operations
Messages
Types
SOURCE: FRANK ROBINSON. SILVERSTREAM
35
IMPLÉMENTATION DES SERVICES WEB
36
18
DE NOMBREUX ACTEURS
Microsoft .Net J2EE (Sun, IBM, etc...) Implémentations open-source … Intéropérabilité : Les services des uns sont
utilisables par les autres !
Advertisement
WS-I.org: Web Services interoperability
organization
37
COMPOSANTS APPLICATIFS
18/10/2020
19
MISE EN PLACE D’UN SERVICE WEB
LES IMPLÉMENTATIONS DES SERVICES WEB
Plusieurs implémentations de moteurs SOAP permettant la mise en oeuvre de services web avec Java notamment plusieurs solutions open source: Intégrées à la plate-forme Java EE 5.0 et Java SE 6.0 JWSDP de Sun Axis et Axis 2 du projet Apache CXF du projet Apache JBoss WS Metro du projet GlassFish
Chacune utilise une approche spécifique pour la
mise en oeuvre et le déploiement de services web,
18/10/2020
20
JAX-WS
Java API for XML Web Services
JAX-WS propose une solution pour simplifier grandement
le développement des services grâce à l'utilisation d'annotations qui évite d'avoir à écrire du code ou des fichiers pour la plomberie.
JAX-WS, en tant que spécification, est implémentée dans
plusieurs solutions.
L'écriture et le déploiement d'un service web suit plusieurs
étapes. coder la classe qui encapsule le service utiliser la commande wsgen pour générer les fichiers requis
pour le déploiement (schémas, wsdl, classes, ...)
packager le service dans un fichier.war déployer le war dans un conteneur
APACHE AXIS 2
Axis 2 est le successeur du projet Axis 1 Modèle de déploiement spécifique :
les services web peuvent être packagés dans un fichier ayant
l'extension.aar (Axis ARchive) ou contenus dans un sous-répertoire du répertoire WEB-INF/services. La configuration se fait dans le fichier META-INF/services.xml
Le runtime d'Axis 2 est une application web qui peut être utilisé dans n'importe quel serveur d'applications Java EE et même un conteneur web comme Apache Tomcat.
Axis 2 permet de choisir le framework de binding XML/Objets.
42
18/10/2020
21
APACHE CXF
CXF propose un support de plusieurs standards des
services web notamment, SOAP 1.1 et 1.2, WSDL 1.1 et 1.2, WS-ReliableMessaging, et WS-Security, etc. CXF propose une API propriétaire mais implémente
aussi les spécifications de JAX-WS.
CXF propose plus qu'une implémentation d'un moteur SOAP en proposant un framework complet pour le développement de services
Ses principaux objectifs sont la facilité d'utilisation, les performances, l'extensibilité et l'intégration dans d'autres systèmes. CXF utilise le framework Spring.
CXF est utilisé dans d'autres projets notamment
ServiceMix et Mule.
JAVA SE 6
Java SE 6 fournit en standard une
implémentation de JAX-WS 2.0 permettant ainsi de consommer mais aussi de produire des services web uniquement avec la plate-forme SE.
18/10/2020
22
JAVA SE 6 : CRÉATION D’UN WEB SERVICE
1. écrire la classe du service web en utilisant les
annotations de JAX-WS.
JAVA SE 6 : CRÉATION D’UN WEB SERVICE
2. La méthode publish() permet de publier un endpoint
associé à l'url fournie en paramètre.
3. utiliser l'outil wsgen pour générer les classes JAXB qui vont mapper les requêtes et réponses des messages Soap
wsgen –keep –cp . –d ../src com.esprit.ws.Hello
L’utilisation de cet outil n’est pas obligatoire puisque cette
génération est implicite lors de l’exécution
18/10/2020
23
. LA CONSOMMATION DE SERVICES WEB AVEC JAX-WS
Côté client, un proxy est généré pour faciliter l'invocation des opérations du service web.
Les classes de ce proxy sont générées par l'outil
wsimport à la demande du développeur à partir du wsdl.
Étapes du développement du client :
utiliser l'outil wsimport pour générer les classes du
proxy
écrire le code des traitements en utilisant le proxy compiler toutes les classes exécuter le client
UDDI : UNIVERSAL DESCRIPTION, DISCOVERY AND INTEGRATION (OF SERVICES)
18/10/2020
48
24
18/10/2020
UDDI
Où trouver le service dont j’ai besoin ? Quels sont les fournisseurs potentiels ? Lequel est le meilleur pour moi ?
Noyau: annuaires – les pages jaunes
Liste d’entreprises + comment les contacter Classification en catégories (à la Yahoo!) Informations en +: protocole, coût, qualité,
contrat…
Question cruciale : Qui contrôle l’annuaire
? Par exemple: qui contrôle les catégories ? Qui
peut s’enregistrer dans l’annuaire ?
49
UDDI (2)
Consortium industriel (IBM, Microsoft,…) + de 200 entreprises. Moyens de publier et de rechercher des
services
Beaucoup de bruit Limité pour l’instant
Peu de services Langage d’interrogation primitif Informations très limitées
Les entreprises enregistrent Des services
UDDI IBM
réplication
UDDI Microsoft
50
Les clients choisissent des services
25
18/10/2020
4.
Marketplaces, search engines, and business apps query the registry to discover services at other companies 5.
FONCTIONNEMENT 1.
Companies, standards bodies, and programmers populate the registry with descriptions of different types of services
2.
Businesses populate the registry with descriptions of the services they support
UDDI Business Registry
Business Registrations
Service Type Registrations
3. UBR assigns a unique identifier to
each service and business registration
SOURCE: UDDI.ORG
Business uses this data to facilitate easier integration with each other over the Web
51
CONTENU D’UN ANNUAIRE
White pages: les entreprises
Adresse, numéro de tel, Catégorie d’activité
Yellow pages: les services
Description textuelle Classification en catégories
Green pages: infos
techniques Descriptions WSDL
BusinessEntity
tModel Spécifs de services et taxonomies
BusinessService
Master Paris 11 Semi-structured data
publisherAssertion Relations entre deux parties
BindingTemplates Infos techniques
52
Advertisement
26
POUR ALLER PLUS LOIN
Sécurité Composition et orchestration Sémantique Active XML
SÉCURITÉ DES SERVICES WEB
Principales fonctions :
Confidentialité Authentication Integrité des messages Non-repudiation
Infrastructure Cryptographie Systèmes à clé publique, tels que RSA
18/10/2020
27
53
54
SÉCURITÉ DES SERVICES WEB (2)
HTTP fournit un méchanisme d’authentication très
simple
SSL: secure socket layer; un protocole pour transmettre
des données encryptées
HTTPS = HTTP over SSL: très utilisé XML digital signature non-repudiation XML encryption
SSL encrypte le message en entier; problème des
intermédiaires.
XML encryption permet d’encrypter de manière sélective
COMPOSITION ET ORCHESTRATION
Comment
définir des intéractions entre services en créer de nouveaux, par composition
S’apparente aux :
Systèmes de workflow Transactions
Domaine très actif en ce moment
Travaux de recherche Spécifications industrielles (ex: IBM WSFL,
BPEL4WS, WSCI…)
55
56
18/10/2020
28
SÉMANTIQUE
Faire le lien avec le web sémantique : Ontologies, décrivant des concepts et leurs
relations (DAML+OIL)
Modèle basé sur les logiques de description Inférence (inclusion de concepts,…)
Domaine ouvert
CONCLUSION
18/10/2020
29
57
58
LES POINTS FORTS DES SERVICES WEB
XML comme norme et modèle de données Le Web comme terrain de jeu La standardisation (w3c, OASIS)
Intéropérabilité
La modularité et l’extensibilité des specs :
Choix du protocole Synchrone / asynchrone
59
VISION D’ENSEMBLE La conception d’applications devient de la gestion de
flux entre services et d’évenements
Les services atomiques sont vus comme des ensembles
de fonctions invocables
Les services peuvent:
Être situés n’importe où Appartenir à n’importe qui Être développés avec tous types d’outils S’executer sur n’importe quelle plateforme
Les applications utilisent les services selon leurs
besoins Elles les découvrent grâce à UDDI Peuvent négocier leur utilisation dynamiquement Les choisir et les exécuter en temps réel.
SOURCE: IDC 60
18/10/2020
30
RÉFÉRENCES
61
COURTE BIBLIOGRAPHIE
XML XML Schema Xquery
– Extensible Markup Language XML (W3C): http://www.w3.org/XML/ – XML Schema: http://www.w3.org/XML/Schema – XML Query: http://www.w3.org/XML/Query
– Web Services Activity: http://www.w3.org/2002/ws
W3C WS HTTP – Hypertext Transfer Protocol: http://www.w3.org/Protocols/ SOAP – Simple Object Access Protocol: http://www.w3.org/TR/SOAP/ WSDL
– Web Services Description Language: http://www.w3.org/TR/wsdl
OMG – Object Management Group : http://www.omg.org/ CORBA
– Common Object Request Broker Architecture, see OMG
UDDI
– Universal Description, Discovery, and Integration:
http://www.uddi.org/
WSFL WSCI
– Web Services Flow Language: http://xml.coverpages.org/wsfl.html – Web Services Choreography Interface: http://www.w3.org/TR/wsci/
Apache Axis J2EE
– http://ws.apache.org/axis/ – Java 2 Platform, Enterprise Edition: http://java.sun.com/j2ee/62
18/10/2020
31
SERVICE WEB REST
DÉVELOPPEMENT DES SERVICES WEB REST
Plusieurs langages de programmation orientés Web supportent le développement de services Web REST Java, PHP, C#, C++, …
Différents frameworks de développement de
Services Web en Java Ceux qui respectent la spécification JAX-RS Autres : AXIS 2 Apache (ws.apache.org/axis2)
18/10/2020
32
JAX-RS : LA SPÉCIFICATION
JAX-RS est l’acronyme Java API for RESTful
Web Service
Décrite par la JSR 311
Version courante de la spécification est la 1.1
Depuis la version 1.1, JAX-RS fait partie intégrante de la spécification Java EE 6
Le développement des Services Web REST repose sur l’utilisation de classes Java et d’annotations
JAX-RS : IMPLÉMENTATIONS
Différentes frameworks implémentent la spécification
JAX-RS sont disponibles JERSEY : implémentation de référence fournie par Oracle CXF : fournie par Apache, la fusion entre XFire et Celtix RESTEasy : fournie par JBoss RESTlet : un des premiers framework implémentant REST
pour Java
La spécification JAX-RS décrit uniquement la mise en
œuvre de services Web REST côté serveur
Chaque implémentation fournit une API spécifique
pour décrire la couche cliente
18/10/2020
33
JAX-RS : FONCTIONNEMENT
JAX-RS: DÉVELOPPEMENT
Le développement de Services Web avec JAX-RS est basé sur des POJO (Plain Old Java Object) en utilisant des annotations spécifiques à JAX-RS
Seule la configuration de la Servlet «JAX-RS» est requise pour réaliser le pont entre les requêtes HTTP et les classes Java annotées
Un Service Web REST est déployé dans une
application Web
L’interface des services REST est décrite en
WADL http://host/context/application.wadl
18/10/2020
34
étapes :
Créer et annoter un POJO Compiler, Déployer et Tester Possibilité d’accéder au document WADL
JAX-RS : PREMIER SERVICE WEB REST
18/10/2020
35