Вы находитесь на странице: 1из 61

Architectures orientes

services

Web services
Serveurs dapplication
Intgration mtier

EAI, SOA, Cloud computing, B2B

Web services
1.
2.
3.
4.
5.

Objectifs
Architecture Web services
Protocole SOAP
Architecture REST
Composition de Web services

1. Objectifs des Web services


Faciliter la construction et la maintenance
dapplications distribues sur le Web avec
change de donnes indpendant du stockage :
XML
appel de programmes indpendant du langage:
SOAP

Service web = module applicatif expos sur


le Web
adresse URI
interface bien dfinie
implmente avec des standards Web
HTTP, XML, SOAP, UDDI, WSDL, etc.
3

Exemple : gestion de magasin en


ligne
Authentification
(MTS)

Fournisseur
(J2EE)
SOAP

SOAP
SOAP

Serveur
dapplication
SOAP

SOAP

Paiement CB
(.NET)

Livreur
(CORBA)

Banque
(MVS/CICS)
SOAP

Standards techniques
Publication
des fonctionnalits
WSDL

Accessibles par des


requtes scurises
HTTPS, SSL

Web services
Dcrits dans
des annuaires
UDDI

Grs par des


serveurs de donnes
XML
Utilisables par toute
application
SOAP
5

2. Architecture des Web services


Service
Registry
Publish

Client

Find

Service
Requester

Publish
Request

Service
Provider
6

Request

Service
Provider

Description des services: WSDL


Formats des oprations en
XML
Messages dappel et de retour
Types des paramtres

Ports daccs des groupes


doprations
Association oprations messages
Liaisons (bindings) pour
accder aux ports avec un
protocole spcifique (HTTP,
SMTP, MIME, )

Adresses URLs de ces


7 ports

Service

Port

Port

Binding

Binding

