Vous êtes sur la page 1sur 77

Services Web Part 2

Plan : spcifications lies aux services Web, OSGI, uGaps

Spcifications des Services Web : WS-*

Les spcifications fournissent les abstractions & informations pour


une communication fiable et scurise, Un support transactionnel aux processus mtiers


Scurit Transaction Fiabilit dcouverte Messaging

Mta donnes

Meta donnes

Scurit

Transaction Fiabilit dcouverte Messaging

SOAP permet l'change de messages XML dans un environnement distribu

Dfinit les rgles d'encodage et des conventions pour dfinir les RPC S'adapte plusieurs protocoles de transport

Toutefois, HTTP est largement sur-reprsent

SOAP laisse de nombreuses questions ouvertes ...

Meta donnes

Scurit

Transaction Fiabilit dcouverte Messaging

Comment acheminer des donnes


ne correspondant pas du XML? Via des protocoles autres que HTTP? De faon fortement asynchrone?

Spcifications complmentaires
MTOM (Message Transmission Optimisation Mechanism) Permet d'envoyer des donnes binaires (attachements) fait suite 2 spcifications DIME et WS-Attachment SOAP-over-UDP, WS-Addressing /2003, WS-Eventing, WS-Notification /2003

WS-Addressing (2004)

Identifier les points d'accs d'un service Web Ncessaire pour scuriser l'identification des points d'accs Dcoupler l'identification d'un point d'accs du protocole utilis pour transporter les messages SOAP

Requte SOAP

Le point d'accs du service est identifi dans l'entte HTTP => SOAP est dpendant du protocole de transport
POST /StockQuote HTTP/1.1 Host: www.stockquoteserver.com Content-Type: text/xml Content-Length: nnnn SOAPMethodName: Some-Namespace-URI#GetLastTradePrice <SOAP:Envelope xmlns:SOAP="urn:schemas-xmlsoap-org:soap.v1> <SOAP:Body> <m:GetLastTradePrice xmlns:m="Some-Namespace-URI> <symbol>DIS</symbol> </m:GetLastTradePrice> </SOAP:Body></SOAP:Envelope>
6

WS-Adressing Bilan

SOAP spcifie la structure des messages pour invoquer des services WS-Adressing fournit un format d'adressage au niveau des messages SOAP WS-Adressing permet de dcorrler SOAP du protocole de transport Comment dfinir une communication inter service Web plus flexibles, asynchrone ?

WS-Notification, WS-Eventing

Notification d'vnements

Se connecter un service Web Publier des vnements Souscrire aux vnements

Object of interest Distributed notification service

Event router

Event router

Notify
Event router

Subscribe

Management application Distributed notification service

Subscribe

Event router Event router

Notify

Event generator

Routing topology

Remote event listener

WS-Notification, WS-Eventing

Notification et souscription sont deux messages envoys dans un seul sens Deux approches pour grer des notifications

