Introduction aux Web Services

1/35
100%
Rendu du PDF...
Page 1 sur 35Lecteur de document UniversityLib

Introduction aux Web Services

Service-Oriented Architecture (SOA) and Web Services · notes

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"

Publicité

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>

Publicité

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 !

Publicité

 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

Publicité

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