(e.g. http://host/svc)

(e.g. SOAP)

portType
operation(s)
inMessage outMessage

Abstract interface

Description en WSDL
<definitions name = "..." xmlns: >
<types>
<!--Dfinition des types de donnes; bass sur ceux des schmas
--> </types>

<message>
<!--Dclaration des messages (entres et sorties)-->
</message>

<portType>
<!--Dclaration des oprations (par association des messages)-->
</portType>

<binding>
<!--Dfinition de la liaison WSDL SOAP (noms d'actions et
codages)--> </binding>

<service name= "" >


<!--Dclaration des ports (groupes d'oprations et protocoles
d'accs)--> </service>

</definitions>

Exemple: GetLastTradePrice
<?xml version="1.0"?> <definitions name="StockQuote">
<types> <schema> <element name="TradePriceRequest"> <complexType>
<all> <element name="tickerSymbol" type="string"/> </all> </complexType>
</element>
<element name="TradePrice"> <complexType> <all> <element name="price"
type="float"/> </all> </complexType> </element> </schema> </types>
<message name="GetLastTradePriceInput"> <part name="body"
element="xsd1:TradePriceRequest"/> </message>
<message name="GetLastTradePriceOutput"> <part name="body"
element="xsd1:TradePrice"/> </message>
<portType name="StockQuotePortType"> <operation name="GetLastTradePrice">
<input message="tns:GetLastTradePriceInput"/>
<output message="tns:GetLastTradePriceOutput"/> </operation> </portType>
<binding name="StockQuoteSoapBinding" type="tns:StockQuotePortType">
<soap:binding style="document"
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"/> </output> </operation> </binding>
<service name="StockQuoteService"> <documentation>My first
service</documentation> <port name="StockQuotePort"
binding="tns:StockQuoteBinding"> <soap:address
location="http://example.com/stockquote"/>
</port> </service>
9

Annuaire des services : UDDI


Universal Description, Discovery
Integration
Annuaire UDDI
Dcrit par un document WSDL ou autre
Accessible en SOAP
Contenu dcrit par un schma XML

Fonctions
Enregistrement (publish)
une socit, des services, des oprations
Dcouverte (find)
Liaison une service (bind)
10

Contenu de lannuaire

Pages blanches
(BusinessEntity)

BusinessKey
Name
Description
CategoryBag
BusinessServices

Contenu dfini par un schma


XML
Spcifications pour rplication
Business
Business
Entity
Entity

tModel
Spcifs de services
et taxonomies

Pages jaunes
(BusinessService)

ServiceKey
BusinessKey
Name
Description
CategoryBag
BindingTemplates

Pages vertes
(BindingTemplates)

BindinKey
ServiceKey
Description
AccessPoint

Business
Business
Service
Service

PublisherAssertion
Relations entre
deux parties
11

Binding
Templates
Infos techniques

Principaux fournisseurs
IBM UDDI Registry
Un registre UDDI avec des fonctionnalits de recherche

Microsoft UDDI Business Registry (UBR)


SAP UDDI Business Registry
Public pour l'instant

Systinet Registry
Support complet de UDDI

Oracle Application Server UDDI Registry

12

3. Protocole SOAP
Simple Object Access Protocol = RPC pour
Web services
Standard du W3C par Microsoft et IBM
Pas simple, pas objet!
Bas sur XML RPC de David Winer
(UserLandSoftware)
rgles de codage des donnes en XML
envelope: dfinit le contenu du message
utilise la requte HTTP POST du client au
serveur

Objectifs
Passer facilement au travers des firewalls (port
80)
13

Message SOAP
Protocol Header

En-tte de protocole

SOAP Envelope

(obligatoire): nom du message et


namespace pour sa version de schma

SOAP Header

(optionnel): extensions de protocole


Pour lauthentification, le contexte
Transactionnel, etc.

SOAP Body
(obligatoire): opration et paramtres

XML content
Attachments

14

Exemple
www.stockquoteserver.com
float GetLastTradePrice (Symbol)
Le dialogue :
Application
Middleware
SOAP
HTTP

Request
Reply
Error

Application
Middleware
SOAP
HTTP
www.stockquoteserver.com

15

La requte
POST /StockQuote HTTP/1.1
Host: www.stockquoteserver.com
Standard HTTP
Content-Type: text/xml; charset="utf-8"
Content-Length: nnnn
SOAPAction: "Some-URI#GetLastTradePrice
<SOAP:Envelope
xmlns:SOAP="http://schemas.xmlsoap.org/soap"
>
<SOAP:Body>
<m:GetLastTradePrice xmlns:m="SomeURI">
<symbol>DIS</symbol>
</m:GetLastTradePrice>
</SOAP:Body>
16

La rponse
HTTP/1.1 200 OK
Content-Type: text/xml; charset="utf-8"
Standard HTTP
Content-Length: nnnn
<SOAP:Envelope
xmlns:SOAP="http://schemas.xmlsoap.org/soap"/>
<SOAP:Body>
<m:GetLastTradePriceResponse
xmlns:m="Some-URI">
<Price>34.5</Price>
</m:GetLastTradePriceResponse>
</SOAP:Body>
</SOAP:Envelope>
17

Interoprabilit avec SOAP

Application
API
server

SOAP
Processor

SOAP
Processor

API

Application
server

Requte

A component
(e.g. EJB)

Java
VB XML
C Parser HTTP
Perl
etc.

TCP/IP

Rponse

Construction du message
SOAP (par ex. en Java)

Java
XML VB
HTTP
Parser C
Perl
etc.

A component
(e.g. COM)

Conversion du message
SOAP et appel du
composant (par ex, en VB)
18

4. REST: REpresentational State


Transfer
Objectif: style darchitecture lgre pour
dvelopper des applications Web,
alternative SOAP
WS 1
Il faut viter :
Appel
(URL-L, SOAP) Dispatcheur

WS 2

WS 3

Et remplacer par :
Appel
URL1
Appel
URL2
Appel
URL3

Centralis et
lourd:
interprtation
des URL-L,
traitement
SOAP

WS 1
WS 2
WS 3
19

Messages courts
et directs

REST: les trois piliers


Ressource
Toute entit est une ressource : site Web, page
XHTML, document XML, Web service, etc.
URL
Toute ressource est identifie de manire
unique par une URL logique
Opration simple
Mthode de recherche, mise jour,
consultation, directement adresse la
ressource avec un nombre limit de
paramtres
Ne pas faire:
http://www.depot.com/parts:getpart?id=1
Faire: http://www.depot.com/parts/1
20

REST: concepts (1)


Une syntaxe universelle pour adresser les
ressources: URI logique comme API
noms sans paramtres

Un protocole sans tat: HTTP


client et requtes gardent ltat

Des changes d hyperliens dans des documents


XML
pour reprsenter les contenus et les transitions dtats

Des types MIME comme text/xml, text/html,


image/jpeg, application/pdf, video/mpeg pour la
reprsentation des donnes
Scurit par filtres lors du mapping URL
ressource physique (ex. une page HTML statique)
21

REST: concepts (2)


Une application est un rseau dont les nuds
sont des machines virtuelles (pages Web ou
services Web)
Le client invoque des URL et reoit en rponse
des URL
Il change dtat ("transfers state") en choisissant
un lien parmi ceux reus en rponse

Le Web est REST


22

REST: principes de conception


Identifier toutes les entits qui doivent tre
exposes comme des services: liste de produits,
produits, etc.
Crer un URL par ressource, en utilisant des
noms, pas des verbes (pas getPart)
Diviser les ressources selon le mode:
Lecture: accessible uniquement par GET
Sans effet de bord (pas de modif. de la resource)
Mise jour: accessible par POST, PUT et/ou DELETE

Utiliser les hyperliens pour obtenir plus de dtails


lintrieur dune ressource
Ex: naviguer dans la liste de produits

Spcifier le format des rponses avec un schma


(DTD, XML Schema) et les services (WSDL ou
HTML)
23

REST versus SOAP


REST

SOAP

Echanges centrs
sur des URL courtes
entre ressources

Vritable RPC pour


Web services
changes complexes

changes limits

Simplifie le code
client et serveur
Pas de support pour
transactions ou
scurit
Pour des
applications simples
24

Gnration de code
client avec WSDL
Provision pour
transactions et
scurit
Pour des
applications plus
sophistiques

5. Composition de services
Dbut

Objectifs
Modliser des processus
mtiers (business
process)
Composer des services
Web distribus
Piloter l'excution
Orchestration d'activits
Echanges XML
Gestion de transactions

Business Process
Management

Rserver
Hotel
non

OK ?
oui

Rserver
Avion

OK ?
oui

non

Louer
Voiture

Transaction
Workflow

OK ?
oui

Succs
25

Echec

Rserver
Train
oui

non

OK ?

Echec

non

Echec

Exemple : Pilotage Fabrication


Echange B2B

Partenaire

Serveur
d'entreprise

XML

XML

Usine
XML

WEB

XML

Interface
XML

ERP
XML

Client

Mainframe

26

Fournisseur

Les briques standardiser


Choreography - CDL4WS
Orchestration - BPEL4WS

Business
Processes

Management

Transactions
WS-Reliability WS-Security

Coordination

Quality of
Service

Context
UDDI

Discovery

WSDL

Description
Description

SOAP

Message

XML
HTTP, IIOP, JMS, SMTP
27

Transport

Composition de services
Objectifs
Alliances entre companies pour offrir des
services intgrs valeur ajoute en
combinant des services existants
Rutilisation et extension de services existants
Support pour la planification, la dfinition et
l'implmentation de services composs
Dveloppement d'applications distribues
composes de services web

28

Quelques dfinitions
Processus mtier (business process)
Module fonctionnel ralis par enchanement
d'activits business excutes par des acteurs
changeant des messages et implmentant les
objets et rgles spcifiques une entreprise.

Orchestration d'activit
Mcanisme d'invocation, de contrle et de
coordination des activits participant la
ralisation de processus d'affaire.

Composition de services
Techniques permettant d'assembler des
services Web pour raliser des processus
mtiers par des primitives de contrles
(boucles, tests, traitement d'exception, etc.) et
d'changes (envoi et29 rception de messages).

Modlisation par Workflow


Graphe d'activits modlisant un
processus mtier

Les activits
reprsentent les
units de
traitement
Les activits
[ WS]
correspondent des
services Web

Les liens de contrle


dfinissent le flux
d'excution

Les liens de
donnes
dfinissent le flux
d'information

Les activits
peuvent tre
d'autres
processus mtiers
30

Exemple
Modlisation en
XML

commandeVacances

Langage
d'orchestration
Chorgraphie
d'activits

reserverVacances
=1
se
as
/cl
de
an
mm
Co

reserverVoiture

<activity
name="demandePaiement
">
<join
condition=(reserverVoitur
e OR reserverAvion) AND
reserverHotel
when=deferred>

Commande/classe=2

reserverAvion

demandePaiement
31

reserverHotel

d'activits
Compositions des web services
Langage de programmation parallle cod en
XML
Assignation de variables locales et globales

32

Exemple BPEL
<sequence>
<receive partnerLink=customer portType=lns:purchaseOrderPT"
operation=sendPurchaseOrder variable=PO
createInstance="yes" />
<flow>
<invoke partnerLink=inventoryChecker portType=lns:inventoryPT
operation="checkINV" inputVariable="inventoryRequest"
outputVariable="inventoryResponse" />
<invoke partnerLink="creditChecker" portType=lns:creditPT"
operation="checkCRED" inputVariable="creditRequest"
outputVariable="creditResponse" />
</flow>
...
<reply partnerLink=customer portType=lns:purchaseOrderPT
operation=sendPurchaseOrder variable=invoice"/>
</sequence>
33

Qualit de services
Ncessit de fiabiliser
Les messages (WS-Reliability)
Les activits (WS-Transactions)
Courtes (Atomic Transactions)
Longues (Business Activity)

Ncessit de scuriser
Les changes confidentiels (WS-Security)

34

Serveurs dapplication
1.
2.
3.
4.

Architecture
Le standard J2EE
Etude de cas: EDF GDF
.NET de Microsoft

1. Architecture avec SA
Prsentation Application
Appareil
mobile

Serveur
WAP

Browser
Web

Serveur
Web

Client
Java

Parefeu

Client
VB/C++

Donnes

SGBD
Serveur
Web

Serveur
dapplication

36

Application
ERP

Application
mainframe

Serveur dapplication
Serveur dentreprise avec
support des composants
standards CORBA, COM, EJB
middleware objet
support des transactions
standards CORBA, Open Group (XA)
environnement de dveloppement intgr
composants, transactions
quilibrage de charge entre serveurs
support de XML et des Web services
interface avec moniteurs transactionnels et MOM

NB: serveur dapplication serveur Web + servlet


(ex. Apache+Tomcat)

37

Equilibrage de charge et
disponibilit
En cas de panne de A,
basculement automatique
sur B

Cookie A,B

Serveur A
primaire

Rplication de ltat
des processus clients

Serveur B
Secondaire

Cluster
38

Le problme daccs aux donnes


O mettre la logique applicative ?

Composants mtiers

Procdures stockes

Serveur dapplication

Serveur de donnes

Compromis entre performances et


flexibilit difficile obtenir

performances : sappuyer au maximum sur le


serveur BD => procdures stockes
flexibilit : composants mtiers encapsulant
laccs aux donnes
39

Accs BD en C/S 2 tiers


Dveloppement dapplications BD en 2
tapes
1 conception de la BD
cration des tables et des contraintes
dintgrit
2 programmation des procdures stockes

Trs efficace

procdures stockes et contraintes dintgrit


excutes sur le serveur BD

Evolution difficile

la modification dune dfinition de donnes


implique la recompilation des procdures
stockes
40

Composants avec accs BD


Similaire au C/S

Gestionnaire de
commandes
Commande

+ efficace
- composants non
autonomes

Produit

Select C.a, P.b,


From C, P
Where

41

Composants encapsulant leurs


donnes
Principe dlot de
donnes

Gestionnaire de
commandes
Commande

ensemble de donnes
entirement contenu
dans un composant
mtier
exige une forte
localit des
donnes/composant
+ composants
autonomes
- performances

Produit

42

Comment amliorer les


performances
Faire des composants mtiers gros grain
encapsulation des donnes fortement corrles
par ex. 5 10 dfinitions de tables
relationnelles

Exploiter les vues relationnelles


pour les donnes partages entre plusieurs
composants

Mettre en uvre un cache de donnes au


niveau du serveur dapplication
transformation objet/relationnel

43

2. Le standard J2EE (Sun et al.)


De nombreuses API

EJB: modle de composants serveurs


JNDI: accs aux services dannuaire DNS, LDAP
RMI: invocation de mthodes Java distance
JIDL: Java IDL - interface Corba
JSP: Java Server Pages (Java ds pages HTML)
JMS: Java Messaging Service
JTS: Java Transaction Service (bas sur OTS)
JDBC: accs aux BD via SQL
JDO: Java Data Objects
JAX: Java XML
JCA: Java Connector Architecture
...
44

JAX
Pour intgrer XML et les services web
JAX-RPC (Java API for XML RPC) pour effectuer
des appels de messages SOAP
JAXM (Java API for XML Messaging) pour
envoyer des documents XML via SOAP
JAXR (Java API for XML Registries) pour accder
des annuaires de services de type UDDI

45

Architecture dun serveur J2EE


Logique mtier

Logique de prsentation

Container Web
HTML/XML

Java Server
Page

Java
Bean

Servlet

Container EJB
Session
Bean

Entity
Bean

Support Comm.

Services de base

TCP/IP, HTTP, RMI,


IIOP, SOAP, etc.

JDBC, JTS, JNDI,


JMS, JDO, JAX, etc.

46

Principaux serveurs J2EE


Editeur

Produit

Points forts

Ordre de prix

BEA-Oracle WebLogic

Transactionnel, outils

10K

IBM

Websphere

10K

Oracle

AS

Transactionnel, intgration
avec DB2 UDB
Intgr dans loffre Oracle

HP

Intgr avec les middlewares


HP
Bas sur Visibroker, outils

10K

Borland

Total-eserver
AppServer

Sun

GlassFish

Logiciel libre (dernier n)

Gratuit

Redhat

Jboss

Logiciel libre

Gratuit

Apache

Jeronimo

Logiciel libre

Gratuit

Objectweb

Jonas

Logiciel libre

Gratuit

47

10K

10K

WebSphere Application Server


Support J2EE complet
Support des transactions

Interoprabilit avec le moniteur TXSeries

Serveur HTTP bas sur Apache


Support des clusters

partitionnement des applications et quilibrage de


charge

Intgration avec

Studio Application Developer


DB2 pour la gestion de donnes et le stockage de
XML
Tivoli pour la gestion de rseau
Versant enJin pour les objets persistants
48

WebLogic (BEA-Oracle)
Support J2EE complet
Serveur HTTP intgr
Plugins pour Apache, IIS, Iplanet

Support des transactions


interoprabilit avec le moniteur BEA Tuxedo

Support des clusters


disponibilit et quilibrage de charge

Environnement de dveloppement
WebLogic Builder pour le dveloppement Java
WebLogic Workshop pour les Web services

Intgration avec
Nokia WAP server pour les mobiles
TopLink (WebGain) pour le mapping objet-relationnel
Versant enJin pour les objets persistants
49

3. Etude de cas: EDF GDF


Application de relation client (CRM) :
Niveau1
Utilise par 25000 agents de clientle rpartis
sur 1300 agences
Gestion commerciale, gestion des contacts, outils
marketing, utilitaires (mailings, etc.)

Architecture technique
C/S (client lourd) avec 2 nouvelles versions par an
SI sur mainframes IBM (un centre par dpartement)
Plusieurs BD et une partition CICS par centre

Besoins
Ractivit croissante aux demandes des agents
Dploiement plus rapide des nouvelles
versions
50

Solution
Architecture n-tiers
Client lger
WebLogic: serveur J2EE sur plusieurs serveurs
Scort: Progiciel dintgration avec les
applications mainframes avec des composants
J2EE sur WebLogic

Rsultats obtenus
Satisfaction des besoins
Niveau1 offre 2 modes daccs transparents
aux clients:
Accs aux mainframes en rcuprant une connexion
pour excuter des transactions
Smart publishing: navigation en mode publication la
vole
51

Le problme de la persistance des


objets
Ltat des objets modifis par les entity
beans doit tre sauvegard durant
lexcution
Approche classique: BD relationnelle avec
mapping objet-relationnel
en gnral trs inefficace avec des entity
beans CMP (cf tude de SQLi mars 2002)

Solutions
propritaire de type TopLink
mapping vers une BD objet, par ex. Versant
enJin
la plus productive et efficace selon SQLi
52

Versant enJin
Serveur
dapplication
Bean
Bean
Commande Produit

Serveur
dapplication
Bean
Bean
Commande Produit
Cache partag

transactions

transactions
SGBDO Versant
Mapping O/R automatique

Tiers backend

Bases de donnes
53

Avantages de Versant enJin


Persistance des objets Java transparente
simple pour le dveloppeur
pas besoin de programmer en JDBC ou autre

Cache dobjets partags entre diffrents


serveurs
performances et cohrence via le SGBDO
Versant

Mapping objet-relationnel automatique


vers les BD existantes
dfinition de la frquence de synchronisation
online, batch, etc.
54

4. Microsoft .NET
Evolution majeure de la plateforme
Windows
les APIs Windows sont remplaces par des
bibliothques de classes objet
intgration de C#, Linq
portabilit des applications .NET
Microsoft Intermediate Language (MSIL)
excut par CLR
scurit renforce avec vrification de code
intgration avec COM et Microsoft Transaction
Server (MTS)
support direct des services Web, de XML et de
SOAP avec Visual Studio .NET
55

Architecture de MTS
Internet
Information
Server (IIS)
HTTP

MTS
Executive
threads
wrapper
context

HTML
XML

ADO

SQLServer

Oracle

Active Server
Page (ASP)

factory
trans.
cache

DCOM

Windows

56

Autres

Modle de composants MTS


Composant
pas dtat (quivalent EJB session bean)

Container
executive : entre client et composant serveur
context wrapper
dfinition du comportement trans. du
composant par le dveloppeur (par
positionnement dattributs avec Explorer)
context object
appel automatiquement par MTS pour
coordonner les transactions en 2 phases

Serveur Windows
57

Exemple de code applicatif MTS


Set ctxObject = GetObjectContext ()
// accs lobjet contexte de MTS
{ code applicatif }
Set objExemple = ctxObject.CreateInstance ()
// cration dun objet MTS
{ code applicatif }
If (OK)
ctxObject.SetComplete () // validation de la transaction
Else
ctxObject.SetAbort () // annulation de la transaction

58

Le framework .NET

VB, C++, C#, Jscript, Java,etc.


Outils
SOAP
et
XML

ASP.NET
Docs
HTML XML

BCL.NET
Base class
library

ADO.NET
Active Data
Objects

Common Language Runtime


(CLR)
Windows et COM/MTS

59

Visual
Studio
.NET

Serveur J2EE versus .NET


Serveur J2EE

limit Java
transactions explicites
gnralit

objets avec tat: entity beans

problme de performances des beans CMP

portabilit

.NET

multi-langage
transactions implicites
simplicit

objets sans tat

utiliser ADO pour laccs aux donnes

propritaire, intgr dans le monde Windows


60

Conclusion sur les serveurs


dapplication
Un modle darchitecture rellement
distribu
cache la complexit du middleware

Critres de choix dun serveur


dapplication
support des standards
J2EE, Web services
plate-formes supportes
performances et dbit transactionnel
environnement de dveloppement

61

Вам также может понравиться