Approche centralise (broker d'vnements possiblement fdrs) Approche dcentralise

Filtrage des vnements, agrgation sont aussi grs au niveau des spcifications

Exemple de souscription
<s12:Envelope xmlns:s12="http://.../soap-envelope" xmlns:wsa="http://.../addressing" xmlns:wse="http://.../eventing" xmlns:ew="http://.../warnings" > <s12:Header> <wsa:Action> http://.../eventing/Subscribe </wsa:Action> <wsa:MessageID> uuid:d7c574259 </wsa:MessageID> <wsa:ReplyTo> <wsa:Address>http://..../MyEventSink</wsa:Address> </wsa:ReplyTo> <wsa:To>http://www..../oceanwatch/EventSource</wsa:To> </s12:Header>

@ Exemple donn dans la spcification W3C

Suite souscription (o notifier?, identification de la souscription)


<s12:Body> <wse:Subscribe> <wse:Delivery> <wse:NotifyTo> <wsa:Address> http://.../MyEventSink/OnStormWarning </wsa:Address> <wsa:ReferenceProperties> <ew:MySubscription>2597</ew:MySubscription> </wsa:ReferenceProperties> </wse:NotifyTo> </wse:Delivery> </wse:Subscribe> </s12:Body> </s12:Envelope>

@ Exemple donn dans la spcification W3C

Notification (exemple du w3C portant sur la mteo : le vent)


<s12:Envelope xmlns:s12="http://.../soap-envelope" xmlns:wsa="http://.../addressing" xmlns:ew="http://.../warnings" xmlns:ow="http:/.../oceanwatch" > <s12:Header> <wsa:Action> http://../oceanwatch/WindReport</wsa:Action> <wsa:MessageID> uuid:568b4ff2-5fd8d7f </wsa:MessageID> <wsa:To>http://www..../OnStormWarning</wsa:To> <ew:MySubscription>2597</ew:MySubscription> <ow:EventTopics>weather.report </ow:EventTopics> </s12:Header>

@ Exemple donn dans la spcification W3C

Suite notification
<s12:Body> <ow:WindReport> <ow:Date>030701</ow:Date> <ow:Speed>65</ow:Speed> <ow:Location>BRADENTON BEACH</ow:Location> <ow:County>MANATEE</ow:County> <ow:State>FL</ow:State> <ow:Lat>2746</ow:Lat> <ow:Long>8270</ow:Long> ... </ow:WindReport> </s12:Body> </s12:Envelope>

@ Exemple donn dans la spcification W3C

Meta donnes

Scurit

Transaction Fiabilit dcouverte Messaging

WS-ReliableMessaging : dlivrer des messages de faon fiable malgr des erreurs (rseau, logiciel)

Ordonnancement de messages (SOAP) : chaque squence de messages identifie, un numro pour chaque message Perte des messages (SOAP) : s'assurer qu'un message envoy est effectivement reu via des accuss de rception positifs et ngatifs

WS-ReliableMessaging

Oui, mais pourquoi de la fiabilit?


SOAP peut utiliser UDP comme transport TCP fournie des garantie pour 1 saut (et donc pas pour du multi-sauts) Les applications (notamment les transactions) ont des exigences trs contraignantes

WS-Reliable Messaging Guaranties

WS-Reliable Messaging supporte plusieurs formes de garanties


At-Least-Once: garantie le dlivrement At-Most-Once: Garantie sur l'limination des messages dupliqus Exactly-Once: Garantie la fois le dlivrement et l'limination des duplicats

Bilan : ces garantis sont des pr-requis pour un support des transactions et des processus mtiers

Meta donnes

Scurit

Transaction Fiabilit dcouverte Messaging

Besoin : support des transactions et des processus mtiers

Transactions

WS-AtomicTransaction WS-BusinessActivity

Les processus mtiers (avec composition et l'intgration des services Web)

WSCL, WS-choreography, WS-orchestration, BPEL4WS (Business Execution Language for Web Services)

Transaction traditionnelles

Proprits traditionnelles des transactions


Temps de vie limite, couplage fort ACID

Atomicity : le tout ou rien, si une partie de la transaction est un chec, alors toute la transaction est un chec Consistency : seules des donnes valides sont sauvegardes. En cas d'invalidit, la transaction sera retrogrades de faon maintenir un tat cohrent Isolation : les transactions oprent de faon isole Durability

Transactions sur le Web

Proprits des transactions pour les Web services


Transactions distribues Long terme Les transactions ACID sont trop contraignantes : de longues transactions peuvent rduire des accs concurrents Il faut supporter des compensations (scnario de l'agence de voyage) et non pas verrouiller les ressources

Transaction (2/2)

Solution : 2 spcifications distinctes


WS-Atomic transaction (court terme) WS-Business Activity (long terme, tolre la dfaillance des transactions, compensables)

Une spcification supplmentaire, WSCoordination pour coordonner les transactions distribues

Service web

Service web Service web coordinateur

WS-coordination

Contexte :

De nombreux services Web distribus Des changes complexes entre les participants coordonner les activits (transactions) & les participants

Besoin :

Solution : dfinition d'un coordinateur + des protocoles de coordination

WS-coordination
coordinateur

Service web

Service web Service web coordinateur coordinateur

Est une spcification d'une infrastructure de coordination Une application souhaite crer un service transactionnel ou non Un service d'activation permet l'application de crer

Un coordinateur (instance) Un contexte de coordination pour une activit; ce contexte est plac dans les messages

WS-coordination : Model

Un service d'enregistrement permet d'enregistrer les protocoles auprs de l'infrastructure de coordination


Quels sont les protocoles de coordinations? A qui envoyer des notifications lorsque le protocole passe une autre tape?

WS-coordination ne vise pas dfinir un nouveau protocole de coordination

Transactions distribues (1/2)

Un protocole de verrouillage deux phases assure une terminaison atomique de la transaction Un protocole bas sur le consensus pour prendre la dcision assez longue Etape 1 : prparation

Le Coordinateur s'assure que les participants sont prts (message chaque participant)

Transactions ACID distribues (2/2)

tape 2 : vote

Participants: votent pour abandonner (abort) ou terminer (commit)

Etape 3 : prise de dcision du coordinateur

Le coordinateur notifie les participants de la dcision (terminaison, abandon)

Etape 4 : acquittement des participants

WS-Transaction et WScoordination

Fournit un support

pour grer

des transactions long-terme/short-terme Des transactions Web distribues compensables Une infrastructure de coordination Des abstractions ncessaires (protocoles de coordination, type de coordination, contexte de coordination)

Coordonner des activits transactionnelles


Comment grer des processus complexes?

Processus mtiers

Un processus mtier :

une collection d'activits conues pour un mtier (utilisateur et march) donn Implique une emphase sur le mtier effectu dans l'organisation

Processus : collection d'activits ordonnes (notion de workflow)


ressources Processus mtier objectifs sorties

informations entres

Processus Web

Un processus mtier peut tre vu comme un ensemble d'interactions entre des services Web (workflow) Besoin : dfinir de faon abstraite et concrte un processus

Dcrire comment des services Web peuvent s'inter-connecter, s'intgrer, se composer Langage de chorgraphie (conversation), d'orchestration

Chorgraphie versus orchestration

Chorgraphie :

Un processus est un change de messages ordonns comme c'est le cas lors d'une conversation 2 langages : WSCL, WS-choreography une suite d'oprations ordonnes (workflow) sous le contrle d'un coordinateur central (chef d'orchestre correspondant un partenaire)

Orchestration : Un processus est


Conversation (1/2)

Limitations de WSDL :

WSDL ne dfinie qu'une liste d'oprations WSDL ne dfinit pas dans quels ordres les oprations doivent tre invoques

Par exemple, il faut dj se logger un ordinateur avant d'accder un fichier, et non le contraire

Conversation (2/2)

Fournit le vocabulaire ncessaire pour dfinir l'ensemble de tous les ordres correctes, les contraintes d'ordre, sous quelles conditions la conversation prend fin

Logique temporelle, chorgraphie, change de messages, point d'accs Les processus privs (que se passe t-il l'intrieur du service) et publiques (que voit-on de l'extrieur). Remarque : un processus publique doit tre en accord avec les processus priv

Exemple : l'agence de voyage

@tartanoglu

Reprsentation graphique d'une conversation

Finite state machine :

Modliser les tats suivis Transition : invocation d'une opration


@tartanoglu

Reprsentation graphique d'une conversation


Diagramme de squence

@tartanoglu

WSCL : Web Service Conversation Language


<Conversation name="TravelAgency" <ConversationInteractions>
<Interaction interactionType="SendReceive" id="Payment">

initialInteraction="Start" finalInteraction="End" >

Conversation = liste d'interactions et de transitions Interactions : Send, Receive, SendReceive, Empty Transition : ordre des interactions

<OutboundXMLDocument id="Invoice" hrefSchema="http://.../invoice.xsd"/> <InboundXMLDocument id="Payment" hrefSchema="http://.../Payment.xsd"/> </Interaction>

<ConversationTransitions>
<Transition> <SourceInteraction href="Quote"/> <DestinationInteraction href="Purchase"/> </Transition> ...

WSCI : Web service Choreography Interface

Une chorgraphie

Dcrit le flot du point de vue de chaque service est insre dans le document WSDL de chaque service

L'lment

<interface> dfinie l'interface publique (visible depuis l'extrieur) L'lment <model> pour combiner plusieurs interfaces et de les lier entre elles

WSDL du service de booking de l'hotel


<wsdl:operation name=Book> <wsdl:input message=bookingReq /> </wsdl:operation> <wsdl:operation name=Confirme> <wsdl:output message=ConfirmeMess /> </wsdl:operation>

<wsdl:portType name=TAtoHotel>

<wsdl:operation name=Refus> <wsdl:output message=refusMess /> </wsdl:operation> </wsdl:portType>

refusMess confirmeMess

Exemple

Requte de booking Agence (client) Hotel (service Web)

Book

Suite...

confirme

refus

Interface du service de booking dfinissant la chorographie


<process name=BookTrip instantiation=message> <sequence> <action name=ReceiveBooking operation= TAtoHotel/Book/> <switch> <case> <condition>placesAvailable</condition> <action name=SendConfirmeoperation=TAtoHotel/Confirme/> </case>

<interface name=BookingService>

<default><action name=SendRefus operation = TAtoHotel/Refus/> </default> </switch></sequence> </process></interface>

Orchestration et chorographie (BPEL4WS)

activit WSDL Flux d'excution Processus Partenaire WSDL

Partenaire

Orchestration et choreographie (BPEL4WS)

Les messages changs entre les activits sont des messages SOAP WSDL dcrit un ensemble d'activits BPEL4WS dcrit

un partenaire (document XML) Une activit Flux (squences, switch, ...) Synchronisation, concurrence

Bilan Transaction et processus

Ensemble de spcification pour la gestion automatique des transactions et des processus mtiers dans les services Web

Transactions atomiques et Web Coordination des transaction mais aussi des activits Framework : Microsoft, IBM, BEA

Meta donnes

Scurit

Transaction Fiabilit dcouverte Messaging

Spcifications lies la scurisation


Scurit des changes : WS-security Confiance : SAML, WS-Trust, WSSecureConversation, WSFederation Infrastructures de cls publiques XML : XKMS

Autres spcifications lies (mta donnes avec la famille WS-Policy-*) , et la fiabilit

WS et scurit

Deux besoins identifis :

Scuriser les interactions (messages)


Transport (HTTP notamment) Message (SOAP)

WS-Security (2004) correspond la brique de base pour la scurisation des changes Scuriser les services Web (les processus) -> politiques de scurit, risque, confiance/trust

WS-Security - Scurit et transport HTTP


Utilisation de HTTP et SSL Confidentialit

Connections chiffres SSL point point Schmas d'authentification de HTTP Certificats SSL

Authentification

Autorisation : implmentation de politiques au niveau des infrastructures

WS-Security - Interactions scurises avec SOAP

Intgrit : adjonction d'une ou plusieurs signatures XML Confidentialit : chiffrement(s) XML, s si plusieurs acteurs, Authentification

Enveloppe SOAP Header SOAP Security token Signature Body SOAP

Informations stockes dans un securitytoken

Par ex : nom, password

WS-security

Chiffrement est effectu de bout en bout (client-service Web) Intgrit est fournie dans un environnement multi-sauts Si les contraintes de scurit ne sont pas satisfaites, une faute (SOAP) sera envoye

Exemple de faute : Security Tocken Invalid, Decryption failure

WS-Policy

Fournir les conditions suivant lesquelles un service doit tre fourni Une politique = une ou plusieurs assertions reprsentant

Les capacits du service Web Les exigences du Service Web

Ex : demander ce qu'une requte soit chiffre

Transmettre au service ce qu'il attend

WS-SecurityPolicy

Dfinit comment les messages sont scuriss, fiabiliss sur un chemin de communication

Comment dois -je scuriser l'acheminement d'un message (quel chiffrement, quel protocol, ...)

Est attach un document WSDL

WS-SecurityPolicy- Exemple
<sp:TransportBinding> <Policy> <sp:TransportToken> <Policy> <sp:HttpsToken RequireClientCertificate="false" /> </Policy> </sp:TransportToken> <sp:AlgorithmSuite> <Policy> <sp:Basic256Rsa15 /></Policy> </sp:AlgorithmSuite> ... </Policy> </sp:TransportBinding>

Bilan - WS-security

En se basant sur des politiques de scurit (WS-SecurityPolicy), WSsecurity fournit une scurisation des changes au niveau

Du transport Des messages SOAP

Au niveau applicatif : le service Web gre lui-mme son schmas de scurit

WS-Trust

Objectifs :

tablir la confiance avant l'change de messages SOAP-WS-Security Permettre un service (Security Tocken Service) de demander des infos un tier de confiance

Ncessits :

Assurer la gestion (cration, update, destruction) et l'change de security-tockens Assurer dcouverte & fdration de cercles de confiances

Fdration de cercles de confiance

Une fdration correspond un ensemble de domaines ayant tablis une relation de confiance Une fdration opre indpendamment des frontires administrative d'un rseau Exemple de fdration : un utilisateur de carte bleu retirant de l'argent depuis une banque amie (confiance entre les banques)

Fdration - Approche

Fournit un accs un domaine de confiance en utilisant les identits des domaines Ncessite : tablir la relation de confiance en

Partageant les informations relatives l'identit, l'authentification et l'autorisation Attribuant des identits : fdrations anonymes (pseudonymes, privacy) mais authentifies Se basant sur un brocker de confiance

3 Topologies de confiances

Confiance directe : le tiers de confiance du client connat le tiers de confiance du service Web Confiance indirecte : le tiers de confiance du client ne connat pas directement le tiers de confiance du service Web Dlgation de la confiance

Topologie directe
Domaine client Tier de confiance client Trust Domaine service Tier de confiance service 3 bis/ Vrification des accs Service Web

1 /obtention de l'identit 2/ Obtention accs (identity tocken) (access tocken) client 3/ Requtes/rponses scurises

Topologie indirecte (hirarchie de confiance)


Tier de confiance client Trust Trust Domaine service Tier de confiance service 3 bis/ Vrification des accs Service Web

Domaine client

Tier de confiance client 1 /obtention de l'identit 2/ Obtention accs (identity tocken) (access tocken) client 3/ Requtes/rponses scurises

Topologie dlgation
Tier de confiance client Trust Trust

Domaine client

Domaine service

Tier de confiance Tier de confiance client service 3bis/Vrification 2/ Obtention accs 4 Obtention accs 6/ Vrification 1 /obtention accs accs de l'identit client 3/ Requtes rponses 5/ Requtes Service Web rponses Service Web

Bilan - scurit

Deux paradigmes :

WS-Trust, FS-federation : gestion de la confiance WS-security, WS-Policy : chiffrement, authentification, intgrit ect... suivant des politiques
pare-feux Service Web protg

Cercle de WS-Security confiance HTTP/S HTTP/S client passerelle XML XML pare-feux

Agent

WS-SecurityPolicy

Gestionnaire de politiques

Meta donnes

Scurit

Transaction Fiabilit dcouverte Messaging

Description des services

WSDL WS-Policy, WS-PolicyAssertions, WSPolicyAttachment, WS-MTOMPolicy

Politiques

WS-MetadataExchange, les ontologies Profile des terminaux : WS-I Basic Profile

Bilan WS-*

Les services Web n'ont pas pour objet de rinventer


de nouvelles plateformes de dveloppement, de nouveaux protocoles d'changes, de nouveau mcanismes (transaction, scurisation, composition, chorgraphie, fiabilit..)

Les technologies des services Web ont pour objectif que


de dcrire des mcanismes existants (RPC ect...) de faire interagir des services distribus sur l'Internet/Web

Bilan Ouverture (2/2)

Les technologies des services Web ne cessent de se dvelopper


Ensemble croissant de spcifications WS-* Support du W3C, consortium OASIS

Toutefois, elles ne suffisent pas pour grer les fonctionnalits suivantes :

Cycle de vie du service (dploiement, configuration, mise jour automatique, gestion des versions ect...)

D'ou l'apparition d'initiatives complmentaires, comme ...

OSGI Open Service Gateway Initiative

1999 : dbut de l'histoire, OSGI alliance , http://www.osgi.org focus sur java et l'embarqu 2003 : support pour des dispositifs mobiles 2004 : adoption
62

Dveloppement d'une application

Question : comment construire des applications


modulaires dynamiques fournisseur de service

En suivant une approche client/serveur

implmente un interface (implmente le service) recherche le service partir de son interface Comment lier le client au service ?

Utilisateur du service

Dcouplage entre client et service Exemple : les services Web

Comment construire une application client serveur

En suivant une approche objet


Objet client et service Classes, interfaces On amliore le concept d'objet Modularit : garder le cur de l'application petit Fournir la facult d'ajouter des fonctionnalits autours de ce cur

En suivant une approche modulaire


Quelle plateforme standard propose une telle construction ?

OSGI (1/2)

Fournit un environnement pour dvelopper


des services des composants dcomposer/packager une application en services pour s'abstraire en fournissant des composants OSGI = systme de module dynamique pour java

fournit les lment ncessaires pour


Se base sur une plateforme Java

OSGI (2/2)

Fournit tout le support ncessaire au cycle de vie d'une application

Fournit les lments ncessaires la maintenance Peut tre utilis sur diffrentes plate formes

Est un intergiciel (en anglais middleware)

Limiter le problme de la portabilit Grer l'application sur le dispositif Supporter une myriad de versions diffrents, d'adaptations ncessaires

Pour une distribution large chelle

Intergiciel OSGI
JVM : Java Virtual Machine : permet une application java de s'excuter Deux couches au dessus de java :
OSGI : permet un bundle de s'excuter (se charger) bundle : application Bundle Bundle Bundle
OSGI JVM Systme d'exploitation Driver Driver Hardware Driver

Bnfices rsultants du recours un intergiciel

OSGI est une plate forme

pour construire des applications java base de composants : bundles Pour maintenir ces applications durant tout leur cycle de vie

Une application peut s'excuter sur diffrents types de


matriels (hardwares) logiciels

Bundle

Un bundle est

un module, c'est--dire l'unit de base pour dployer et modulariser Du code (ensemble de classes dans un package) Des mta donnes (contexte, description du bundle) Des ressources (d'autre fichier jar)

En pratique : un bundle contient


Cycle de vie d'un bundle

Cycle de vie :

Installation Rsolution dsinstallation

Start Active Stop

Installation Mise jour Excution Arrt Dsinstallation

OSGI fournit un support au cycle de vie d'une application Comment de pas stopper l'excution de l'ensemble de l'application durant le cycle de vie service/de l'application ?

Le cycle de vie et la dynamicit mis en pratique

Framework OSGI offre le support pour

Installer le code et les ressources

Pour cela, il lie le manifeste

Rsoudre les dpendances (lier) Contrler le cycle de vie, les versions Appeler l'activateur du bundle pour dmarrer le bundle Grer les class paths Appeler de dsactivateur de bundle Nettoyer aprs la dsactivation du bundle

En pratique :

Bundle et SOA
Un bundle peut aussi publier des services ... Annuaire de services (publication & langage de demande)

@Eric-Gressier-Soudan

SOA et approche base de composants

Faciliter l'assemblage de composants

Composant : unit de base dfini des fins de compositions et de rutilisation Connecteur : composant de communication regroupe l'ensemble des mcanismes de communication distantes permettant d'interagir entre les composants

Tout comme un service, un composant est une boite noire Avec une phase d'assemblage

Avec dition de liens dynamiques

@Eric-Gressier-Soudan

Bilan - OSGI

OSGI fait partie du paysage des architectures orientes service Assure la gestion du cycle de vie d'un service /bundle

Dploiement dynamique (sans reboot!) Gestion de versions, configuration, gestion des liens, collaborations

OSGI vise les systmes contraints java avec de nouveaux marchs (M2M)

UGASP OSGI et les jeux ubiquitaires...


Intergiciel ddi pour supporter les jeux ubiquitaires multi-joueurs Bas sur OSGI -> fournit des services modulaires (bundles)

Serveur de jeu (fournisseur de service, logique mtier) client

UGASP OSGI et les jeux ubiquitaires...

Est reconfigurable la vole

Peut tre dploy sur des systmes embarqus

Assure la liaison entre le client (le joueur) et le serveur de jeu Intergiciel dvelopp avec Eclipse Plus d'informations :
http://gasp.ow2.org/ubiquitous-osgi-middleware.html Une dmo...

Vous aimerez peut-être aussi