Sao 5 1
Sao 5 1
Rappels d’Architecture
XML, Services Web, SOAP, WSDL, UDDI
REST, HATEOAS et micro-services
Principes des architectures SOA
Fonctionnement d’un bus ESB
Modèles d’architectures SOA et patterns
Extensions WS-X
Modélisation SOA - BPMN
Leuville Objects
3 rue de la Porte de Buc
F-78000 Versailles
FRANCE
www.leuville.com
[email protected]
(c)Leuville Objects
Leuville Objects
29 rue Georges Clémenceau
F-91310 Leuville sur Orge
FRANCE
http://www.leuville.com
Tous droits de traduction, d’adaptation et de reproduction par tous procédés, réservés pour tous pays.
Toute reproduction ou représentation intégrale ou partielle, par quelque procédé que ce soit des
pages publiées dans le présent ouvrage, faite sans l’autorisation de Leuville Objects, est illicite et
constitue une contrefaçon (loi du 11 mars 1957 et code de la propriété intellectuelle du 1er juillet
1992, articles L 122-4, L 122-5 et L 335-2).
Les marques citées sont des marques commerciales déposées par leurs propriétaires respectifs.
CETTE PUBLICATION EST FOURNIE "EN L'ETAT" SANS GARANTIE D'AUCUNE SORTE,
NI EXPRESSE NI IMPLICITE, Y COMPRIS, ET SANS QUE CETTE LISTE NE SOIT
LIMITATIVE, DES GARANTIES CONCERNANT LA VALEUR MARCHANDE, L'APTITUDE
DES PRODUITS A RÉPONDRE A UNE UTILISATION PARTICULIERE, OU LE FAIT QU'ILS
NE SOIENT PAS CONTREFAISANTS DE PRODUITS DE TIERS.
(c)Leuville Objects
Table des matières
Modèles d’architectures multi-niveaux ................................................ 1
Architecture centralisée ....................................................................... 1-3
Client - serveur..................................................................................... 1-5
Architecture multi-niveaux .................................................................. 1-7
Architecture multi-niveaux ouverte au web......................................... 1-9
Sécurité des architectures multi-niveaux Internet.............................. 1-11
Introduction aux architectures orientées services (SOA) ................. 13
Quiproquos......................................................................................... 2-15
Premières définitions ......................................................................... 2-17
Définitions d’un service et d’une architecture SOA .......................... 2-19
Plus sur la notion de service .............................................................. 2-21
Avant SOA......................................................................................... 2-23
SOA ................................................................................................... 2-29
Le nouveau modèle induit par SOA .................................................. 2-33
Avantages des stratégies SOA ........................................................... 2-35
Pièges liés à l’adoption de SOA ........................................................ 2-37
Le bus ESB ........................................................................................ 2-41
Le bus ESB : mise en place incrémentale.......................................... 2-47
Le routage des messages par le bus ................................................... 2-49
Web Oriented Architecture (WOA)................................................... 2-51
La standardisation .............................................................................. 2-53
Synthèse ............................................................................................. 2-57
Introduction aux microservices........................................................... 59
Constats.............................................................................................. 3-61
Microservices..................................................................................... 3-63
Liens avec SOA ................................................................................. 3-71
Modèles d’architectures ..................................................................... 3-73
Utilisateurs ......................................................................................... 3-77
Introduction aux Services Web ........................................................... 79
Les services WEB .............................................................................. 4-81
Bénéfices des services WEB.............................................................. 4-83
Les constituants d’une architecture à base de services WEB ............ 4-85
Principes de fonctionnement.............................................................. 4-87
Pile Web Services .............................................................................. 4-89
SOAP ................................................................................................. 4-95
Structure d’un message SOAP........................................................... 4-97
Un exemple de message SOAP ......................................................... 4-99
WSDL .............................................................................................. 4-101
Exemple WSDL ............................................................................... 4-105
UDDI ............................................................................................... 4-111
Historique des services WEB .......................................................... 4-113
Version 5.1
(c)Leuville Objects
Version 5.1
(c)Leuville Objects
Version 5.1
(c)Leuville Objects
<partnerLinks>............................................................................... 25-635
<partnerLinkType>........................................................................ 25-637
<variables>..................................................................................... 25-639
<sequences>................................................................................... 25-643
<assign> ......................................................................................... 25-645
<invoke> ........................................................................................ 25-647
<receive> ....................................................................................... 25-649
<switch>......................................................................................... 25-651
Version 5.1
Architectures Orientées Services Version 5.1
Modèles d’architectures multi-niveaux
o Spécificités des architectures ouvertes sur le WEB et les architectures internet sécurisées
(c) Leuville Objects. Tous droits de traduction, d’adaptation et de reproduction par tous procédés, réservés pour tous pays.
Toute reproduction ou représentation intégrale ou partielle, par quelque procédé que ce soit des pages publiées dans le présent ouvrage,
faite sans l’autorisation de Leuville Objects est illicite et constitue une contrefaçon (loi du 11 mars 1957 et code de la propriété
intellectuelle du 1er juillet 1992, articles L 122-4, L 122-5 et L 335-2).
(c) Leuville Objects Architectures Orientées Services - Modèles d’architectures multi-niveaux 1-2
Architectures Orientées Services - Modèles d’architectures multi-niveaux Version 5.1
Architecture centralisée
Modèle "historique"
Notes
(c) Leuville Objects Architectures Orientées Services - Modèles d’architectures multi-niveaux 1-4
Architectures Orientées Services - Modèles d’architectures multi-niveaux Version 5.1
Client - serveur
Avantages Client
Application cliente
o Une certaine simplicité
interface
o Robustesse meilleure graphique
o Modularité limitée
Serveur
o Montée en charge problématique logique métier
S.G.B.D.
Les architectures à deux niveaux peuvent convenir aux besoins relativement limités en termes d’adaptabilité
à la montée en charge et d’évolutivité.
Avantages
o Simplicité architecturale
o Rapidité de mise en oeuvre
o Moins de niveaux entraîne moins de risques de pannes
Inconvénients
o Difficultés pour identifier les composants responsables de la logique métier, car ceux-ci sont souvent
répartis dans le client et le serveur
o Montée en charge très difficile, voire impossible, car ce type d’architecture n’offre pas la modularité
suffisante:
o arrivée directe des connexions client sur le serveur, sans possibilités de multiplexage,
o grandes difficultés pour repartir les traitements métier sur plusieurs machines
o Cette architecture devra être revue si l’on souhaite utiliser le client sur le WEB:
o le client doit être allégé,
o des mécanismes d’accompagnement de la montée en charge doivent être définis.
(c) Leuville Objects Architectures Orientées Services - Modèles d’architectures multi-niveaux 1-6
Architectures Orientées Services - Modèles d’architectures multi-niveaux Version 5.1
Architecture multi-niveaux
Modèle
Client léger
o Composants "métier" et
middleware
Serveur de données
o SGBD, applications
"mainframe"
Par rapport à une architecture client-serveur à deux niveaux, une architecture multi-niveaux présente de
nombreux avantages:
o identification des responsabilités de chaque composant,
o très grande modularité,
o capacité d’adaptation à la charge par duplication des composants.
Client léger
L’applicatif client comporte uniquement les objets graphiques constituant l’interface utilisateur. Cette
interface peut être en HTML, DHTML, XML, applet Java et Swing, ...
Ce niveau rassemble les applications spécialisées en gestion des données telles que SGBD, bases
hiérarchiques ou "mainframe" ainsi que les applications existantes (Cobol, C, ...).
(c) Leuville Objects Architectures Orientées Services - Modèles d’architectures multi-niveaux 1-8
Architectures Orientées Services - Modèles d’architectures multi-niveaux Version 5.1
Client léger
CGI
Servlet
JSP
Client Serveur ASP
HTML WEB
Notes
Une architecture multi-niveaux peut-être ouverte sur le monde extérieur par ajout d’un serveur WEB sur la
partie centrale. Ce serveur reçoit les requêtes provenant des clients légers HTML et invoque les services
offerts par les composants métier. Il retourne les réponses au format HTML, mais aussi XML, WML ou
applet.
Pour dialoguer avec la partie applicative, il existe plusieurs possibilités suivant les serveurs WEB du
marché:
o Passerelle de type CGI (Common Gateway Interface) : programmée en C, PERL, ou langage de scripting
de type Unix, elle permet d’invoquer un programme externe au serveur WEB et de retourner des résultats
au format HTML.
o Moteur de servlet Java : suivant un principe identique au CGI, une servlet Java accède aux services de la
couche applicative et retourne le résultat au format HTML.
o Java Server Pages : les pages HTML intègrent directement les appels Java au code applicatif. Ces appels
sont compilés dynamiquement sur le serveur WEB et exécutés. Les résultats sont formatés en HTML.
o Active Server Pages de Microsoft : les pages HTML intègrent directement les appels Visual Basic au code
applicatif. Ces appels sont compilés dynamiquement sur le serveur WEB et exécutés. Les résultats sont
formatés en HTML.
(c) Leuville Objects Architectures Orientées Services - Modèles d’architectures multi-niveaux 1-10
Architectures Orientées Services - Modèles d’architectures multi-niveaux Version 5.1
Les protocoles réseau employés doivent être compatibles avec l’emploi de protections ’pare-feu’
o HTTP
o IIOP avec
tunneling HTTP
o DCOM avec
tunneling HTTP
Les architectures multi-niveaux ouvertes sur Internet doivent tenir compte de contraintes de sécurité
spécifiques. Il est notamment recommandé de protéger le réseau interne à l’entreprise à l’aide de solutions
de types ’pare-feu’ ou ’firewall’.
Ces protections sont généralement contrôlées à partir de règles de filtrage qui permettent:
o d’interdire l’entrée du réseau à certains protocoles,
o de refuser des connexions en dehors de certains numéros de ports réservés,
o de refuser des paquets provenant de certaines sources comme des serveurs connus pour héberger des
pirates,
o ...
Il est recommandé de protéger le réseau de l’entreprise à l’aide de deux protections pare-feu de types
différents, afin d’assurer une sécurité plus grande. Entre ces deux pare-feu, on placera un serveur WEB qui
a pour fonction de relayer les appels HTTP entrants vers le réseau interne. Cette zone intermédiaire dans
laquelle on ne trouve aucune application critique est désignée sous le nom de DMZ.
Cela introduit des contraintes sur le développement, particulièrement au niveau du choix des protocoles de
communication entre les clients distants et le serveur WEB ou le serveur applicatif. Il faut en effet que le
protocole choisi soit capable de traverser les protections ’pare-feu’ sans nécessiter un affaiblissement trop
fort au niveau de leurs règles de filtrage.
Un serveur applicatif devra prendre en charge au maximum ces infrastructures techniques afin que le
concepteur puisse se concentrer sur la définition des services "métier".
(c) Leuville Objects Architectures Orientées Services - Modèles d’architectures multi-niveaux 1-12
Architectures Orientées Services Version 5.1
Introduction aux architectures orientées services (SOA)
o Standards
(c) Leuville Objects. Tous droits de traduction, d’adaptation et de reproduction par tous procédés, réservés pour tous pays.
Toute reproduction ou représentation intégrale ou partielle, par quelque procédé que ce soit des pages publiées dans le présent ouvrage,
faite sans l’autorisation de Leuville Objects est illicite et constitue une contrefaçon (loi du 11 mars 1957 et code de la propriété
intellectuelle du 1er juillet 1992, articles L 122-4, L 122-5 et L 335-2).
(c) Leuville Objects Architectures Orientées Services - Introduction aux architectures orientées services (SOA) 2-14
Architectures Orientées Services - Introduction aux architectures orientées services (SOA) Version 5.1
Quiproquos
SOA ?
o Une application qui utilise des services web est de type SOA
o Une application qui utilise des services web ainsi que des extensions WS-X est de type SOA
o SOA est avant tout un terme marketing qui cache un concept ancien : les web services
o SOA est un terme marketing qui cache un concept d’informatique distribuée basée sur les web services
o La connaissance des Web Services est suffisante pour bâtir une architecture SOA
o Une fois l’architecture SOA adoptée, toutes les applications deviennent interopérables
SOA
Notes
(c) Leuville Objects Architectures Orientées Services - Introduction aux architectures orientées services (SOA) 2-16
Architectures Orientées Services - Introduction aux architectures orientées services (SOA) Version 5.1
Premières définitions
o Une architecture SOA crée des services réutilisables de niveau entreprise accessibles à travers des
standards Web neutres et ouverts
o L’architecture orientée service ou SOA est une stratégie permettant de convertir les fonctions élémentaires
des applications d’entreprise en services normalisés et inter-opérables qui peuvent ensuite être rapidement
combinés et réutilisés pour répondre aux besoins métier.
Idées essentielles
o Réutilisabilité
o Granularité entreprise
o Adaptabilité
Notes
(c) Leuville Objects Architectures Orientées Services - Introduction aux architectures orientées services (SOA) 2-18
Architectures Orientées Services - Introduction aux architectures orientées services (SOA) Version 5.1
Service
o Gartner Group : Un service désigne une action exécutée par un composant "fournisseur" à l'attention d'un
composant "consommateur", basé éventuellement sur un autre système.
Web Service
o W3C : système logiciel identifié par une URI dont les interfaces publiques et les liaisons sont définies et
décrites en XML. Sa définition peut être découverte en utilisant d’autres systèmes logiciels. Ces systèmes
peuvent interagir avec le Web Service selon des modalités prescrites par sa définition, en utilisant des
messages XML transportés par des protocoles Internet.
o CBDI : Les stratégies, pratiques et frameworks qui permettent aux fonctionnalités applicatives d’être
consommées comme des ensemble de services publiés à un niveau de granularité dépendant du consommateur
de ces services. Les services peuvent être invoqués, publiés et découverts et sont découplés de toute
implémentation par l’emploi d’interfaces basées sur des standards.
o Gartner Group : un modèle d'interaction applicative mettant en oeuvre des connexions en couplage lâche entre
divers composants logiciels (ou agents).
Notes
http://www.cbdiforum.com/
http://msdn.microsoft.com/architecture/soa/
(c) Leuville Objects Architectures Orientées Services - Introduction aux architectures orientées services (SOA) 2-20
Architectures Orientées Services - Introduction aux architectures orientées services (SOA) Version 5.1
Un service doit
Caractéristiques
o A forte granularité
o Localisable
o Faiblement couplé
Notes
(c) Leuville Objects Architectures Orientées Services - Introduction aux architectures orientées services (SOA) 2-22
Architectures Orientées Services - Introduction aux architectures orientées services (SOA) Version 5.1
Avant SOA
o une infrastructure de
diffusion de messages
orientée Objet
o une certaine
indépendance vis-à-vis
des plateformes
Mais
o coûts de développement
importants
Notes
(c) Leuville Objects Architectures Orientées Services - Introduction aux architectures orientées services (SOA) 2-24
Architectures Orientées Services - Introduction aux architectures orientées services (SOA) Version 5.1
Avant SOA
id Avant SOA
plusieurs fois
Serveur d'applications
Quelques acteurs
Appli
API Custom
o serveurs J2EE API Custom spécifique
o MS .NET
Notes
(c) Leuville Objects Architectures Orientées Services - Introduction aux architectures orientées services (SOA) 2-26
Architectures Orientées Services - Introduction aux architectures orientées services (SOA) Version 5.1
Avant SOA
id EAI
CRM
o Weblogic Integration de Mainframe ERP
Serveur d'applications
BEA Systems
o BizTalk de Microsoft
Notes
(c) Leuville Objects Architectures Orientées Services - Introduction aux architectures orientées services (SOA) 2-28
Architectures Orientées Services - Introduction aux architectures orientées services (SOA) Version 5.1
SOA
o faiblement couplés
o réutilisables
o XML (toujours)
Notes
(c) Leuville Objects Architectures Orientées Services - Introduction aux architectures orientées services (SOA) 2-30
Architectures Orientées Services - Introduction aux architectures orientées services (SOA) Version 5.1
SOA
Protocoles
Complétés par
Notes
(c) Leuville Objects Architectures Orientées Services - Introduction aux architectures orientées services (SOA) 2-32
Architectures Orientées Services - Introduction aux architectures orientées services (SOA) Version 5.1
Notes
(c) Leuville Objects Architectures Orientées Services - Introduction aux architectures orientées services (SOA) 2-34
Architectures Orientées Services - Introduction aux architectures orientées services (SOA) Version 5.1
o Meilleure productivité
o Interopérabilité
o pas assez de projets réellement SOA pour avoir des informations significatives
Notes
(c) Leuville Objects Architectures Orientées Services - Introduction aux architectures orientées services (SOA) 2-36
Architectures Orientées Services - Introduction aux architectures orientées services (SOA) Version 5.1
o Ne pas repenser l’articulation entre métiers et informatique, ainsi que le fonctionnement même des équipes
projet côté informatique
Notes
(c) Leuville Objects Architectures Orientées Services - Introduction aux architectures orientées services (SOA) 2-38
Architectures Orientées Services - Introduction aux architectures orientées services (SOA) Version 5.1
o avoir des couplages forts, avec des services RPC et/ou synchrones
o Minorer l’importance de l’offre produit et ne pas tenir compte des différences techniques inhérentes à ces
offres
Notes
(c) Leuville Objects Architectures Orientées Services - Introduction aux architectures orientées services (SOA) 2-40
Architectures Orientées Services - Introduction aux architectures orientées services (SOA) Version 5.1
Le bus ESB
o Gartner Group : "Une infrastructure adaptée aux services Web offrant un support intelligent du routage des
communications et de l’intermédiation entre des composants métier à liaison souple ou découplés."
o Forrester : "Un bus ESB est une infrastructure logicielle essentielle aux SOA tenant lieu de couche
intermédiaire de middleware à travers laquelle les services métiers réemployables sont rendus largement
disponibles."
Caractéristiques essentielles
o Outils d’administration
Notes
(c) Leuville Objects Architectures Orientées Services - Introduction aux architectures orientées services (SOA) 2-42
Architectures Orientées Services - Introduction aux architectures orientées services (SOA) Version 5.1
Le bus ESB
o couplage faible
o de type XSLT
Notes
(c) Leuville Objects Architectures Orientées Services - Introduction aux architectures orientées services (SOA) 2-44
Architectures Orientées Services - Introduction aux architectures orientées services (SOA) Version 5.1
Le bus ESB
id ESB
Notes
Ce type de bus rappelle d’anciennes propositions, comme les bus de type CORBA.
(c) Leuville Objects Architectures Orientées Services - Introduction aux architectures orientées services (SOA) 2-46
Architectures Orientées Services - Introduction aux architectures orientées services (SOA) Version 5.1
«application» «application»
J2EE Legacy
PHASE 3
«connecteur» «connecteur»
JMS / JCA MQ Gateway
Notes
(c) Leuville Objects Architectures Orientées Services - Introduction aux architectures orientées services (SOA) 2-48
Architectures Orientées Services - Introduction aux architectures orientées services (SOA) Version 5.1
Service existant
Bus ESB
Service Client
Service Métier
Service Proxy Service existant
routage
Service Client
Service Métier
Service existant
Notes
(c) Leuville Objects Architectures Orientées Services - Introduction aux architectures orientées services (SOA) 2-50
Architectures Orientées Services - Introduction aux architectures orientées services (SOA) Version 5.1
Avantages
Inconvénients
Notes
(c) Leuville Objects Architectures Orientées Services - Introduction aux architectures orientées services (SOA) 2-52
Architectures Orientées Services - Introduction aux architectures orientées services (SOA) Version 5.1
La standardisation
Bases
o XML
o Normes du WS-I
o non stabilisé
Notes
(c) Leuville Objects Architectures Orientées Services - Introduction aux architectures orientées services (SOA) 2-54
Architectures Orientées Services - Introduction aux architectures orientées services (SOA) Version 5.1
La standardisation
Notes
Les travaux de ces organismes sont souvent complémentaires, comme par exemple:
o WS-Security qui s’appuie sur XML Encryption, XML Sugnature, ...
o UDDI qui fait référence à WSDL,
o ...
(c) Leuville Objects Architectures Orientées Services - Introduction aux architectures orientées services (SOA) 2-56
Architectures Orientées Services - Introduction aux architectures orientées services (SOA) Version 5.1
Synthèse
Notes
(c) Leuville Objects Architectures Orientées Services - Introduction aux architectures orientées services (SOA) 2-58
Architectures Orientées Services Version 5.1
Introduction aux microservices
o Concepts sous-jacents
o Acteurs et outils
(c) Leuville Objects. Tous droits de traduction, d’adaptation et de reproduction par tous procédés, réservés pour tous pays.
Toute reproduction ou représentation intégrale ou partielle, par quelque procédé que ce soit des pages publiées dans le présent ouvrage,
faite sans l’autorisation de Leuville Objects est illicite et constitue une contrefaçon (loi du 11 mars 1957 et code de la propriété
intellectuelle du 1er juillet 1992, articles L 122-4, L 122-5 et L 335-2).
(c) Leuville Objects Architectures Orientées Services - Introduction aux microservices 3-60
Architectures Orientées Services - Introduction aux microservices Version 5.1
Constats
o Complexité
o impacte la fiabilité
o Frein à l’innovation
(c) Leuville Objects Architectures Orientées Services - Introduction aux microservices 3-62
Architectures Orientées Services - Introduction aux microservices Version 5.1
Microservices
Petits projets
o Totalement indépendants
Basés sur
(c) Leuville Objects Architectures Orientées Services - Introduction aux microservices 3-64
Architectures Orientées Services - Introduction aux microservices Version 5.1
Microservices
D’après www.martinfowler.com
(c) Leuville Objects Architectures Orientées Services - Introduction aux microservices 3-66
Architectures Orientées Services - Introduction aux microservices Version 5.1
Microservices
(c) Leuville Objects Architectures Orientées Services - Introduction aux microservices 3-68
Architectures Orientées Services - Introduction aux microservices Version 5.1
Microservices
Exemple
o D’après www.microservices.io
(c) Leuville Objects Architectures Orientées Services - Introduction aux microservices 3-70
Architectures Orientées Services - Introduction aux microservices Version 5.1
o Couplage faible
Différences
o Difficultés
(c) Leuville Objects Architectures Orientées Services - Introduction aux microservices 3-72
Architectures Orientées Services - Introduction aux microservices Version 5.1
Modèles d’architectures
o Liaisons point-à-point
(c) Leuville Objects Architectures Orientées Services - Introduction aux microservices 3-74
Architectures Orientées Services - Introduction aux microservices Version 5.1
Modèles d’architectures
o Possibilités techniques
o JMS
o STOMP
o MQTT
(c) Leuville Objects Architectures Orientées Services - Introduction aux microservices 3-76
Architectures Orientées Services - Introduction aux microservices Version 5.1
Utilisateurs
o Amazon
o Google
o Netflix
o Twitter
o IBM Bluemix
(c) Leuville Objects Architectures Orientées Services - Introduction aux microservices 3-78
Architectures Orientées Services Version 5.1
Introduction aux Services Web
(c) Leuville Objects. Tous droits de traduction, d’adaptation et de reproduction par tous procédés, réservés pour tous pays.
Toute reproduction ou représentation intégrale ou partielle, par quelque procédé que ce soit des pages publiées dans le présent ouvrage,
faite sans l’autorisation de Leuville Objects est illicite et constitue une contrefaçon (loi du 11 mars 1957 et code de la propriété
intellectuelle du 1er juillet 1992, articles L 122-4, L 122-5 et L 335-2).
(c) Leuville Objects Architectures Orientées Services - Introduction aux Services Web 4-80
Architectures Orientées Services - Introduction aux Services Web Version 5.1
Les besoins
o Avoir une réelle inter-opérabilité indépendante des contraintes techniques : système, langage, ...
La solution
o Constituants essentiels
o Un protocole de requétage basé sur un format de données universel : XML et pouvant utiliser HTTP :
SOAP
Les besoins
L’inter-opérabilité des systèmes et des applications est un souhait partagé depuis très longtemps par de
nombreuses organisations et entreprises. Jusqu’à présent, les technologies permettant l’invocation distante
de services comportaient de très nombreuses contraintes qui rendaient difficile leur utilisation:
o incompatibilité des protocoles de communication : CORBA avec DCOM par exemple,
o incapacité à traverser les protections pare-feu des entreprises sans modification des règles de sécurité,
o lourdeurs de développement et de mise en oeuvre.
La solution
L’idée forte des services WEB consiste à utiliser ce qui existe déjà au niveau des entreprises plutôt qu’à
proposer de nouvelles solutions trop contraignantes en termes d’équipements et de procédures:
o XML qui est un format de données largement accepté et répandu,
o HTTP qui est un procole de communication universel pour lequel les procédures de sécurité réseau des
entreprises sont déjà adaptées.
(c) Leuville Objects Architectures Orientées Services - Introduction aux Services Web 4-82
Architectures Orientées Services - Introduction aux Services Web Version 5.1
o Ouvrir l’entreprise à ses fournisseurs, ses partenaires et ses clients en exposant ses services à travers des
protocoles simples et normalisés
J2E E J2E E
F O U R N ISSEU R C oupe-feu
P R O D U C T IO N
PERL
F O U R N ISSEU R
C oupe-feu
.N E T
C ++ C oupe-feu
C oupe-feu AD M IN IST R AT IO N
T R AN SPO R T EU R
Avant l’avénement des services WEB, il était assez complexe de développer des mécanismes d’échanges
inter-applications en milieu hétérogène. Ainsi, pour par exemple communiquer entre un serveur Corba sous
Unix et un serveur DCOM sous Windows, il fallait utiliser des passerelles propriétaires et difficiles à mettre
en oeuvre.
S’affranchir des technologies sous-jacentes rend virtuellement possible une inter-opérabilité extrémement
grande entre systèmes d’informations du monde entier.
Cette liberté (relative !) donne aussi la possibilité de suivre plus facilement les évolutions technologiques
sans rompre le contrat applicatif qui peut exister envers les utilisateurs d’un système d’informations.
(c) Leuville Objects Architectures Orientées Services - Introduction aux Services Web 4-84
Architectures Orientées Services - Introduction aux Services Web Version 5.1
o Synchrone ou asynchrone
o Langage de description technique d’un service WEB : signatures des opérations, adresses, ...
o système d’interrogation
SOAP
SOAP est le protocole d’invocation d’un service WEB. Il a été défini de façon à pouvoir être mis en oeuvre
avec n’importe quelle technologie de développement. Il suffit de pouvoir:
o ouvrir une socket de communication vers le serveur hébergeant le service WEB,
o lui transmettre une requête formattée en XML, donc essentiellement textuelle,
o analyser une réponse également formattée en XML.
WSDL
UDDI
UDDI est une spécification élaborée par IBM, Microsoft et Ariba. Elle normalise le fonctionnement d’un
annuaire permettant d’enregistrer des descriptions WSDL et de les restituer à différents utilisateurs.
Principes de fonctionnement
Recherche du service
1 Annuaire UDDI
Fournisseur du service
Requête SOAP
Proxy SOAP Réponse SOAP Frontal SOAP Objet Métier / application : J2EE, .NET,
Le fournisseur du service WEB peut l’enregistrer au sein d’un annuaire UDDI, soit à l’intérieur de son
entreprise, soit à l’extérieur si ce service est destiné à être utilisé par des acteurs externes.
Un client est alors en mesure d’interroger l’annuaire à partir de critères qui lui sont propres pour obtenir la
description WSDL du service WEB.
Cette description permet d’automatiser et donc de simplifier la phase de requêtage via SOAP. En effet, de
nombreux outils permettent de produire des proxy d’interrogation des services WEB à placer côté client
afin de masquer les complexités de SOAP.
Un service WEB peut être réalisée avec n’importe quelle technologie de développement. Les serveurs
d’applications de type J2EE ou .NET proposent généralement des mécanismes permettant de simplifier
énormément la réalisation d’un service WEB. Il s’agit la plupart du temps de frontaux SOAP générés
automatiquement qui permettent au concepteur de se concentrer sur le développement de ses objets métier.
(c) Leuville Objects Architectures Orientées Services - Introduction aux Services Web 4-88
Architectures Orientées Services - Introduction aux Services Web Version 5.1
Notes
(c) Leuville Objects Architectures Orientées Services - Introduction aux Services Web 4-90
Architectures Orientées Services - Introduction aux Services Web Version 5.1
Notes
(c) Leuville Objects Architectures Orientées Services - Introduction aux Services Web 4-92
Architectures Orientées Services - Introduction aux Services Web Version 5.1
Notes
(c) Leuville Objects Architectures Orientées Services - Introduction aux Services Web 4-94
Architectures Orientées Services - Introduction aux Services Web Version 5.1
SOAP
o Synchronisme ou asynchronisme
o Correspondances normalisées avec les types primitifs de tous les langages de programmation
o Sessions et Transactions
o Sécurité intrinsèque
o Fiabilité de la transmission
SOAP est un protocole simplifié d’invocation de services à distance. Il normalise donc uniquement ce qui
est strictement indispensable.
Cependant, plusieurs groupes de travail se sont constitués afin de faire des propositions dans ces différents
domaines. Nous les exposerons dans la suite de ce document.
(c) Leuville Objects Architectures Orientées Services - Introduction aux Services Web 4-96
Architectures Orientées Services - Introduction aux Services Web Version 5.1
o Enveloppe de communication
souvent basée sur HTTP
SOAP normalise la structure des messages de définition des requêtes et des réponses.
(c) Leuville Objects Architectures Orientées Services - Introduction aux Services Web 4-98
Architectures Orientées Services - Introduction aux Services Web Version 5.1
Requête Réponse
<SOAP-ENV:Envelope <SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
<SOAP-ENV:Body> <SOAP-ENV:Body>
<m:GetLastTradePrice xmlns:m="Some-URI"> <m:GetLastTradePriceResponse xmlns:m="Some-URI">
<symbol>DIS</symbol> <Price>34.5</Price>
</m:GetLastTradePrice> </m:GetLastTradePriceResponse>
</SOAP-ENV:Body> </SOAP-ENV:Body>
</SOAP-ENV:Envelope> </SOAP-ENV:Envelope>
Comme le montre cet exemple, les deux messages SOAP correspondant respectivement à une requête et à
sa réponse sont assez verbeux. C’est un inconvénient mineur de SOAP.
Par contre, ils ont l’avantage d’être en format texte ce qui facilite la mise-au-point d’une solution à base de
services WEB.
En cas de nécessité d’une confidentialité accrue, on pourra utiliser HTTPS à la place de HTTP.
(c) Leuville Objects Architectures Orientées Services - Introduction aux Services Web 4-100
Architectures Orientées Services - Introduction aux Services Web Version 5.1
WSDL
o Description comportant:
WSDL a été défini par IBM et Microsoft dans le but de fournir un moyen de décrire des services applicatifs
accessibles par réseau. Ces services sont invocables par l’intermédiaire de messages dont le format est
défini à l’aide de WSDL.
(c) Leuville Objects Architectures Orientées Services - Introduction aux Services Web 4-102
Architectures Orientées Services - Introduction aux Services Web Version 5.1
WSDL
WS-Policy
Notes
(c) Leuville Objects Architectures Orientées Services - Introduction aux Services Web 4-104
Architectures Orientées Services - Introduction aux Services Web Version 5.1
Exemple WSDL
L’entête d’un document WSDL comporte des références à différents espaces de nommage, identifiés par
une URL et un préfixe:
o wsdl : http://schemas.xmlsoap.org/wsdl/WSDL namespace pour le framework WSDL.
o soap : http://schemas.xmlsoap.org/wsdl/soap/ WSDL namespace pour le binding WSDL SOAP.
o http : http://schemas.xmlsoap.org/wsdl/http/ WSDL namespace pour le binding WSDL HTTP GET &
POST.
o mime : http://schemas.xmlsoap.org/wsdl/mime/ WSDL namespace pour le binding WSDL MIME.
o soapenc : http://schemas.xmlsoap.org/soap/encoding/ namespace d’encodage SOAP 1.1.
o soapenv : http://schemas.xmlsoap.org/soap/envelope/ namespace de définition de l’enveloppe SOAP 1.1.
o xsi : http://www.w3.org/2000/10/XMLSchema-instance namespace d’instance XSD.
o xsd : http://www.w3.org/2000/10/XMLSchema namespace de schéma XSD .
o tns : “this namespace” (tns) référence le document courant par convention.
La partie réservée à la définition des types peut être écrite en utilisant XSD.
(c) Leuville Objects Architectures Orientées Services - Introduction aux Services Web 4-106
Architectures Orientées Services - Introduction aux Services Web Version 5.1
Exemple WSDL
Message et portType
<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>
Message et portType
Une opération est définie par association de deux messages, l’un en entrée et l’autre en sortie.
(c) Leuville Objects Architectures Orientées Services - Introduction aux Services Web 4-108
Architectures Orientées Services - Introduction aux Services Web Version 5.1
Exemple WSDL
Binding et service
Binding et service
Le binding associe une opération à un protocole de transport, HTTP sur cet exemple.
(c) Leuville Objects Architectures Orientées Services - Introduction aux Services Web 4-110
Architectures Orientées Services - Introduction aux Services Web Version 5.1
UDDI
o Permet la création, l’édition et la suppression d’enregistrements via des messages SOAP avec accès sécurisé
o Publisher API
o Inquiry API
La spécification UDDI a été établie suite aux travaux initiaux de Ariba, IBM et Microsoft. Elle définit un
accès programmatique normalisé à des services métier invocables indépendamment des technologies.
Les registres UDDI fonctionnent avec un système de réplication d’informations, à la façon des serveurs
DNS, afin d’offrir une fiabilité maximale.
Le volet publication de la spécification UDDI prévoit plusieurs modalités de publication d’un service WEB:
o l’utilisation d’une API dédiée qui permet d’automatiser cette t,
o l’utilisation d’un service en ligne avec une interface de type WEB, de façon analogue à ce que certains
moteur de recherche proposent sur Internet.
Dans le cadre d’échanges de type B2B, la présence d’une API normalisée de recherche est indispensable.
Cette API permet d’accèder aux pages blanches et jaunes d’un registre, mais également à sas pages vertes,
ce qui permet d’automatiser la recherche et l’invocation d’un service WEB.
(c) Leuville Objects Architectures Orientées Services - Introduction aux Services Web 4-112
Architectures Orientées Services - Introduction aux Services Web Version 5.1
Notes
(c) Leuville Objects Architectures Orientées Services - Introduction aux Services Web 4-114
Architectures Orientées Services - Introduction aux Services Web Version 5.1
Les enjeux
Standardisation
Evolutions importantes
o WSCI : description du comportement des services Web (dépendances logiques, règles, ...)
o WS-Transactions : prise en charge des transactions distribuées sur plusieurs services Web
Standardisation
Evolutions importantes
Au départ, les services Web comportaient le minimum de ce qu’il fallait pour faire des invocations inter-
applications sur le Web. Ces mécanismes initiaux ne proposaient pas ce qui est indispensable pour
supporter un fonctionnement de type B2B:
o les transactions distribuées
o des mécanismes de sécurité
o une sémantique riche.
Devant l’importance des enjeux, de nombreux fournisseurs tentent de prendre une longueur d’avance en
proposant différentes solutions, généralement au travers d’alliances de circonstance.
(c) Leuville Objects Architectures Orientées Services - Introduction aux Services Web 4-116
Architectures Orientées Services Version 5.1
Representational state transfer
(c) Leuville Objects. Tous droits de traduction, d’adaptation et de reproduction par tous procédés, réservés pour tous pays.
Toute reproduction ou représentation intégrale ou partielle, par quelque procédé que ce soit des pages publiées dans le présent ouvrage,
faite sans l’autorisation de Leuville Objects, est illicite et constitue une contrefaçon (loi du 11 mars 1957 et code de la propriété
intellectuelle du 1er juillet 1992, articles L 122-4, L 122-5 et L 335-2).
(c) Leuville Objects Architectures Orientées Services - Representational state transfer 5-118
Architectures Orientées Services - Representational state transfer Version 5.1
REST est :
o Un style d’architecture.
o Une technologie.
o Un protocole.
Notes
(c) Leuville Objects Architectures Orientées Services - Representational state transfer 5-120
Architectures Orientées Services - Representational state transfer Version 5.1
Architecture RESTful
Notes
(c) Leuville Objects Architectures Orientées Services - Representational state transfer 5-122
Architectures Orientées Services - Representational state transfer Version 5.1
Architecture RESTful
o Les fondamentaux ont été posés par Roy Thomas Fielding dans sa thèse "Architectural Styles and the Design
of Network-based Software Architectures. Doctoral dissertation, University of California, Irvine, 2000"
o Il travaille actuellement sur le protocole Waka, extension de HTTP permettant d’intégrer des
fonctionnalités sémantiques et dynamiques (Web 3.0).
Notes
(c) Leuville Objects Architectures Orientées Services - Representational state transfer 5-124
Architectures Orientées Services - Representational state transfer Version 5.1
Architecture RESTful
Ce qui suit est un extrait de la thèse de Roy Fielding, posant les bases de REST
Le modèle vide
o Roy Fielding présente REST comme une architecture s’adaptant à plusieurs contraintes.
o Pour expliquer REST, il part d’un modèle vide (null model) puis le complète au fur et à mesure.
Notes
(c) Leuville Objects Architectures Orientées Services - Representational state transfer 5-126
Architectures Orientées Services - Representational state transfer Version 5.1
Architecture RESTful
Client-Serveur
Notes
(c) Leuville Objects Architectures Orientées Services - Representational state transfer 5-128
Architectures Orientées Services - Representational state transfer Version 5.1
Architecture RESTful
o Chaque requête du client vers le serveur contient toutes les informations nécessaires à sa compréhension.
o Aucun contexte stocké coté serveur. Etat de la session entièrement détenu par le client.
Notes
(c) Leuville Objects Architectures Orientées Services - Representational state transfer 5-130
Architectures Orientées Services - Representational state transfer Version 5.1
Architecture RESTful
Cache
o Chaque réponse est marquée (implicitement ou explicitement) comme pouvant être mise en cache (cacheable)
ou non.
Le modèle Client-Serveur sans état avec gestion de cache est celui du web standard.
Notes
(c) Leuville Objects Architectures Orientées Services - Representational state transfer 5-132
Architectures Orientées Services - Representational state transfer Version 5.1
Architecture RESTful
Interface uniforme
o Les données échangées sont les mêmes quelque soit le type de client.
o Avantages :
o Système simplifié.
o Inconvénients :
o Pénalise l’efficacité (optimum pour les applications web, non optimum pour les autres applications)
Notes
(c) Leuville Objects Architectures Orientées Services - Representational state transfer 5-134
Architectures Orientées Services - Representational state transfer Version 5.1
Architecture RESTful
Système en couches
Notes
(c) Leuville Objects Architectures Orientées Services - Representational state transfer 5-136
Architectures Orientées Services - Representational state transfer Version 5.1
Architecture RESTful
Code à la demande
Notes
(c) Leuville Objects Architectures Orientées Services - Representational state transfer 5-138
Architectures Orientées Services - Representational state transfer Version 5.1
Architecture RESTful
o Le schéma ci-dessous présente les différentes combinaisons des concepts de REST et les propriétés des
architectures résultantes.
Notes
(c) Leuville Objects Architectures Orientées Services - Representational state transfer 5-140
Architectures Orientées Services - Representational state transfer Version 5.1
o Se concentre sur les rôles des composants, les contraintes sur leur interaction avec d’autres composants, et leur
interprétation des éléments de données signifactives.
o Englobe les contraintes fondamentales sur les composants, les connecteurs et les données qui définissent la
base de l’architecture du Web.
Notes
(c) Leuville Objects Architectures Orientées Services - Representational state transfer 5-142
Architectures Orientées Services - Representational state transfer Version 5.1
REST SOAP
Orientation Ressource Service
Protocole HTTP Au choix (en théorie, HTTP unique-
ment selon WS-I)
Messages Pas de format unique (XML, JSON, format SOAP (XML + pièces attachées)
HTML, PDF, ...)
Description / Métadonnées du WADL (optionnel) WSDL, WS-Policy, WS-Metadata
service
Description / Métadonnées du En-têtes HTTP Header SOAP (WS-*)
message
Sécurité HTTPS + authentification HTTP WS-Security
Organismes de standardisa- IETF (RFC2616 et autres RFC) W3C, Oasis, WS-I
tion
Notes
(c) Leuville Objects Architectures Orientées Services - Representational state transfer 5-144
Architectures Orientées Services Version 5.1
HATEOAS (Hypermedia as the Engine of Application State)
o Concepts HATEOAS
(c) Leuville Objects. Tous droits de traduction, d’adaptation et de reproduction par tous procédés, réservés pour tous pays.
Toute reproduction ou représentation intégrale ou partielle, par quelque procédé que ce soit des pages publiées dans le présent ouvrage,
faite sans l’autorisation de Leuville Objects, est illicite et constitue une contrefaçon (loi du 11 mars 1957 et code de la propriété
intellectuelle du 1er juillet 1992, articles L 122-4, L 122-5 et L 335-2).
(c) Leuville Objects Architectures Orientées Services - HATEOAS (Hypermedia as the Engine of Application State) 6-146
Architectures Orientées Services - HATEOAS (Hypermedia as the Engine of Application State) Version 5.1
http://martinfowler.com/articles/richardsonMaturityModel.html
Notes
(c) Leuville Objects Architectures Orientées Services - HATEOAS (Hypermedia as the Engine of Application State) 6-148
Architectures Orientées Services - HATEOAS (Hypermedia as the Engine of Application State) Version 5.1
Ce modèle définit 4 niveaux. Seul le niveau 3 désigne une véritable API RESTful.
o Utilisation d’un protocole de transport (ici HTTP) pour interagir avec un service. Toutes les requêtes sont
envoyées vers le même endpoint (URI) et sont décrites en XML (SOAP, XML-RPC...).
o Introduction de la notion de ressource. Ici, les requêtes sont envoyées à des ressources individuelles. Le service
est alors éclaté en plusieurs ressources.
o Les ressources sont manipulées à l’aide d’un ensembles de verbes simples. Ceci permet de tirer pleinement
parti du procole utilisé (ici HTTP).
o La notion de HATEOS est introduite ici. Le principe est simple : les transitions possibles vers les états suivants
sont fournies par des liens hypermédia.
Notes
o Le Richardson Maturity Model propose un fil conducteur permettant d’appréhender pas à pas les concepts sous-
jacents à une approche RESTFul :
o Niveau 1 : Gérer la complexité de notre système via l’approche « divide & conquer » en introduisant la
notion de ressource.
o Niveau 2 : Eliminer les variantes dans la façon de traiter les choses et de gérer des cas similaires de façon
semblable en introduisant un jeu de verbes standards pour manipuler les ressources.
o Le Richardson Maturity Model fournit aussi un biais intéressant pour évaluer la « RESTitude » d’une
architecture.
(c) Leuville Objects Architectures Orientées Services - HATEOAS (Hypermedia as the Engine of Application State) 6-150
Architectures Orientées Services - HATEOAS (Hypermedia as the Engine of Application State) Version 5.1
REST / HATEOAS
o Un système REST est connu par le client uniquement par son URL initiale
o données
http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven
(c) Leuville Objects Architectures Orientées Services - HATEOAS (Hypermedia as the Engine of Application State) 6-152
Architectures Orientées Services - HATEOAS (Hypermedia as the Engine of Application State) Version 5.1
Hypermedia
o état de la ressource
(c) Leuville Objects Architectures Orientées Services - HATEOAS (Hypermedia as the Engine of Application State) 6-154
Architectures Orientées Services - HATEOAS (Hypermedia as the Engine of Application State) Version 5.1
Hypermedia
(c) Leuville Objects Architectures Orientées Services - HATEOAS (Hypermedia as the Engine of Application State) 6-156
Architectures Orientées Services - HATEOAS (Hypermedia as the Engine of Application State) Version 5.1
Implémentations disponibles
Possibilités
o Spring HATEOAS,
o Yii 2 Framework
o Jersey
o Tastypie
o Eve
o API Platform, PHP framework based on hypermedia and Linked Data support with JSON-LD, Schema.org
and Hydra
(c) Leuville Objects Architectures Orientées Services - HATEOAS (Hypermedia as the Engine of Application State) 6-158
Architectures Orientées Services Version 5.1
Enterprise Service Bus
o Web Services
o Routage intelligent
o Transformations XML
(c) Leuville Objects. Tous droits de traduction, d’adaptation et de reproduction par tous procédés, réservés pour tous pays.
Toute reproduction ou représentation intégrale ou partielle, par quelque procédé que ce soit des pages publiées dans le présent ouvrage,
faite sans l’autorisation de Leuville Objects, est illicite et constitue une contrefaçon (loi du 11 mars 1957 et code de la propriété
intellectuelle du 1er juillet 1992, articles L 122-4, L 122-5 et L 335-2).
(c) Leuville Objects Architectures Orientées Services - Enterprise Service Bus 7-160
Architectures Orientées Services - Enterprise Service Bus Version 5.1
Le bus ESB
Caractéristiques
o Technologie de middleware
o But premier: permettre la communication d’applications non conçues pour fonctionner ensemble
o orchestration BPEL
Principes
o Forte distribution
Notes
(c) Leuville Objects Architectures Orientées Services - Enterprise Service Bus 7-162
Architectures Orientées Services - Enterprise Service Bus Version 5.1
Le bus ESB
id E S B
o couplage faible
« co n n e cte u r» « co n n e cte u r» M ote ur de
S O AP / HTTP re quê te s
S O AP / HTTP
o Web Services dis tribué
o Transformations XML
Notes
(c) Leuville Objects Architectures Orientées Services - Enterprise Service Bus 7-164
Architectures Orientées Services - Enterprise Service Bus Version 5.1
MOM
o Message-Oriented Middleware
Caractéristiques principales
MOM
o Asynchronisme
Appli A 3 2 1 Appli B
o Files de stockage des messages
Client Client
o Différentes modalités d’émission / file d’attente des messages
producteur consommateur
réception des messages de message de message
Qualités
o Couplage lâche
Définition
o Un MOM permet de manipuler des messages et de les échanger d’une application à une autre.
o Les applications communiquent entre elles via ce système de messagerie et n’ont donc pas besoin de se
"voir" les unes les autres.
Propriétés
(c) Leuville Objects Architectures Orientées Services - Enterprise Service Bus 7-166
Architectures Orientées Services - Enterprise Service Bus Version 5.1
o Publish / Subscribe
msg
consomme
envoie
Client 1 Queue Client 2
msg acquittement
Messagerie Point à Point : Chaque message est adressé à une queue spécifique. Les clients lisent cette
queue afin d’en extraire les messages. Les queues conservent les messages qui leur sont envoyés jusqu’à ce
qu’ils soient lus ou périmés. Un message est consommé dès qu’il est lu par un client, quel qu’il soit.
Les processus emetteur et destinataire du message peuvent ne pas être exécutés en même temps. Le
message envoyé sera conservé jusqu’à ce que le destinataire l’extrait de la queue.
Le destinataire peut envoyer un message d’acquittement pour signaler la fin du traitement du message
(c) Leuville Objects Architectures Orientées Services - Enterprise Service Bus 7-168
Architectures Orientées Services - Enterprise Service Bus Version 5.1
délivre Client 2
publie msg
Client 1 Topic
msg
souscrit
délivre Client 3
msg
Le message est publié dans un "Topic". Les destinataire du messages sont les clients ayant souscrit au topic.
Le système transmet automatiquement tout message souscrit dans un topic aux clients y ayant souscrit. Les
messages sont conservés le temps qu’ils soient distribués à tous les clients.
Les clients souscrivant à un topic ne peuvent consommer que les messages ayant été publiés après leur
souscription. Le souscrivant doit être actif au moment de la publication du message pour que celui-ci lui
soit délivré.
(c) Leuville Objects Architectures Orientées Services - Enterprise Service Bus 7-170
Architectures Orientées Services - Enterprise Service Bus Version 5.1
o spécification permettant de découpler les clients Java d’un MOM d’un type de MOM particulier
o normalise:
o IBM
o BEA
o JBoss
o ...
Notes
(c) Leuville Objects Architectures Orientées Services - Enterprise Service Bus 7-172
Architectures Orientées Services - Enterprise Service Bus Version 5.1
o Objets administrés : les fabriques de connexion (Connection Factory) et les destinations sont configurées et
placées dans un contexte JNDI par un administrateur
Notes
Les fabriques de connexion et les destinations sont placées dans un espace de nommage JNDI par un
administrateur. Un client JMS peut alors récupérer une référence sur ces objets (look up) et établir une
connexion logique via le fournisseur JMS.
(c) Leuville Objects Architectures Orientées Services - Enterprise Service Bus 7-174
Architectures Orientées Services - Enterprise Service Bus Version 5.1
Web Services
Les besoins
.N E T
o Ne pas perturber l’existant au
niveau des infrastructures de C++ C o u p e -fe u
gestion de la sécurité
C o u p e -fe u A D M IN IS T R A T IO N
TRANSPO RTEUR
La solution
o Constituants essentiels
o Un protocole de requétage basé sur un format de données universel : XML et pouvant utiliser HTTP :
SOAP
Les besoins
L’inter-opérabilité des systèmes et des applications est un souhait partagé depuis très longtemps par de
nombreuses organisations et entreprises. Jusqu’à présent, les technologies permettant l’invocation distante
de services comportaient de très nombreuses contraintes qui rendaient difficile leur utilisation:
o incompatibilité des protocoles de communication : CORBA avec DCOM par exemple,
o incapacité à traverser les protections pare-feu des entreprises sans modification des règles de sécurité,
o lourdeurs de développement et de mise en oeuvre.
La solution
L’idée forte des services WEB consiste à utiliser ce qui existe déjà au niveau des entreprises plutôt qu’à
proposer de nouvelles solutions trop contraignantes en termes d’équipements et de procédures:
o XML qui est un format de données largement accepté et répandu,
o HTTP qui est un procole de communication universel pour lequel les procédures de sécurité réseau des
entreprises sont déjà adaptées.
(c) Leuville Objects Architectures Orientées Services - Enterprise Service Bus 7-176
Architectures Orientées Services - Enterprise Service Bus Version 5.1
Exemple de scénario
Bus ESB
Service "Montants spéciaux"
routage
Emprunteur
Service de "haut niveau"
Service "Montants normaux"
o un client doit appeler un service permettant d’obtenir une offre de crédit bancaire
o en fonction du montant à emprunter, sa demande est routée soit vers un service "Montants spéciaux", soit vers
un service "Montants normaux"
o Fonctionnalités minimales
Notes
(c) Leuville Objects Architectures Orientées Services - Enterprise Service Bus 7-178
Architectures Orientées Services - Enterprise Service Bus Version 5.1
Fonctionnalités avancées
o Standard
Notes
(c) Leuville Objects Architectures Orientées Services - Enterprise Service Bus 7-180
Architectures Orientées Services - Enterprise Service Bus Version 5.1
o Langage propriétaire
o Métaphore graphique
o Processus BPEL
Notes
(c) Leuville Objects Architectures Orientées Services - Enterprise Service Bus 7-182
Architectures Orientées Services - Enterprise Service Bus Version 5.1
o Exemple BEA Aqualogic : routage en fonction d’un taux présent dans la requête entrante
L’exemple présenté ici est exécuté au sein de Aqualogic Service Bus de BEA Systems.
L’expression permettant d’extraire le taux d’intérêt de la requête entrante est exprimé à l’aide de
XQuery/Xpath:
$body/exam:processLoanApp/loanRequest/java:Rate
(c) Leuville Objects Architectures Orientées Services - Enterprise Service Bus 7-184
Architectures Orientées Services - Enterprise Service Bus Version 5.1
Notes
(c) Leuville Objects Architectures Orientées Services - Enterprise Service Bus 7-186
Architectures Orientées Services - Enterprise Service Bus Version 5.1
Itération
Notes
(c) Leuville Objects Architectures Orientées Services - Enterprise Service Bus 7-188
Architectures Orientées Services - Enterprise Service Bus Version 5.1
Transformations XML
ESB et XML
o Un ESB héberge des web services qui traitent des requêtes SOAP = XML
o Des données sont extraites de ces requêtes SOAP et envoyées à différents composants du SI, après
transformations éventuelles
Opérations souhaitées
o Suppression d’éléments
Moyens techniques
o XSLT
Notes
(c) Leuville Objects Architectures Orientées Services - Enterprise Service Bus 7-190
Architectures Orientées Services - Enterprise Service Bus Version 5.1
Transformations XML
XPath
XQuery
Notes
(c) Leuville Objects Architectures Orientées Services - Enterprise Service Bus 7-192
Architectures Orientées Services - Enterprise Service Bus Version 5.1
Exemple
<lg:CreditRating> ./exam:processLoanApp/loanRequest/lg:Notes
{data($creditRating)}
</lg:CreditRating>
Notes
(c) Leuville Objects Architectures Orientées Services - Enterprise Service Bus 7-194
Architectures Orientées Services - Enterprise Service Bus Version 5.1
Exemple
Notes
(c) Leuville Objects Architectures Orientées Services - Enterprise Service Bus 7-196
Architectures Orientées Services - Enterprise Service Bus Version 5.1
Exemple
./exam:processLoanAppResponse/return/lg:CreditRating
Notes
(c) Leuville Objects Architectures Orientées Services - Enterprise Service Bus 7-198
Architectures Orientées Services - Enterprise Service Bus Version 5.1
BUS
Conteneur Conteneur
A BPM
Conteneur
Service A Service B
BAM
Application A Application B
o Composants optionnels
o BPM: Business Process Management pour suivre l’orchestration des processus métier
o BAM: Business Activity Monitoring pour suivre l’activité d’un processus métier
Notes
(c) Leuville Objects Architectures Orientées Services - Enterprise Service Bus 7-200
Architectures Orientées Services - Enterprise Service Bus Version 5.1
Conteneurs
Bus ESB
Conteneur 2 BPM
Admin Conteneur 1
Application 2
Application 1
Notes
Les concepts des bus ESB ne sont pas sans rappeler les principes des ORB CORBA.
(c) Leuville Objects Architectures Orientées Services - Enterprise Service Bus 7-202
Architectures Orientées Services - Enterprise Service Bus Version 5.1
Notes
(c) Leuville Objects Architectures Orientées Services - Enterprise Service Bus 7-204
Architectures Orientées Services Version 5.1
Les architectures et modèles SOA
(c) Leuville Objects. Tous droits de traduction, d’adaptation et de reproduction par tous procédés, réservés pour tous pays.
Toute reproduction ou représentation intégrale ou partielle, par quelque procédé que ce soit des pages publiées dans le présent ouvrage,
faite sans l’autorisation de Leuville Objects, est illicite et constitue une contrefaçon (loi du 11 mars 1957 et code de la propriété
intellectuelle du 1er juillet 1992, articles L 122-4, L 122-5 et L 335-2).
(c) Leuville Objects Architectures Orientées Services - Les architectures et modèles SOA 8-206
Architectures Orientées Services - Les architectures et modèles SOA Version 5.1
Architecture SOA
o Favoriser la réutilisation
o ...
Notes
(c) Leuville Objects Architectures Orientées Services - Les architectures et modèles SOA 8-208
Architectures Orientées Services - Les architectures et modèles SOA Version 5.1
L’auteur
Proposition d’architecture
(1) Business Process Layer
o (1) Business Process Layer
Processus métier de haut niveau
Notes
(c) Leuville Objects Architectures Orientées Services - Les architectures et modèles SOA 8-210
Architectures Orientées Services - Les architectures et modèles SOA Version 5.1
o Services métier
o Agissent comme des contrôleurs des services de la couche "Application Service Layer"
Notes
(c) Leuville Objects Architectures Orientées Services - Les architectures et modèles SOA 8-212
Architectures Orientées Services - Les architectures et modèles SOA Version 5.1
Modèle BEA
Le modèle architectural en
couches ou Layered
Architectural Model
o Couche = regroupement de
services similaires en termes de
finalité
o Couches typiques
o Services d’accès et
d’information
o Services de présentation
o Applications composites
o Services d’infrastructure
Notes
(c) Leuville Objects Architectures Orientées Services - Les architectures et modèles SOA 8-214
Architectures Orientées Services - Les architectures et modèles SOA Version 5.1
A l’existant de l’entreprise
Serv ices de Présentation
o Systèmes tiers
Serv ices M étier Partagés
o Serveurs d’applications
Notes
(c) Leuville Objects Architectures Orientées Services - Les architectures et modèles SOA 8-216
Architectures Orientées Services - Les architectures et modèles SOA Version 5.1
SI existant
Notes
(c) Leuville Objects Architectures Orientées Services - Les architectures et modèles SOA 8-218
Architectures Orientées Services - Les architectures et modèles SOA Version 5.1
Services de présentation
SI existant
Notes
(c) Leuville Objects Architectures Orientées Services - Les architectures et modèles SOA 8-220
Architectures Orientées Services - Les architectures et modèles SOA Version 5.1
Applications composites
o S’appuie sur la couche des services métier Serv ices M étier Partagés
partagés
SI existant
Notes
(c) Leuville Objects Architectures Orientées Services - Les architectures et modèles SOA 8-222
Architectures Orientées Services - Les architectures et modèles SOA Version 5.1
Services d’infrastructure
Services communs
o Gestion d’erreurs
o Sécurité
Bus ESB
o Transformation de données
Administration
o Qualité de service
Notes
(c) Leuville Objects Architectures Orientées Services - Les architectures et modèles SOA 8-224
Architectures Orientées Services - Les architectures et modèles SOA Version 5.1
Modèle d’intégration
Notes
(c) Leuville Objects Architectures Orientées Services - Les architectures et modèles SOA 8-226
Architectures Orientées Services - Les architectures et modèles SOA Version 5.1
o Validate : validation des données XML entrantes, par exemple avec un schéma XSD
o Enrich : ajout éventuel de données compémentaires, par appel à une source externe telle qu’un autre service,
une base de données, ...
o Transform : modification des données en vue de respecter le structure imposée par le service cible
o Route (optionnel) : choix du service cible en fonction de règles, par exemple sur le contenu ...
Notes
http://webservices.sys-con.com/read/46170.htm
(c) Leuville Objects Architectures Orientées Services - Les architectures et modèles SOA 8-228
Architectures Orientées Services Version 5.1
Enterprise Integration Patterns : système de messagerie
(c) Leuville Objects. Tous droits de traduction, d’adaptation et de reproduction par tous procédés, réservés pour tous pays.
Toute reproduction ou représentation intégrale ou partielle, par quelque procédé que ce soit des pages publiées dans le présent ouvrage,
faite sans l’autorisation de Leuville Objects, est illicite et constitue une contrefaçon (loi du 11 mars 1957 et code de la propriété
intellectuelle du 1er juillet 1992, articles L 122-4, L 122-5 et L 335-2).
(c) Leuville Objects Architectures Orientées Services - Enterprise Integration Patterns : système de messagerie 9-230
Architectures Orientées Services - Enterprise Integration Patterns : système de messagerie Version 5.1
o Concepts présentés sans contraintes sur les systèmes ou les langages utilisés.
o "Enterprise Integration Patterns", paru en janvier 2004, écrit par Gregor Hohpe & Bobby Woolf
http://www.enterpriseintegrationpatterns.com/
Notes
(c) Leuville Objects Architectures Orientées Services - Enterprise Integration Patterns : système de messagerie 9-232
Architectures Orientées Services - Enterprise Integration Patterns : système de messagerie Version 5.1
o Les EIP sont relativements simples, naturels, basiques, voire même évidents...
o ... mais leur combinaison permet de créer des systèmes d’intégration complexes !!
Notes
(c) Leuville Objects Architectures Orientées Services - Enterprise Integration Patterns : système de messagerie 9-234
Architectures Orientées Services - Enterprise Integration Patterns : système de messagerie Version 5.1
Styles d’intégration
Quatre méthodes pour permettre à des applications de s’échanger des informations ou de communiquer
entre elles
o Transfert de fichiers
o Système de messagerie
Notes
(c) Leuville Objects Architectures Orientées Services - Enterprise Integration Patterns : système de messagerie 9-236
Architectures Orientées Services - Enterprise Integration Patterns : système de messagerie Version 5.1
Styles d’intégration
o Deux applications communiquent entre elles en se partageant des données stockées dans des fichiers.
o Se pose le problème du format du fichier, un mauvais choix pouvant entrainer des problèmes
d’interopérabilité.
o Aujourd’hui, XML est le choix le plus judicieux pour le format d’échange de données.
o En l’absence de standard, le fichier généré par l’application A est rarement au format attendu par l’application
B et il est souvent nécessaire de compléter le système avec des processus de transformation de données.
Notes
(c) Leuville Objects Architectures Orientées Services - Enterprise Integration Patterns : système de messagerie 9-238
Architectures Orientées Services - Enterprise Integration Patterns : système de messagerie Version 5.1
Styles d’intégration
o Plusieurs applications ont accès à une même base de données pour s’échanger des informations.
o Les accès simultanés à la base doivent être gérés, chaque application doit parfaitement gérer les transactions.
Notes
(c) Leuville Objects Architectures Orientées Services - Enterprise Integration Patterns : système de messagerie 9-240
Architectures Orientées Services - Enterprise Integration Patterns : système de messagerie Version 5.1
Styles d’intégration
o Une application expose une interface dont les opérations peuvent être invoquées à distance par une autre
application.
o L’application effectuant l’invocation ne connait que l’interface exposée par l’autre application.
o La communication entre le stub et le skeleton utilise souvent un protocole propriétaire, ce qui pose le problème
de l’interopérabilité.
o Les paramètres d’invocation et le résultat doivent être écrits sous une forme compréhensible par les deux
applications.
Notes
(c) Leuville Objects Architectures Orientées Services - Enterprise Integration Patterns : système de messagerie 9-242
Architectures Orientées Services - Enterprise Integration Patterns : système de messagerie Version 5.1
Styles d’intégration
Système de messagerie
o La communication entre les systèmes est asynchrone, les applications n’ont pas besoin d’être actives pour
s’envoyer des messages.
o C’est le style adopté dans les architectures SOA. C’est l’ESB qui joue le rôle de bus de messages.
Notes
(c) Leuville Objects Architectures Orientées Services - Enterprise Integration Patterns : système de messagerie 9-244
Architectures Orientées Services - Enterprise Integration Patterns : système de messagerie Version 5.1
Système de messagerie
o Le système de messagerie permet de faire communiquer des applications en créant un couplage lâche entre
elles.
o La communicaton est également rendue plus fiable car les systèmes s’échangeant des messages n’ont pas
besoin d’être forcément actifs.
o C’est le MOM qui est chargé de transmettre les messages d’une application à une, ou plusieurs autres.
Concepts de base
o Message Channel : Les messages sont transmis à travers des canaux (Message Channel), reliant un emetteur
à un destinataire.
o Multi-step delivery : Entre son emission et sa réception, un message peut être traité par le système de
messagerie pour, par exemple, le valider, l’enrichir, le transformer, ...
o Routing : Il peut arriver que l’émetteur du message ne connaisse pas sa destination. Le système de messagerie
peut se charger de router le message vers le bon destinataire en fonctions de critères ou de règles.
o Transformation : Le message émis n’est pas toujours au format attendu par l’application destinataire. Le
système de messagerie peut transformer le message pour qu’il soit compris de tous.
o EndPoint : Les applications communiquant avec le système de messagerie le font en spécifiant les
coordonnées de la destination (Message Endpoint) avec laquelle elles doivent interagir.
Notes
(c) Leuville Objects Architectures Orientées Services - Enterprise Integration Patterns : système de messagerie 9-246
Architectures Orientées Services - Enterprise Integration Patterns : système de messagerie Version 5.1
Système de messagerie
Message Channel
o Chaque application doit savoir avec quel canal elle doit interagir.
Notes
(c) Leuville Objects Architectures Orientées Services - Enterprise Integration Patterns : système de messagerie 9-248
Architectures Orientées Services - Enterprise Integration Patterns : système de messagerie Version 5.1
Système de messagerie
Message
Notes
(c) Leuville Objects Architectures Orientées Services - Enterprise Integration Patterns : système de messagerie 9-250
Architectures Orientées Services - Enterprise Integration Patterns : système de messagerie Version 5.1
Système de messagerie
Tubes et Filtres
o Le message émis peut nécessiter qu’on lui applique un certain nombres de traitement avant d’être délivré au
destinataire.
o Le message passe par divers filtres (Filters) avant d’être mis à disposition du destinataire.
o Chaque filtre expose une interface simple : il reçoit le message, le traite, et rend le message modifié au tube.
o La connection entre le tube et un filtre est appelé port. Un filtre possède habituellement un port d’entrée et un
port de sortie.
Notes
(c) Leuville Objects Architectures Orientées Services - Enterprise Integration Patterns : système de messagerie 9-252
Architectures Orientées Services - Enterprise Integration Patterns : système de messagerie Version 5.1
Système de messagerie
Routeur de message
o Le routeur diffère du filtre habituel dans le sens où le routeur possède plusieurs ports de sortie.
Notes
(c) Leuville Objects Architectures Orientées Services - Enterprise Integration Patterns : système de messagerie 9-254
Architectures Orientées Services - Enterprise Integration Patterns : système de messagerie Version 5.1
Système de messagerie
o Il prend en entrée le message, tel qu’il a été émis, et le transforme de telle manière que sa structure soit celle
attendue par le destinataire.
Notes
(c) Leuville Objects Architectures Orientées Services - Enterprise Integration Patterns : système de messagerie 9-256
Architectures Orientées Services - Enterprise Integration Patterns : système de messagerie Version 5.1
Système de messagerie
Message Endpoint
o Les Message Endpoints sont la liaison entre les applications et les Message Channels.
Notes
(c) Leuville Objects Architectures Orientées Services - Enterprise Integration Patterns : système de messagerie 9-258
Architectures Orientées Services - Enterprise Integration Patterns : système de messagerie Version 5.1
Messaging Channels
o Dans un système de messagerie, les applications communiquent entre elles en s’échangeant des messages
transitant dans des Message Channels.
o Pour utiliser le système de messagerie, une application doit donc savoir à priori quel canal utiliser pour
transmettre ou recevoir un message.
o Les sujets suivants doivent faire l’objet d’une réflexion afin de mettre en oeuvre de façon efficace un système
de messagerie :
o L’usage veut que l’on dispose d’un ensemble pré-determinés de canaux ; les canaux de messagerie ne
sont pas découverts dynamiquement, il doivent être connus à l’avance.
o Qui doit gérer les canaux ? Est-ce à l’application de connaitre les canaux dont elle a besoin, et au système
de messagerie de lui mettre à disposition ? Ou bien l’application doit-elle s’adapter au canaux proposés
par le système ?
Notes
(c) Leuville Objects Architectures Orientées Services - Enterprise Integration Patterns : système de messagerie 9-260
Architectures Orientées Services - Enterprise Integration Patterns : système de messagerie Version 5.1
Messaging Channels
o Comment gérer la robustesse du système ? Que deviennent les messages si le serveur redémarre ?
o Comment intégrer au système de messagerie une application qui n’a pas techniquement accès à ce système ?
o Le penser, dès sa conception, comme un bus de messages, potentiellement utilisable par toutes les
applications de l’entreprise.
Notes
(c) Leuville Objects Architectures Orientées Services - Enterprise Integration Patterns : système de messagerie 9-262
Architectures Orientées Services - Enterprise Integration Patterns : système de messagerie Version 5.1
Messaging Channels
o Point-to-Point Channel
o Un message envoyé ne doit être consommé que par une seule application.
o Il peut y avoir plusieurs consommateurs récupérant des messages dans le canal, mais un même message ne
pourra être traité que par un seul receveur.
o C’est au système de messagerie de s’assurer que le message n’est traité qu’une seule fois, pas aux applications.
Notes
(c) Leuville Objects Architectures Orientées Services - Enterprise Integration Patterns : système de messagerie 9-264
Architectures Orientées Services - Enterprise Integration Patterns : système de messagerie Version 5.1
Messaging Channels
o Le système doit s’assurer que le message a bien été traité par toutes les applications qui se sont abonnées au
canal.
Notes
(c) Leuville Objects Architectures Orientées Services - Enterprise Integration Patterns : système de messagerie 9-266
Architectures Orientées Services - Enterprise Integration Patterns : système de messagerie Version 5.1
Messaging Channels
Datatype Channel
o Une application peut envoyer des messages contenant divers types de données à une autre application.
o Comment s’assurer que l’application consommatrice sache comment traiter les messages ?
Notes
(c) Leuville Objects Architectures Orientées Services - Enterprise Integration Patterns : système de messagerie 9-268
Architectures Orientées Services - Enterprise Integration Patterns : système de messagerie Version 5.1
Messaging Channels
o Permet à une application de gérer la réception d’un message invalide en le routant vers un canal dédié à ce
type de message.
Notes
(c) Leuville Objects Architectures Orientées Services - Enterprise Integration Patterns : système de messagerie 9-270
Architectures Orientées Services - Enterprise Integration Patterns : système de messagerie Version 5.1
Messaging Channels
o Permet de gérer les messages périmés, n’ayant pas été consommés après un certain délai.
Notes
(c) Leuville Objects Architectures Orientées Services - Enterprise Integration Patterns : système de messagerie 9-272
Architectures Orientées Services - Enterprise Integration Patterns : système de messagerie Version 5.1
Messaging Channels
o Utiliser des canaux persistents pour les messages importants qui doivent survivre à un redémarrage du système
de messagerie.
o Le message est conservé sur un disque tant que celui-ci n’a pas été consommé.
Notes
(c) Leuville Objects Architectures Orientées Services - Enterprise Integration Patterns : système de messagerie 9-274
Architectures Orientées Services - Enterprise Integration Patterns : système de messagerie Version 5.1
Messaging Channel
Canal adaptateur
o Channel Adapter
o Application cliente du système de messagerie et qui communique avec lui à la place d’une autre application
qui n’en a techniquement pas la possibilité.
Notes
(c) Leuville Objects Architectures Orientées Services - Enterprise Integration Patterns : système de messagerie 9-276
Architectures Orientées Services - Enterprise Integration Patterns : système de messagerie Version 5.1
Messaging Channel
Pont de messagerie
o Messaging Bridge
o Utile si le système dispose de plusieurs systèmes de messagerie. Plutôt que de laisser à l’application le soin de
se connecter au bon système de messagerie, on s’assure plutôt que tous les systèmes disposent de tous les
messages.
o Le pont est client de tous les systèmes de messagerie et se charge de répliquer les messages.
Notes
(c) Leuville Objects Architectures Orientées Services - Enterprise Integration Patterns : système de messagerie 9-278
Architectures Orientées Services - Enterprise Integration Patterns : système de messagerie Version 5.1
Messaging Channels
o Message Bus
Notes
(c) Leuville Objects Architectures Orientées Services - Enterprise Integration Patterns : système de messagerie 9-280
Architectures Orientées Services Version 5.1
Les extensions WS-X
(c) Leuville Objects. Tous droits de traduction, d’adaptation et de reproduction par tous procédés, réservés pour tous pays.
Toute reproduction ou représentation intégrale ou partielle, par quelque procédé que ce soit des pages publiées dans le présent ouvrage,
faite sans l’autorisation de Leuville Objects, est illicite et constitue une contrefaçon (loi du 11 mars 1957 et code de la propriété
intellectuelle du 1er juillet 1992, articles L 122-4, L 122-5 et L 335-2).
(c) Leuville Objects Architectures Orientées Services - Les extensions WS-X 10-282
Architectures Orientées Services - Les extensions WS-X Version 5.1
Plusieurs familles de spécifications pour mettre en oeuvre des Web Service d’entreprise :
o Spécifications XML
o ...
Notes
(c) Leuville Objects Architectures Orientées Services - Les extensions WS-X 10-284
Architectures Orientées Services - Les extensions WS-X Version 5.1
Spécifications XML
o XML Information Set (XML Infoset) : partage d’informations entre documents XML
Notes
(c) Leuville Objects Architectures Orientées Services - Les extensions WS-X 10-286
Architectures Orientées Services - Les extensions WS-X Version 5.1
o MTOM (Message Transmission Optimization Mechanism) : gestion des données binaires dans les messages
SOAP
Notes
(c) Leuville Objects Architectures Orientées Services - Les extensions WS-X 10-288
Architectures Orientées Services - Les extensions WS-X Version 5.1
o WS-Policy : description des services techniques proposés par un WebService (Sécurité, Qualité de service,
...).
o WSDL 2.0 SOAP Binding : Description des modalités concrètes d’invocation d’un WebService
o Web Services Semantics (WSDL-S) : Extension de WSDL permettant d’inclure des éléments de
sémantique.
Notes
(c) Leuville Objects Architectures Orientées Services - Les extensions WS-X 10-290
Architectures Orientées Services - Les extensions WS-X Version 5.1
o WS-Federation : Fédération des système de sécurité entre divers WebServices et d’autres types
d’applications
o WS-Federation Passive Requestor Profile : WS-Federation pour les application non SOAP-enabled
Notes
(c) Leuville Objects Architectures Orientées Services - Les extensions WS-X 10-292
Architectures Orientées Services - Les extensions WS-X Version 5.1
o Web Services Security Kerberos Binding : intégration de Web Services Security avec Kerberos
o Web Single Sign-On Interoperability Profile : interopérabilité entre WS-Federation et le protocole Liberty
Alliance.
o Web Single Sign-On Metadata Exchange Protocol : protocole d’accord entre un service et un fournisseur
d’identité
o eXtensible Access Control Markup Language (XACML) : langage XML de déclaration de politique de
contrôle d’accès
Notes
(c) Leuville Objects Architectures Orientées Services - Les extensions WS-X 10-294
Architectures Orientées Services - Les extensions WS-X Version 5.1
o WS-Reliability : protocole de transmission fiable de messages SOAP (Fujitsu, Novell, Oracle, Sun)
Notes
(c) Leuville Objects Architectures Orientées Services - Les extensions WS-X 10-296
Architectures Orientées Services - Les extensions WS-X Version 5.1
Notes
(c) Leuville Objects Architectures Orientées Services - Les extensions WS-X 10-298
Architectures Orientées Services - Les extensions WS-X Version 5.1
o WS-I Basic Security Profile : recommandations sur la sécurité des Web Services
o Simple SOAP Binding Profile : recommandations sur les protocoles d’invocation des Web Services
Notes
(c) Leuville Objects Architectures Orientées Services - Les extensions WS-X 10-300
Architectures Orientées Services - Les extensions WS-X Version 5.1
o Business Process Execution Language (WS-BPEL) : description XML d’interactions (orchestration) entre
Web Services
o Web Service Choreograpy Interface (WSCI) : description XML d’un flux de message échangés par des
services dans le cadre d’une chorégraphie
o XML Process Definition Language (XPDL) : description XML d’un processus métier
Notes
(c) Leuville Objects Architectures Orientées Services - Les extensions WS-X 10-302
Architectures Orientées Services - Les extensions WS-X Version 5.1
Notes
(c) Leuville Objects Architectures Orientées Services - Les extensions WS-X 10-304
Architectures Orientées Services - Les extensions WS-X Version 5.1
o WS-Management : protocole de gestion, basé sur SOAP, permettant de gérer des serveurs, des périphériques,
des applications, ...
o Web Services Distributed Management (WSDM) : gestion et contrôle du status des services.
Notes
(c) Leuville Objects Architectures Orientées Services - Les extensions WS-X 10-306
Architectures Orientées Services - Les extensions WS-X Version 5.1
Extensions courantes
WS-Addressing
o Améliore la définition de l’adressage des messages : origine, endpoint, identité d’un destinataire, ...
WS-ReliableMessaging
WS-MetadataExchange
WS-Security
WS-Policy
o Lié à WS-Security
...
Notes
(c) Leuville Objects Architectures Orientées Services - Les extensions WS-X 10-308
Architectures Orientées Services - Les extensions WS-X Version 5.1
WS-MetadataExchange
o ou plusieurs
o Description WSDL
o Schema XSD
o Policy
Contributeurs initiaux
o BEA
o IBM
o Microsoft
o SAP
Notes
(c) Leuville Objects Architectures Orientées Services - Les extensions WS-X 10-310
Architectures Orientées Services Version 5.1
WS-Coordination
(c) Leuville Objects. Tous droits de traduction, d’adaptation et de reproduction par tous procédés, réservés pour tous pays.
Toute reproduction ou représentation intégrale ou partielle, par quelque procédé que ce soit des pages publiées dans le présent ouvrage,
faite sans l’autorisation de Leuville Objects, est illicite et constitue une contrefaçon (loi du 11 mars 1957 et code de la propriété
intellectuelle du 1er juillet 1992, articles L 122-4, L 122-5 et L 335-2).
(c) Leuville Objects Architectures Orientées Services - WS-Coordination 11-312
Architectures Orientées Services - WS-Coordination Version 5.1
Différents niveaux
o protocoles de coordination
Notes
WS-Coordination
Concept d’activité
o Gestion et transmission des informations de contexte entre les participants d’une activité
Notes
WS-Coordination
Architecture et services
o Activation
o Enregistrement
o Gestion de protocoles
Notes
2: enregistrement
3: demande
participation
(contexte)
adresse coordinateur
Service
4: enregistrement d’Enregistrement
Service
Participant
adresse coordinateur
Notes
Service
Applicatif requête de fin d’activité
Service
acquittement de Coordination
fin
fin
acquittement
Service acquittement
Participant Autres services
Service participants
Participant
Notes
WS-AtomicTransaction
o Possibilités d’annulation
WS-BusinessActivity
Notes
WS-Coordination : implémentation
Notes
Notes
(c) Leuville Objects. Tous droits de traduction, d’adaptation et de reproduction par tous procédés, réservés pour tous pays.
Toute reproduction ou représentation intégrale ou partielle, par quelque procédé que ce soit des pages publiées dans le présent ouvrage,
faite sans l’autorisation de Leuville Objects, est illicite et constitue une contrefaçon (loi du 11 mars 1957 et code de la propriété
intellectuelle du 1er juillet 1992, articles L 122-4, L 122-5 et L 335-2).
1
(c) Leuville Objects Architectures Orientées Services - La sécurité au sein des Web Services 12-330
Architectures Orientées Services - La sécurité au sein des Web Services Version 5.1
Spécifications
Notes
(c) Leuville Objects Architectures Orientées Services - La sécurité au sein des Web Services 12-332
Architectures Orientées Services - La sécurité au sein des Web Services Version 5.1
WS-Security
Standard OASIS
o Définit des entêtes spécifiques permettant de véhiculer des informations de sécurité avec les messages SOAP
o Tokens d’identification
o username / password
o certificat X509
o ticket Kerberos
o assertion SAML
o Signatures (XMLSignature)
Notes
(c) Leuville Objects Architectures Orientées Services - La sécurité au sein des Web Services 12-334
Architectures Orientées Services - La sécurité au sein des Web Services Version 5.1
WS-Policy
Soumis au W3C
o Permet à un fournisseur de services web de spécifier (entre autres exigences) des exigences en matière de
sécurité
o authentification
o encryption
o signature
Notes
(c) Leuville Objects Architectures Orientées Services - La sécurité au sein des Web Services 12-336
Architectures Orientées Services - La sécurité au sein des Web Services Version 5.1
WS-SecurityPolicy
https://www.oasis-open.org/standards#ws-secpol
o contraintes de signature, encryption ou même simple présence de tel ou tel élément XML
<sp:IssuedToken>
<sp:RequestSecurityTokenTemplate>
<wst:TokenType>...#SAMLV2.0</wst:TokenType>
</sp:RequestSecurityTokenTemplate>
</sp:IssuedToken>
o Objectif: simplifier la mise en oeuvre de WS-Security par génération automatique de proxy conformes aux
exigences
Notes
(c) Leuville Objects Architectures Orientées Services - La sécurité au sein des Web Services 12-338
Architectures Orientées Services - La sécurité au sein des Web Services Version 5.1
SAML
Standard WS-I
o Définit un format XML standard permettant de transporter des informations de sécurité d’un système à un
autre
Notes
(c) Leuville Objects Architectures Orientées Services - La sécurité au sein des Web Services 12-340
Architectures Orientées Services Version 5.1
WS-Security
o Présentation de WS-Security
(c) Leuville Objects. Tous droits de traduction, d’adaptation et de reproduction par tous procédés, réservés pour tous pays.
Toute reproduction ou représentation intégrale ou partielle, par quelque procédé que ce soit des pages publiées dans le présent ouvrage,
faite sans l’autorisation de Leuville Objects, est illicite et constitue une contrefaçon (loi du 11 mars 1957 et code de la propriété
intellectuelle du 1er juillet 1992, articles L 122-4, L 122-5 et L 335-2).
2
Présentation de WS-Security
Caractéristiques
o Spécification élaborée par Microsoft, IBM et Verisign puis standardisée par le consortium OASIS.
o La gestion de la confidentialité
Notes
Cette extension de SOAP a été mise au point pour pallier au manque de sécurité inhérents aux services
Web.
WS-Security est un système extensible et s’adapte à tous les moyens d’authentifications. C’est pourquoi
cette spécification n’impose aucun protocole d’identification / authentification particulier.
Les sécurités de niveau transport tels que SSL permettent de protéger le message durant son transport d’un
point à l’autre de la chaîne de liaison. WS-Security apporte une sécurité au niveau du message lui-même
assurant ainsi sa protection depuis son émission jusqu’à réception.
Terminologie
o WS-Security propose une structure de données adaptée à la gestion des aspects suivants, liés à la sécurité d’un
message :
o Authentification : processus permettant de s’assurer que le client est bien celui qu’il prétend être
o Autorisation : processus permettant de s’assurer que le client a les droits nécessaires et suffisants pour
satisfaire sa demande
o Confidentialité : processus permettant de s’assurer que seul le destinataire du message est capable de le
lire.
o Intégrité : processus permettant de s’assurer que le message n’a pas été modifié entre son émission et sa
réception.
Notes
o XML-Encryption
o XML-Signature
Notes
XML-Signature et XML-Encryption sont deux spécifications du W3C. C’est l’utilisation conjointe de ces
deux technologies qui permet d’assurer la sécurité d’un message.
WS-Security utilise ses deux technologies pour décrire les éléments sécurisant un message.
Quelques règles
o Autant d’en-têtes Security que nécessaire, mais un seul par acteur SOAP
o L’ordre des éléments dans l’élément Security indique l’ordre dans lequel effectuer les opérations
o Dans la mesure du possible, placer les éléments référencés avant l’appel à leur référence
Contenu
o Jetons d’authentification
Notes
Un message peut contenir un ou plusieurs en-têtes Security. Ceux-ci peuvent être associé à un acteur SOAP
particulier.
L’en-tête Security permet de spécifier un ou plusieurs jetons d’authentification : identifiant, identifiant / mot
de passe, jeton de type binaire (décrits par les balises UsernameToken et BinarySecurityToken). Les
jetons ainsi déclarés peuvent ensuite être référencés dans le reste du document (utilisation de la balise
SecurityTokenReference).
Les signatures numériques nécessitent parfois que l’en-tête fournisse des information sur une clé, dans ce
cas, on ajoute un élément keyInfo du domaine XML-Signature
La signature numérique d’un élément du message peut être ajouté à l’en-tête Security afin que le receveur
soit en mesure d’en vérifier l’intégrité. Pour cela, on ajoute un élément Signature du domaine XML-
Signature. Plusieurs signatures numériques, chacune portant sur une partie du message, peuvent être
spécifiés, permettant ainsi à chaque acteur de vérifier l’intégrité de la partie du message qui le concerne.
Les algorithmes supportés pour signer un contenu sont ceux de la spécifications XML-Signature.
L’en-tête sécurité peut déclarer du contenu crypté (élément ReferenceList de XML-Encryption) qui sera
remplacé son équivalent crypté (dans un élément EncryptedData de XML-Encryption). Si la méthode de
cryptage est telle que la clé doit elle-même être cryptée (cryptage à clé symétrique), la déclaration de la clé
cryptée fait alors également partie de l’en-tête Security (élément EncryptedKey de XML-Encryption).
Erreur faultcode
Type de jeton non supporté wsse:UnsupportedSecurityToken
Algorithme de signature ou de cryptage non supporté wsse:UnsupportedAlgorithm
Erreur faultcode
Erreur durant le traitement de l’en-tête "Security" wsse:InvalidSecurity
Jeton invalide wsse:InvalidSecurityToken
Identification ou authentification du jeton impossible wsse:FailedAuthentication
Signature ou décryptage invalide wsse:FailedCheck
Jeton de référence irrécupérable wsse:SecurityTokenUnavailable
Notes
En plus des erreurs métiers liées au traitement du contenu du message, l’utilisation de WS-Security
implique la gestion d’erreurs liées aux processus d’identification / authentification / permissions / intégrité,
mais également des erreurs dues au non support d’une technologie WS-Security par le serveur.
En cas d’erreur de sécurité, la réponse intègre un élément SOAP "fault" fournissant le code de l’erreur.
Exemple de message
Notes
Dans cet exemple, on retrouve la structure habituelle d’un message SOAP, c’est à dire une enveloppe
contenant des en-têtes (header) et un corps (body). L’en-tête Security introduit par WS-Security contient les
informations de sécurité.
Un jeton de securité est associé au message par l’usage de la balise "UsernameToken". La seule donnée
transmise ici est l’identifiant de l’utilisateur (on suppose que le mot de passe est connu du service).
La suite de l’en-tête de sécurité (balise "Signature") concerne la signature numérique du message qui
garantit l’intégrité du message (ie qu’il n’a pas été modifié entre sa soumission et sa réception). La balise
"SignedInfo" décrit ce qui doit être signé (ici, le corps du message) et avec quelle méthode. La balise
"SignatureValue" indique la valeur de la signature calculée, quant à "KeyInfo", elle spécifie le jeton de
sécurité associé à cette signature.
Toutes les informations relatives à la signatures sont décrites en suivant la spécification XML-Signature du
W3C.
Autre exemple
<?xml version="1.0" encoding="utf-8"?>
<S:Envelope
xmlns:S="http://www.w3.org/2001/12/soap-envelope" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/04/secext" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#">
<S:Header>
<m:path xmlns:m="http://schemas.xmlsoap.org/rp/">...</m:path>
<wsse:Security>
<wsse:BinarySecurityToken ValueType="wsse:X509v3" Id="X509Token" EncodingType="wsse:Base64Binary">
MIIEZzCCA9CgAwIBAgIQEmtJZc0rqrKh5i...
</wsse:BinarySecurityToken>
<xenc:EncryptedKey>
<xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" />
<ds:KeyInfo><ds:KeyName>CN=Hiroshi Maruyama, C=JP</ds:KeyName></ds:KeyInfo>
<xenc:CipherData><xenc:CipherValue>d2FpbmdvbGRfE0lm4byV0...</xenc:CipherValue></xenc:CipherData>
<xenc:ReferenceList><xenc:DataReference URI="#enc1" /></xenc:ReferenceList>
</xenc:EncryptedKey>
<ds:Signature>
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
<ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
<ds:Reference>
<ds:Transforms>
<ds:Transform Algorithm="http://...#RoutingTransform" />
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
<ds:DigestValue>LyLsF094hPi4wPU...</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>Hp1ZkmFZ/2kQLXDJbchm5gK...</ds:SignatureValue>
<ds:KeyInfo>
<wsse:SecurityTokenReference><wsse:Reference URI="#X509Token" /></wsse:SecurityTokenReference>
</ds:KeyInfo>
</ds:Signature>
</wsse:Security>
</S:Header>
<S:Body>
<xenc:EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element" Id="enc1">
<xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#3des-cbc" />
<xenc:CipherData><xenc:CipherValue>d2FpbmdvbGRfE0lm4byV0...</xenc:CipherValue></xenc:CipherData>
</xenc:EncryptedData>
</S:Body>
</S:Envelope>
Notes
Dans cet exemple, le jeton de sécurité est un certificat X.509 encodé en base 64.
La balise "xenc:EncryptedKey" indique la clé utilisée pour crypter une partie du message. Le cryptage
utilisé étant basé sur une clé symétrique, celle-ci est transmise cryptée. En l’occurence, elle est cryptée en
utilisant l’algorithme RSA. La clé utilisée pour crypter la clé symétrique est indiquée dans la balise
"keyInfo". Viennent ensuite la valeur de la clé cryptée ainsi que la référence vers le contenu crypté
(identifiant "enc1").
La dernière partie concerne la signature numérique du document. Comme dans l’exemple précédent, on
indique la méthode de signature, la partie du document signée (ici, à base de Transform), le checksum
résultant et enfin la clé (ici une référence au certificat X.509 déclaré plus haut).
Enfin, le corps même du message est remplacé par un élément EncryptedData du domaine XML-Encryption
comme spécifié dans l’élément EncryptedKey de l’en-tête de sécurité.
Implémentations de WS-Security
Java
o Implémentation Apache : Apache WSS4J, utilisable conjointement avec Apache Axis ou CXF.
.NET
Notes
o Etude de faisabilité
(c) Leuville Objects. Tous droits de traduction, d’adaptation et de reproduction par tous procédés, réservés pour tous pays.
Toute reproduction ou représentation intégrale ou partielle, par quelque procédé que ce soit des pages publiées dans le présent ouvrage,
faite sans l’autorisation de Leuville Objects, est illicite et constitue une contrefaçon (loi du 11 mars 1957 et code de la propriété
intellectuelle du 1er juillet 1992, articles L 122-4, L 122-5 et L 335-2).
(c) Leuville Objects Architectures Orientées Services - Expression des besoins 14-360
Architectures Orientées Services - Expression des besoins Version 5.1
Démarche générale
act Expression du besoin
Diagnostic
Réalisation du cahier des charges
Fi n
Notes
(c) Leuville Objects Architectures Orientées Services - Expression des besoins 14-362
Architectures Orientées Services - Expression des besoins Version 5.1
Etude de faisabilité
Etapes
o Repérage du domaine
o pour déterminer les finalités du projet, ses limites, les acteurs concernés
o Diagnostic et orientation
Notes
(c) Leuville Objects Architectures Orientées Services - Expression des besoins 14-364
Architectures Orientées Services - Expression des besoins Version 5.1
Repérage du domaine
o Aide au management
o Efficacité opérationnelle
o Evolutivité
Moyens
o Entretiens avec des cadres de l’entreprise ayant une vue globale (interviews de direction)
Notes
(c) Leuville Objects Architectures Orientées Services - Expression des besoins 14-366
Architectures Orientées Services - Expression des besoins Version 5.1
Repérage du domaine
Outils de modélisation
o Diagramme de paquetages
o un domaine = un paquetage
o Diagramme de communications
o un domaine = un objet
:Serv ice
2: paiement Comptabilité
Notes
(c) Leuville Objects Architectures Orientées Services - Expression des besoins 14-368
Architectures Orientées Services - Expression des besoins Version 5.1
Moyens
o Documentation
Outils de modélisation
Notes
(c) Leuville Objects Architectures Orientées Services - Expression des besoins 14-370
Architectures Orientées Services - Expression des besoins Version 5.1
Moyens
o est événement quelque chose qui se passe et qui est reconnu par l’entreprise
o Ne pas chercher à modéliser trop finement le SI existant -> risque de perte de recul
Outils de modélisation
o Diagramme de séquences
o Diagramme d’activités
Notes
(c) Leuville Objects Architectures Orientées Services - Expression des besoins 14-372
Architectures Orientées Services - Expression des besoins Version 5.1
Exemple
Notes
(c) Leuville Objects Architectures Orientées Services - Expression des besoins 14-374
Architectures Orientées Services - Expression des besoins Version 5.1
Diagnostic
Améliorations nécessaires
Orientations
Notes
(c) Leuville Objects Architectures Orientées Services - Expression des besoins 14-376
Architectures Orientées Services - Expression des besoins Version 5.1
Scénarios de reconfiguration du SI
o développement spécifique
o solution mixte
o Etudes de coûts
Décision
Notes
(c) Leuville Objects Architectures Orientées Services - Expression des besoins 14-378
Architectures Orientées Services - Expression des besoins Version 5.1
o stratégie de développement
Reconfiguration SI
Rédaction CDC
Fi n
Notes
(c) Leuville Objects Architectures Orientées Services - Expression des besoins 14-380
Architectures Orientées Services - Expression des besoins Version 5.1
Description du futur SI
o Cartographie du système, avec mise en évidence de ses frontières avec d’autres systèmes
o L’ensemble étant illustré par les diagrammes obtenus lors de l’étude de faisabilité
Stratégie et exigences
o Précisions des rôles de la MOE dans certaines tâches réalisées par la MOA (recette, migration, formation, ...)
Notes
Les reprises de données peuvent être gérées comme des projets à part entière.
(c) Leuville Objects Architectures Orientées Services - Expression des besoins 14-382
Architectures Orientées Services Version 5.1
Analyse, conception et modélisation des services
o Recommandations WS-I
(c) Leuville Objects. Tous droits de traduction, d’adaptation et de reproduction par tous procédés, réservés pour tous pays.
Toute reproduction ou représentation intégrale ou partielle, par quelque procédé que ce soit des pages publiées dans le présent ouvrage,
faite sans l’autorisation de Leuville Objects, est illicite et constitue une contrefaçon (loi du 11 mars 1957 et code de la propriété
intellectuelle du 1er juillet 1992, articles L 122-4, L 122-5 et L 335-2).
(c) Leuville Objects Architectures Orientées Services - Analyse, conception et modélisation des services 15-384
Architectures Orientées Services - Analyse, conception et modélisation des services Version 5.1
o Recensement de l’existant
o Périmètre
o Objets métier
Etude de
Diagnostic
o Objectifs d’améliorations
o Stratégie(s)
Rédaction CDC
Fi n
Notes
(c) Leuville Objects Architectures Orientées Services - Analyse, conception et modélisation des services 15-386
Architectures Orientées Services - Analyse, conception et modélisation des services Version 5.1
Phases du développement
MOE
CP
Expression Expression
Besoins fonctionnels contraintes techniques
Expert
Métier Architecte
Analyse Architecture
technique
Conception préliminaire
Conception détaillée
Réalisation Recette
Notes
o Expression des besoins fonctionnels : phase dont l’objectif est de produire les spécifications
fonctionnelles du système à réaliser
o Expression des contraintes techniques : recenser toutes les contraintes non fonctionnelles qui auront une
influence sur la conception du système
o Analyse : découpage en catégories, mise au point des modèles statiques et dynamiques fonctionnels,
indépendamment de toute considération technique
o Architecture technique : définition des composants de l’architecture technique, si possible
indépendamment des besoins fonctionnels
o Conception préliminaire : fusion de l’analyse fonctionnelle et de l’architecture technique
o Conception détaillée : conception de chaque composant à réaliser
o Réalisation : codage et tests unitaires
o Recette : validation du système final
(c) Leuville Objects Architectures Orientées Services - Analyse, conception et modélisation des services 15-388
Architectures Orientées Services - Analyse, conception et modélisation des services Version 5.1
De façon générale
Notes
Il s’agit de suggestions qui peuvent être particularisées dans le cadre de la mise en oeuvre d’un processus
spécifique adapté à partir du Processus Unifié.
(c) Leuville Objects Architectures Orientées Services - Analyse, conception et modélisation des services 15-390
Architectures Orientées Services - Analyse, conception et modélisation des services Version 5.1
Notes
(c) Leuville Objects Architectures Orientées Services - Analyse, conception et modélisation des services 15-392
Architectures Orientées Services - Analyse, conception et modélisation des services Version 5.1
Analyse SOA
o processus UP
o formalisme UML
o Identifier au sein des applications existantes les processus métier correspondant aux cas d’utilisation retenus
o définir les frontières de ces ensembles avec les services existants ou planifiés
Notes
(c) Leuville Objects Architectures Orientées Services - Analyse, conception et modélisation des services 15-394
Architectures Orientées Services - Analyse, conception et modélisation des services Version 5.1
Processus
o Décomposer les processus métier en étapes, en s’appuyant sur des techniques existantes : BPM par exemple
o Définir (éventuellement) une couche d’orchestration à partir d’informations telles que : règles métier,
conditions, exceptions, ...
o Vérifier que les candidats sont de "bons" services : réutilisables, autonomes, sans état, ...
o Dérouler les principaux scénarios issus des cas d’utilisation, identifier les compositions de services
o Modifier le contenu des services candidats si nécessaire, créer les services ou opérations manquants
Notes
(c) Leuville Objects Architectures Orientées Services - Analyse, conception et modélisation des services 15-396
Architectures Orientées Services - Analyse, conception et modélisation des services Version 5.1
Les services
o sont réutilisables
o sont autonomes
o -> annuaires
Notes
(c) Leuville Objects Architectures Orientées Services - Analyse, conception et modélisation des services 15-398
Architectures Orientées Services - Analyse, conception et modélisation des services Version 5.1
Contrôleur de services
o Modélisation de services de
haut niveau
Outils
o Modèles BPMN
Notes
(c) Leuville Objects Architectures Orientées Services - Analyse, conception et modélisation des services 15-400
Architectures Orientées Services - Analyse, conception et modélisation des services Version 5.1
o A partir des services logiques issus de l’analyse et des choix issus de l’étude d’architecture
Activités typiques
o emploi de modèles de conception tels que le pattern VETO ou d’autres plus spécifiques
Notes
(c) Leuville Objects Architectures Orientées Services - Analyse, conception et modélisation des services 15-402
Architectures Orientées Services - Analyse, conception et modélisation des services Version 5.1
o RPC : l’élement <soap:Body> contient un élément dont le nom est celui de la méthode invoquée
o Document : l’élément <soap:Body> peut contenir un nombre quelconque d’éléments, selon accord entre
l’émetteur et le récepteur
o SOAP Encoding
o données encodées selon des règles de sérialisation issues de SOAP 1.1 section 5
o Literal
Notes
(c) Leuville Objects Architectures Orientées Services - Analyse, conception et modélisation des services 15-404
Architectures Orientées Services - Analyse, conception et modélisation des services Version 5.1
Travaux de l’OMG
o SoaML
o soutenu par: CapGemini, EDS, Fujitsu, HP, IBM, Softeam, France Telecom, Thales, ...
Notes
(c) Leuville Objects Architectures Orientées Services - Analyse, conception et modélisation des services 15-406
Architectures Orientées Services - Analyse, conception et modélisation des services Version 5.1
SoaML
o Service
o possibilité offerte par une ou plusieurs entités (Participant) à d’autres, par l’intermédiaire de contrats bien
définis
o stéréotype <<service>>
o Participant
o stéréotype <<participant>>
o ServiceInterface
Notes
(c) Leuville Objects Architectures Orientées Services - Analyse, conception et modélisation des services 15-408
Architectures Orientées Services - Analyse, conception et modélisation des services Version 5.1
ServiceInterface SoaML
Exemple générique
o part: endpoints
Notes
(c) Leuville Objects Architectures Orientées Services - Analyse, conception et modélisation des services 15-410
Architectures Orientées Services Version 5.1
Introduction à BPMN
o Concepts BPMN
o Objectifs
o Historique
o Outils de modélisation
(c) Leuville Objects. Tous droits de traduction, d’adaptation et de reproduction par tous procédés, réservés pour tous pays.
Toute reproduction ou représentation intégrale ou partielle, par quelque procédé que ce soit des pages publiées dans le présent ouvrage,
faite sans l’autorisation de Leuville Objects, est illicite et constitue une contrefaçon (loi du 11 mars 1957 et code de la propriété
intellectuelle du 1er juillet 1992, articles L 122-4, L 122-5 et L 335-2).
(c) Leuville Objects Architectures Orientées Services - Introduction à BPMN 16-412
Architectures Orientées Services - Introduction à BPMN Version 5.1
Introduction
o Business Process Management est une approche consistant à modéliser informatiquement les processus
métiers de l'entreprise et aboutir à une meilleure vue globale de leurs intéractions afin de les optimiser et les
automatiser autant que possible.
o BPM est un moyen d’étudier, identifier, modifier et surveiller les processus d’entreprise.
o Avant BPM existait UML, mais BPM fait l'unanimité dans la gestion des processus métiers, car BPM est
orienté métier.
o Au niveau technique pour une transposition du niveau métier dans le système informatique de
l'entreprise.
Notes
Introduction
Trois niveaux
o BPMN (Business Process Model and Notation) qui définit un modèle graphique des processus,
o BPEL (Business Process Execution Language) qui définit un langage de programmation destiné à l’exécution
des processus.
Notes
Simplicité
Notes
Présentation
o BPMN (Business Process Model and Notation) est un système de notation graphique permettant de représenter
les processus métiers sous forme de modèle.
o La notation consiste en un ensemble de symboles graphiques représentant des actions, des flux ou des
comportements dans un processus
Notes
D’après https://bonitasoft.developpez.com/tutoriels/business-process-management/guide-ultime-
bpmn2/#LIV-M
A quoi ça sert ?
Notes
Historique
Standard OMG
o Cette norme a été élaborée à l'origine par la Business Process Management Initiative (BPMI) et maintenue par
l'Object Management Group (OMG), puisque les deux organisations ont fusionné en 2005.
o La première version de BPMN 1.0 est fournie par la BPMI en Mai 2004.
o En Février 2008 est délivrée la release 1.1 suivie d'une release 1.2 en Janvier 2009.
o La version 2.0 a été officialisée en 2010. Cette version 2 permet de mieux prendre en compte la complexité
des interactions entre processus au travers du concept de "chorégraphie".
o La BPMN Version 2.0.1 est publiée en Septembre 2013 suivie de la version 2.0.2 en Décembre 2013.
Notes
Métiers et SI
o La norme BPMN a été conçue pour être utilisée aussi bien par les acteurs métiers de l'entreprise que par les
acteurs du système d'information :
o Des consultants métiers pour présenter les macro process de leur client,
Notes
Objectifs
o Standardiser les systèmes de notation graphique permettant de décrire les processus de l'entreprise,
indépendamment de l'outil utilisé,
o Représenter un pont standardisé pour combler le vide entre la modélisation des procédures d'entreprise et leur
mise en place,
o Fournir une notation qui soit réellement compréhensible par tous les utilisateurs de l'entreprise,
o Découpler l'information métier de l'information technique afin de maximiser sa portabilité d'une entreprise à
une autre,
o Générer automatiquement et de manière standard le langage BPEL à exécuter par le moteur de processus.
Notes
Notes
Le diagramme de collaboration
o Permet de représenter les échanges et les interactions entre deux ou plusieurs unités d'affaires représenté sous
la forme de Couloirs et de Bassins.
Notes
Outils de modélisation
Quelques exemples
Notes
Outils de modélisation
Camunda
o Modeleur
Notes
Conclusion
o BPMN est la notation standard la plus adaptée pour modéliser les processus.
o La norme est supportée par plusieurs logiciels (pas de dépendance vers une implémentation particulière).
o La définition des règles pour la collaboration entre maîtrise d’ouvrage et maîtrise d’œuvre n’existe pas et
semble nécessaire.
o A partir de BPMN on peut générer le code BPEL correspond, mais cette opération est partielle et peu
opérationnelle.
o La plupart des outils BPMN offrent des fonctionnalités de simulation mais il n’existe pas un standard qui
définit les paramètres de simulation, cette fonction dépend de l’outil utilisé.
Notes
o QVT et ATL
(c) Leuville Objects. Tous droits de traduction, d’adaptation et de reproduction par tous procédés, réservés pour tous pays.
Toute reproduction ou représentation intégrale ou partielle, par quelque procédé que ce soit des pages publiées dans le présent ouvrage,
faite sans l’autorisation de Leuville Objects, est illicite et constitue une contrefaçon (loi du 11 mars 1957 et code de la propriété
intellectuelle du 1er juillet 1992, articles L 122-4, L 122-5 et L 335-2).
(c) Leuville Objects Architectures Orientées Services - Model-Driven Architecture 17-440
Architectures Orientées Services - Model-Driven Architecture Version 5.1
Objectifs
Constituants de base
Objectifs
MDA se propose de formaliser le processus de définition d’une architecture afin de mieux le maîtriser et de
pouvoir réutiliser.
Constituants de base
o Eléments de représentation:
Le modèle PIM est un modèle métier classique formalisé à l’aide de tous les outils UML. Cela inclut donc
au minimum un diagramme de classes métier.
Les possibilités
Les paramètres
Normalisation
Outillage indispensable.
Les possibilités
MDA prévoit une démarche classique, que l’on pourrait qualifier de démarche descendante du modèle
indépendant de la plateforme cible au modèle spécifique. Mais il est également possible de faire de la rétro-
architecture.
Sans le support d’un outil spécifique, ces démarches ne pourront être mises en oeuvre de façon efficace. Il
faut en effet accompagner le passage d’un modèle à l’autre par un support puissant des design patterns.
Les paramètres
Il est crucial à ce stade d’identifier et utiliser tous les design patterns qui permettront d’automatiser une
partie de ce processus
Exemple
Notes
Le diagramme de paquetages UML représente les différents modèles PIM et PSM ainsi que les liens de
dépendances entre ces modèles.
Notes
Comme le montre le schéma, le point névralgique de la démarche se situe autour des moyens permettant
d’automatiser le passage du modèle PIM vers différents modèles PSM.
Adoptés
o CORBA
En travaux
o EAI
o SOAP /XML
A définir
o Microsoft .NET
Adoptés
Le profil J2EE / EJB a été adopté par le Java Community Process initié par Sun Microsystems.
QVT
o QVT-Relation
Langage déclaratif
o QVT-Operationnal
Règles et expressions
impératives
o QVT-Core
Sémantique des concepts
déclaratifs
o Borland Together
o SmartQVT
o UMT-QVT
Notes
http://www.omg.org/docs/ptc/07-07-07.pdf
ATL
o Langage opensource de transformation de modèles, utilisé dans l’industrie et maintenu par OBEO, INRIA
Notes
http://www.eclipse.org/atl/
o Praxeme
(c) Leuville Objects. Tous droits de traduction, d’adaptation et de reproduction par tous procédés, réservés pour tous pays.
Toute reproduction ou représentation intégrale ou partielle, par quelque procédé que ce soit des pages publiées dans le présent ouvrage,
faite sans l’autorisation de Leuville Objects, est illicite et constitue une contrefaçon (loi du 11 mars 1957 et code de la propriété
intellectuelle du 1er juillet 1992, articles L 122-4, L 122-5 et L 335-2).
(c) Leuville Objects Architectures Orientées Services - Ingénierie Dirigée par les Modèles (IDM) dans un cadre SOA 18-458
Architectures Orientées Services - Ingénierie Dirigée par les Modèles (IDM) dans un cadre SOA Version 5.1
MDA et SOA
Notes
D’après http://www.orchestranetworks.com
(c) Leuville Objects Architectures Orientées Services - Ingénierie Dirigée par les Modèles (IDM) dans un cadre SOA 18-460
Architectures Orientées Services - Ingénierie Dirigée par les Modèles (IDM) dans un cadre SOA Version 5.1
Praxeme
o Objectifs :
o Origine : Unilog Management, Orchestra Networks, Softeam, Conix Consulting, Dreamsoft, Vistali
Caractéristiques
o Méthode ouverte
Notes
http://www.praxeme.org
(c) Leuville Objects Architectures Orientées Services - Ingénierie Dirigée par les Modèles (IDM) dans un cadre SOA 18-462
Architectures Orientées Services - Ingénierie Dirigée par les Modèles (IDM) dans un cadre SOA Version 5.1
Praxeme
Notes
D’après http://www.praxeme.org
(c) Leuville Objects Architectures Orientées Services - Ingénierie Dirigée par les Modèles (IDM) dans un cadre SOA 18-464
Architectures Orientées Services Version 5.1
Gouvernance SOA
o Centre d’Excellence
o Comite de Gouvernance
(c) Leuville Objects. Tous droits de traduction, d’adaptation et de reproduction par tous procédés, réservés pour tous pays.
Toute reproduction ou représentation intégrale ou partielle, par quelque procédé que ce soit des pages publiées dans le présent ouvrage,
faite sans l’autorisation de Leuville Objects, est illicite et constitue une contrefaçon (loi du 11 mars 1957 et code de la propriété
intellectuelle du 1er juillet 1992, articles L 122-4, L 122-5 et L 335-2).
(c) Leuville Objects Architectures Orientées Services - Gouvernance SOA 19-466
Architectures Orientées Services - Gouvernance SOA Version 5.1
Gouvernance
Moyens
o Centre d’Excellence SOA créé lors de la mise en place initiale de l’architecture SOA
Rôles
Comité de gouvernance
Directeur de Comité de Gouvernance - Gère le bon fonctionnement de tous les aspects organisa-
tionnels, procéduriers et techniques du comité
Processus de gouvernance
Activités typiques
o Adapter la gouvernance
Processus de gouvernance
Candidature de service
Processus de gouvernance
A maturité
o XML et JSON
o oAuth
o Outils
o WS-BPEL
(c) Leuville Objects. Tous droits de traduction, d’adaptation et de reproduction par tous procédés, réservés pour tous pays.
Toute reproduction ou représentation intégrale ou partielle, par quelque procédé que ce soit des pages publiées dans le présent ouvrage,
faite sans l’autorisation de Leuville Objects, est illicite et constitue une contrefaçon (loi du 11 mars 1957 et code de la propriété
intellectuelle du 1er juillet 1992, articles L 122-4, L 122-5 et L 335-2).
3
o Concepts XML
o XML Schema
(c) Leuville Objects. Tous droits de traduction, d’adaptation et de reproduction par tous procédés, réservés pour tous pays.
Toute reproduction ou représentation intégrale ou partielle, par quelque procédé que ce soit des pages publiées dans le présent ouvrage,
faite sans l’autorisation de Leuville Objects est illicite et constitue une contrefaçon (loi du 11 mars 1957 et code de la propriété
intellectuelle du 1er juillet 1992, articles L 122-4, L 122-5 et L 335-2).
(c) Leuville Objects Architectures Orientées Services - Introduction aux technologies XML 20-484
Architectures Orientées Services - Introduction aux technologies XML Version 5.1
Présentation de XML
o Les données peuvent faire référence à la structure à laquelle elles sont conformes
Le format HTML est utilisé pour formater et afficher les données qu'il contient : il est destiné à structurer,
formater et échanger des documents d'une façon la plus standard possible..
XML est utilisé pour modéliser et stocker des données. Il ne permet pas à lui seul d'afficher les données
qu'il contient.
Pourtant, XML et HTML sont tous les deux des dérivés d'une langage nommé SGML (Standard
Generalized Markup Language). La création d'XML est liée à la complexité de SGML. D'ailleurs, un fichier
XML avec sa DTD correspondante peut être traité par un processeur SGML.
Les données sont la plupart du temps stockée sous la forme de textes et la structure peut en première
approximation être assimilée à la grammaire d’un langage.
(c) Leuville Objects Architectures Orientées Services - Introduction aux technologies XML 20-486
Architectures Orientées Services - Introduction aux technologies XML Version 5.1
Applications de XML
Exemples
o Distribution d’information
o Flux métier
o Intégration d’applications
o Web Services
Notes
(c) Leuville Objects Architectures Orientées Services - Introduction aux technologies XML 20-488
Architectures Orientées Services - Introduction aux technologies XML Version 5.1
Notes
(c) Leuville Objects Architectures Orientées Services - Introduction aux technologies XML 20-490
Architectures Orientées Services - Introduction aux technologies XML Version 5.1
Notes
(c) Leuville Objects Architectures Orientées Services - Introduction aux technologies XML 20-492
Architectures Orientées Services - Introduction aux technologies XML Version 5.1
Principales
o Chaque balise d'ouverture (exemple <tag>) doit posséder une balise de fermeture (exemple </tag>). Si le tag
est vide, c'est à dire qu'il ne possède aucune données (exemple <tag></tag>), un tag abrégé peut être utilisé
(exemple correspondant : <tag/>)
o Les balises ne peuvent pas être intercalées (exemple <liste><element></liste></element> n'est pas autorisé)
o Toutes les balises du document doivent obligatoirement être contenues entre une balise d'ouverture et de
fermeture unique dans le document nommée élément racine
o Les valeurs des attributs doivent obligatoirement être encadrées avec des quotes simples ou doubles
o Les balises peuvent contenir des attributs même les balises vides
o Les données incluses entre les balises ne doivent pas contenir de caractères < et & : il faut utiliser
respectivement < ; et & ;
Notes
(c) Leuville Objects Architectures Orientées Services - Introduction aux technologies XML 20-494
Architectures Orientées Services - Introduction aux technologies XML Version 5.1
Deux possibilités
o Simple à utiliser
o XML Schema
Deux possibilités
Les professionnels chargés d'intégrer des données XML dans un système d'information considèrent
aujourd'hui que la simplicité d'expression des DTD ne correspond plus aux besoins des applications
modernes.
Parmi les langages de définition de types récemment proposés pour succéder aux DTD, XML Schéma du
W3C est le plus utilisé, mais aussi l'un des plus difficile à maîtriser.
(c) Leuville Objects Architectures Orientées Services - Introduction aux technologies XML 20-496
Architectures Orientées Services - Introduction aux technologies XML Version 5.1
XMLSchema
o Mécanisme de dérivation
o Espaces de nommage
Mais
Pour pallier les inconvénients des Document Type Définitions, les schémas ont été créés.
Ce sont de vrais fichiers XML dont le but est de valider les documents.
(c) Leuville Objects Architectures Orientées Services - Introduction aux technologies XML 20-498
Architectures Orientées Services - Introduction aux technologies XML Version 5.1
Exemple XMLSchema
Notes
(c) Leuville Objects Architectures Orientées Services - Introduction aux technologies XML 20-500
Architectures Orientées Services - Introduction aux technologies XML Version 5.1
Utilité
o Permet d’éviter les collisions de noms d’éléments avec d’autres éléments importés
o Concept analogue à celui de namespace ou de package rencontré dans certains langages de programmation
o targetNamespace
<xs:schema version="1.0" targetNamespace="http://www.leuville.com/formation"
xmlns:tns="http://www.leuville.com/formation"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
o xmlns
<formation xmlns="http://www.leuville.com/formation"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.leuville.com/formation formation.xsd">
Notes
(c) Leuville Objects Architectures Orientées Services - Introduction aux technologies XML 20-502
Architectures Orientées Services - Introduction aux technologies XML Version 5.1
Besoin
o Emplois typiques: travail sur données XML, web services, architectures SOA
Techniques
o Déclencher des traitements lors de la rencontre d’éléments particuliers : SAX ou Simple API for XML
Avantages et inconvénients
Avantages Inconvénients
DOM parcours libre de l'arbre gourmand en mémoire
possibilité de modifier la structure et le contenu de doit lire tout le document avant d'exploiter les résul-
l'arbre tats
SAX peu gourmand en ressources mémoire traite les données séquentiellement
rapide un peu plus difficile à programmer, il est souvent
assez simple à mettre en oeuvre nécessaire de sauvegarder des informations pour les
permet de ne traiter que les données utiles traiter
Techniques
Il existe plusieurs types de parseur. Les deux plus répandus sont ceux qui utilisent un arbre pour représenter
et exploiter le document et ceux qui utilisent des événements. Le parseur peut en plus permettre de valider
le document XML.
Ceux qui utilisent un arbre permettent de le parcourir pour obtenir les données et modifier le document.
Ceux qui utilisent des événements associent à des événements particuliers des méthodes pour traiter le
document.
SAX (Simple API for XML) est une API libre créée par David Megginson qui utilisent les événements
pour analyser et exploiter les documents au format XML.
Les parseurs qui produisent des objets composant une arborescence pour représenter le document XML
utilisent le modèle DOM (Document Object Model) défini par les recommandations du W3C.
(c) Leuville Objects Architectures Orientées Services - Introduction aux technologies XML 20-504
Architectures Orientées Services - Introduction aux technologies XML Version 5.1
Implémentations DOM
o Crimson
Implémentations SAX
Notes
SAX et DOM ne fournissent que des définitions : ils ne fournissent pas d'implémentation utilisable.
L'implémentation est laissée aux différents éditeurs qui fournissent un parseur compatible avec SAX et/ou
DOM. L'avantage d'utiliser l'un deux est que le code utilisé sera compatible avec les autres : le code
nécessaire à l'instanciation du parseur est cependant spécifique à chaque fournisseur.
IBM fourni gratuitement un parseur XML : xml4j. Il est téléchargeable à l'adresse suivante :
http://www.alphaworks.ibm.com/tech/xml4j
Le groupe Apache développe Xerces à partir de xml4j : il est possible de télécharger la dernière version à
l'URL http://xml.apache.org
Sun a développé un projet dénommé Project X. Ce projet a été repris par le groupe Apache sous le nom de
Crimson.
Ces trois projets apportent pour la plupart les mêmes fonctionnalitées : ils se distinguent sur des points
mineurs : performance, rapidité, facilité d'utilisation etc. ... Ces fonctionnalités évoluent très vite avec les
versions de ces parseurs qui se succèdent très rapidement.
Pour les utiliser, il suffit de dézipper le fichier et d'ajouter les fichiers .jar dans la variable définissant le
CLASSPATH.
Il existe plusieurs autres parseurs que l'on peut télécharger sur le web.
(c) Leuville Objects Architectures Orientées Services - Introduction aux technologies XML 20-506
Architectures Orientées Services - Introduction aux technologies XML Version 5.1
Principes DOM
Spécification W3C
o Permettre la manipulation du
document et notamment sa
modification
o Implémentation Java
regroupée dans le package
org.w3c.dom
Spécification W3C
(c) Leuville Objects Architectures Orientées Services - Introduction aux technologies XML 20-508
Architectures Orientées Services - Introduction aux technologies XML Version 5.1
Principes SAX
www.megginson.com/SAX/index.html
Programmation événementielle
Deux versions
o SAX 1
o SAX 2
o Evolutions d’API
Notes
(c) Leuville Objects Architectures Orientées Services - Introduction aux technologies XML 20-510
Architectures Orientées Services - Introduction aux technologies XML Version 5.1
Technologies XML
o ...
Notes
(c) Leuville Objects Architectures Orientées Services - Introduction aux technologies XML 20-512
Architectures Orientées Services - Introduction aux technologies XML Version 5.1
Deux constituants
o Sélection de noeuds
o Application de règles de gabarits (template rules) pour transformer un arbre source en arbre destination
o Processeurs prêts à l’emploi, comme FOP pour produire des documents PDF
Deux constituants
Un document XML peut être représenté comme une structure arborescente. Ainsi XSLT permet de
transformer les documents XML à l'aide de feuilles de style contenant des règles appelées template rules
(ou règles de gabarit en français).
Le processeur XSLT (composant logiciel chargé de la transformation) crée une structure logique
arborescente (on parle d'arbre source) à partir du document XML et lui fait subir des transformations selon
les template rules contenues dans la feuille XSL pour produire un arbre résultat représentant, par exemple,
la structure d'un document HTML. Les composants de l'arbre résultat sont appelés objets de flux.
Chaque template rule définit des traitements à effectuer sur un élément (noeud ou feuille) de l'arbre source.
On appelle "patterns" (en français motifs, parfois "éléments cibles") les éléments de l'arbre source.
L'arbre source peut être entièrement remodelé et filtré ainsi qu'ajouter du contenu à l'arbre résultat, si bien
que l'arbre résultat peut être radicalement différent de l'arbre source.
le langage de formatage des données (XSL/FO), c'est-à-dire un langage permettant de définir la mise en
page (affichage de texte ou de graphiques) de ce qui a été créé par XSLT.
Une fois l'arbre source créé, XSL/FO permet de formater le résultat, c'est-à-dire d'interpréter l'arbre résultat,
ou plus exactement les objets de flux le composant en leur appliquant des objets de mise en forme afin d'en
faire une représentation visuelle (papier, écran, ...)
(c) Leuville Objects Architectures Orientées Services - Introduction aux technologies XML 20-514
Architectures Orientées Services - Introduction aux technologies XML Version 5.1
Exemple XSLT
Après les balises de départ d'un fichier XSL, on aborde un tableau tout à fait classique en Html.
Pour chaque élément de type "BIB/LIVRE", on remplit la cellule correspondante au titre par la balise
xsl:value-of avec l'attribut select="TITRE" qui indique comme chemin d'accès la balise racine BIB, la
balise LIVRE et la balise TITRE. Et bien entendu de même pour les balises AUTEUR et EDITEUR.
(c) Leuville Objects Architectures Orientées Services - Introduction aux technologies XML 20-516
Architectures Orientées Services - Introduction aux technologies XML Version 5.1
Exemple XSLT
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="bib.xsl"?>
<BIB>
<LIVRE>
<TITRE>titre livre 1</TITRE>
<AUTEUR>auteur 1</AUTEUR>
<EDITEUR>editeur 1</EDITEUR>
</LIVRE>
<LIVRE>
<TITRE>titre livre 2</TITRE>
<AUTEUR>auteur 2</AUTEUR>
<EDITEUR>editeur 2</EDITEUR>
</LIVRE>
<LIVRE>
<TITRE>titre livre 3</TITRE>
<AUTEUR>auteur 3</AUTEUR>
<EDITEUR>editeur 3</EDITEUR>
</LIVRE>
</BIB>
(c) Leuville Objects Architectures Orientées Services - Introduction aux technologies XML 20-518
Architectures Orientées Services Version 5.1
JavaScript Object Notation
o Présentation de JSON
o Formalisme
(c) Leuville Objects. Tous droits de traduction, d’adaptation et de reproduction par tous procédés, réservés pour tous pays.
Toute reproduction ou représentation intégrale ou partielle, par quelque procédé que ce soit des pages publiées dans le présent ouvrage,
faite sans l’autorisation de Leuville Objects est illicite et constitue une contrefaçon (loi du 11 mars 1957 et code de la propriété
intellectuelle du 1er juillet 1992, articles L 122-4, L 122-5 et L 335-2).
(c) Leuville Objects Architectures Orientées Services - JavaScript Object Notation 21-520
Architectures Orientées Services - JavaScript Object Notation Version 5.1
JSON
Présentation
o Format de données textuel, générique, dérivé de la notation des objets du langage ECMAScript.
http://www.ietf.org/rfc/rfc4627.txt
Notes
(c) Leuville Objects Architectures Orientées Services - JavaScript Object Notation 21-522
Architectures Orientées Services - JavaScript Object Notation Version 5.1
o des objets ;
o des tableaux ;
o des valeurs génériques de type tableau, objet, booléen, nombre, chaîne ou null.
Notes
(c) Leuville Objects Architectures Orientées Services - JavaScript Object Notation 21-524
Architectures Orientées Services - JavaScript Object Notation Version 5.1
Exemples
{"menu": {
"id": "file",
"value": "File",
"popup": {
"menuitem": [
{"value": "New", "onclick": "CreateNewDoc()"},
{"value": "Open", "onclick": "OpenDoc()"},
{"value": "Close", "onclick": "CloseDoc()"}
]
}
}}
{
"product": {
"name": "Widget",
"company": "ACME, Inc",
"partNumber": "7402-129",
"prices": [
{ "minQty": 1, "price": 12.49 },
{ "minQty": 10, "price": 9.99 },
{ "minQty": 50, "price": 7.99 }
]
}
}
Notes
(c) Leuville Objects Architectures Orientées Services - JavaScript Object Notation 21-526
Architectures Orientées Services - JavaScript Object Notation Version 5.1
Valeurs possibles
Notes
(c) Leuville Objects Architectures Orientées Services - JavaScript Object Notation 21-528
Architectures Orientées Services - JavaScript Object Notation Version 5.1
Notes
(c) Leuville Objects Architectures Orientées Services - JavaScript Object Notation 21-530
Architectures Orientées Services - JavaScript Object Notation Version 5.1
Notes
(c) Leuville Objects Architectures Orientées Services - JavaScript Object Notation 21-532
Architectures Orientées Services - JavaScript Object Notation Version 5.1
Avantages de JSON
Format léger
o Facile à apprendre.
Notes
(c) Leuville Objects Architectures Orientées Services - JavaScript Object Notation 21-534
Architectures Orientées Services - JavaScript Object Notation Version 5.1
Utilisation de JSON
o Langage de transport de données utilisé par AJAX et les Services Web, transport effectué par HTTP
o Un document JSON représente un object JavaScript, son interprétation est donc simplifiée en JavaScript.
o En JavaScript, il est très simple d’évaluer une expression JSON pour la transformer en objet natif
o Attention, cette méthode évalue et exécute n’importe quel code JavaScript, y compris du code indésirable.
o Ce parseur reconnaît uniquement les textes au format JSON et rejette toute forme de script.
Notes
(c) Leuville Objects Architectures Orientées Services - JavaScript Object Notation 21-536
Architectures Orientées Services Version 5.1
Présentation oAuth
o Historique
(c) Leuville Objects. Tous droits de traduction, d’adaptation et de reproduction par tous procédés, réservés pour tous pays.
Toute reproduction ou représentation intégrale ou partielle, par quelque procédé que ce soit des pages publiées dans le présent ouvrage,
faite sans l’autorisation de Leuville Objects, est illicite et constitue une contrefaçon (loi du 11 mars 1957 et code de la propriété
intellectuelle du 1er juillet 1992, articles L 122-4, L 122-5 et L 335-2).
(c) Leuville Objects Architectures Orientées Services - Présentation oAuth 22-538
Architectures Orientées Services - Présentation oAuth Version 5.1
http://oauth.net/
o Permet d’interagir avec des données protégées tout en protégeant les Credentials des utilisateurs
o Permet à une application ou site web "Service consumer" d’accéder aux ressources protégées d’un service web
"Service provider" via une API
Notes
Historique
oAuth 1
oAuth 2
o http://tools.ietf.org/html/rfc6749
o Mai 2010
o Controversée
o le "leader" des travaux de spécification s’est retiré du projet et a demandé que son nom n’y figure plus
Notes
Fonctionnement général
Scénario typique
o Une fois cet access token reçu par l'application, il peut être envoyé à Facebook pour accéder aux informations détenues
par Facebook et partagées avec Client App.
Notes
Fonctionnement général
Vocabulaire
o Client id et Client password : informations fournies par l'application tierce d'authentification au moment de
l'enregistrement préalable de l'application cliente
o Redirect URI : URI fournie par l'application cliente au moment de l'enregistrement de celle-ci avec
l'application d'authentification
o Authentication code (code authentification) : code fourni par l'application d'authentification suite à
l'identification.
o Access Token : jeton échangé par les applications permettant l'accès aux ressources. Durée de vie limitée.
Notes
Rôles
o Resource Owner : Personne ou application qui détient l'information (ressources) qui doit être partagée. Par
exemple, l'utilisateur de Facebook.
o Client Application : Application demandant l'accès aux ressources stockées dans le Resource Server.
o Resource Server : Serveur qui héberge les ressources. Facebook est un resource server (en tout cas, en dispose
d'un).
o Authorization Server: Serveur qui donne l'autorisation d'accès aux ressources à l'application cliente.
L'Authorization Server et le Resource Server peuvent être le même serveur.
Notes
Enregistrement préalable
o Ce jeton temporaire est converti par le "tiers" en access token si l’utilisateur accepte l’accès à ses ressources
o Avec cet access token, le client peut utiliser l’API du tiers au nom de l’utilisateur, tant qu’il est valable
Limitations
o Pas de mécanisme granulaire d’autorisation permettant de décrire précisément les opérations concernées
o X et Y se sont entendus préalablement sur la nature des accès faits par X sur Y
o Y vous présente (éventuellement) un descriptif succinct de ce qu’il fera sur X avec votre autorisation
Notes
Exemple de processus
Selon Yahoo
o Entente préalable
o Demande d’accès à
l’utilisateur
Notes
Exemple de processus
Selon Yahoo
o Eventuellement
"rafraichissement" de ce token
en cas d’expiration
Notes
Authorization grant
o L'authorization grant est fourni par le resource owner en collaboration avec l'Authorization Server (suite à la
question " autorisez-vous l'accès ? " et l'identification)
o Les spécifications OAuth 2 en définissent 4 à utiliser en fonction du type d'application cliente et de la nature
de l’authentification
Notes
Authorization Code
Fonctionnement
Notes
Exemple
https://oauth2server.com/auth?response_type=code
&client_id=CLIENT_ID&redirect_uri=REDIRECT_URI&scope=photos
Une application souhaite se connecter à votre compte et obtenir l’accès à vos informations de profil et à vos
photos. Autorisez-vous cet accès ? <OUI> <NON>
Notes
https://oauth2client.com/cb?code=AUTH_CODE
o Le client n'est pas authentifié ou non reconnu (erreur dans l'uri de redirection, client id erroné….)
o Contenu
o error_uri: Optionnel. URI d'une page web donnant des informations sur l'erreur produite.
Notes
Notes
Implicit
Fonctionnement
Notes
Notes
En cas d’erreur d’authentification, la réponse d’erreur est au même format que dans le cas de l’authorization
code.
o L'application cliente collecte le login / password puis les fournit à l'authorization server pour obtenir l'access
token.
Request
Response
{
"access_token" : "...",
"token_type" : "...",
"expires_in" : "...",
"refresh_token" : "...",
}
Notes
Client credentials
o L'application cliente a besoin d'accéder à des informations qui ne sont pas spécifiques au resource owner
(l'utilisateur).
Request
Response
{
"access_token" : "...",
"token_type" : "...",
"expires_in" : "...",
}
Notes
o BEA
o Oracle
o IBM
o Microsoft
o TIBCO
(c) Leuville Objects. Tous droits de traduction, d’adaptation et de reproduction par tous procédés, réservés pour tous pays.
Toute reproduction ou représentation intégrale ou partielle, par quelque procédé que ce soit des pages publiées dans le présent ouvrage,
faite sans l’autorisation de Leuville Objects, est illicite et constitue une contrefaçon (loi du 11 mars 1957 et code de la propriété
intellectuelle du 1er juillet 1992, articles L 122-4, L 122-5 et L 335-2).
(c) Leuville Objects Architectures Orientées Services - Offre SOA 23-574
Architectures Orientées Services - Offre SOA Version 5.1
Bus ESB
Commerciaux
o SpiritWave de spiritsoft
o Artix de Iona
o Information Builders
o TIBCO BusinessWorks™
Notes
Bus ESB
Produits Open-source
o Mule
o JBossESB de JBoss
o Celtix de Iona dans le cadre d'ObjectWeb qui implémente une pile conforme au standard JAX-WS
o Open ESB
Notes
Gamme AquaLogic
o Un ensemble de produits
Notes
Notes
http://www.bea.com/framework.jsp?CNT=index.htm&FP=/content/solutions/soa/
Notes
Notes
Notes
http://www-306.ibm.com/software/fr/soa/offres/
Notes
D’après http://www.ibm.com/developerworks/webservices/library/ws-bdd/
Notes
Produits
o Visual Studio
o BizTalk Server
o Windows Vista
o Office 2007
Notes
http://www.microsoft.com/france/biztalk/utilisez/livres-blancs/soa/livre-blanc.mspx
o Couplage lâche
Notes
Service
o Host System
o TIBCO
BusinessWorks
o Moteur BPM
Notes
TIBCO BusinessWorks
Notes
(c) Leuville Objects. Tous droits de traduction, d’adaptation et de reproduction par tous procédés, réservés pour tous pays.
Toute reproduction ou représentation intégrale ou partielle, par quelque procédé que ce soit des pages publiées dans le présent ouvrage,
faite sans l’autorisation de Leuville Objects, est illicite et constitue une contrefaçon (loi du 11 mars 1957 et code de la propriété
intellectuelle du 1er juillet 1992, articles L 122-4, L 122-5 et L 335-2).
(c) Leuville Objects Architectures Orientées Services - Les principaux outils Open Source 24-602
Architectures Orientées Services - Les principaux outils Open Source Version 5.1
Apache Active MQ
o http://activemq.apache.org
Apache Qpid
o http://qpid.apache.org
Notes
(c) Leuville Objects Architectures Orientées Services - Les principaux outils Open Source 24-604
Architectures Orientées Services - Les principaux outils Open Source Version 5.1
o http://fusesource.com/products/enterprise-activemq/
o Basé sur Apache Active MQ, mais propose en plus Camel pour le routage et Fuse Integration Designer pour
la mise en oeuvre des EIP.
OpenJMS
o http://openjms.sourceforge.net/
JBoss Messaging
o http://www.jboss.org/jbossmessaging/
Notes
(c) Leuville Objects Architectures Orientées Services - Les principaux outils Open Source 24-606
Architectures Orientées Services - Les principaux outils Open Source Version 5.1
JORAM
o http://joram.objectweb.org/
o https://mq.dev.java.net/
Notes
(c) Leuville Objects Architectures Orientées Services - Les principaux outils Open Source 24-608
Architectures Orientées Services - Les principaux outils Open Source Version 5.1
Les routeurs
Apache Camel
o http://camel.apache.org/
o Configuration par DSL (Domain Specific Language), par Spring (XML) ou via Scala DSL
Notes
(c) Leuville Objects Architectures Orientées Services - Les principaux outils Open Source 24-610
Architectures Orientées Services - Les principaux outils Open Source Version 5.1
Apache CXF
o http://cxf.apache.org/
Apache Axis 2
o http://ws.apache.org/axis2/
Implémentation de référence
o https://jax-ws.dev.java.net/
Notes
(c) Leuville Objects Architectures Orientées Services - Les principaux outils Open Source 24-612
Architectures Orientées Services - Les principaux outils Open Source Version 5.1
Active BPEL
o http://www.activevos.com/community-open-source.php
Apache ODE
o http://ode.apache.org/
PXE
o http://sourceforge.net/projects/pxe
Notes
(c) Leuville Objects Architectures Orientées Services - Les principaux outils Open Source 24-614
Architectures Orientées Services - Les principaux outils Open Source Version 5.1
Les ESB
Apache Servicemix
o http://servicemix.apache.org/home.html
Notes
(c) Leuville Objects Architectures Orientées Services - Les principaux outils Open Source 24-616
Architectures Orientées Services - Les principaux outils Open Source Version 5.1
Les ESB
Mule
o http://www.mulesource.org/display/MULE/Home
OpenESB
o https://open-esb.dev.java.net/
Notes
(c) Leuville Objects Architectures Orientées Services - Les principaux outils Open Source 24-618
Architectures Orientées Services - Les principaux outils Open Source Version 5.1
Les ESB
Celtix
o http://celtix.objectweb.org/
PEtALS
o http://petals.ow2.org/
Notes
(c) Leuville Objects Architectures Orientées Services - Les principaux outils Open Source 24-620
Architectures Orientées Services - Les principaux outils Open Source Version 5.1
Les bundles
Fuse
o http://fusesource.com/
Notes
(c) Leuville Objects Architectures Orientées Services - Les principaux outils Open Source 24-622
Architectures Orientées Services - Les principaux outils Open Source Version 5.1
o http://www.eclipse.org/stp/
NetBeans
o http://www.netbeans.org/kb/trails/soa.html
Notes
(c) Leuville Objects Architectures Orientées Services - Les principaux outils Open Source 24-624
Architectures Orientées Services Version 5.1
WS-BPEL / Business Process Execution Language
o Historique
o Concepts de base
(c) Leuville Objects. Tous droits de traduction, d’adaptation et de reproduction par tous procédés, réservés pour tous pays.
Toute reproduction ou représentation intégrale ou partielle, par quelque procédé que ce soit des pages publiées dans le présent ouvrage,
faite sans l’autorisation de Leuville Objects est illicite et constitue une contrefaçon (loi du 11 mars 1957 et code de la propriété
intellectuelle du 1er juillet 1992, articles L 122-4, L 122-5 et L 335-2).
(c) Leuville Objects Architectures Orientées Services - WS-BPEL / Business Process Execution Language 25-626
Architectures Orientées Services - WS-BPEL / Business Process Execution Language Version 5.1
Un besoin : l’intégration
«application» «application» «application»
o Concept déjà présent
.NET dans d’autres techniques : EAI, middleware, ... J2EE Legacy
ORCHESTRATION
Caractéristiques d’une
«service»orchestration «webservice» «base de données»
Partenaire Fournisseur SGBD
o Service Web de haut niveau résultant de l’assemblage d’autres Services Web
Notes
(c) Leuville Objects Architectures Orientées Services - WS-BPEL / Business Process Execution Language 25-628
Architectures Orientées Services - WS-BPEL / Business Process Execution Language Version 5.1
Historique BPEL
o Langage inspiré de
o Microsoft XLANG
Soumission à l’OASIS
WS-BPEL 2.0
Notes
(c) Leuville Objects Architectures Orientées Services - WS-BPEL / Business Process Execution Language 25-630
Architectures Orientées Services - WS-BPEL / Business Process Execution Language Version 5.1
WS-BPEL
o permet d’écrire des programmes qui sont des services web, et qui consomment des services web
Eléments principaux
o <process> : élément racine d’une définition WS-BPEL d’un processus métier, contient les éléments suivants
o <partnerLink> : permet de décrire les échanges entre deux partenaires = deux services web
o <variables> : permet de définir des moyens de stocker des informations d’état relatives à la logique métier
o <receive> et <reply>
o <assign>
Notes
(c) Leuville Objects Architectures Orientées Services - WS-BPEL / Business Process Execution Language 25-632
Architectures Orientées Services - WS-BPEL / Business Process Execution Language Version 5.1
<process>
<process name="TimesheetSubmissionProcess"
targetNamespace="http://www.chezmoi.fr/process/imputation/"
xmlns="http://shemas.xmlsoap.org/ws/2003/03/business-process/"
xmlns:bpl="http://www.chezmoi.fr/process/imputation/"
xmlns:emp="http://www.chezmoi.fr/process/employe/"
...
xmlns:inv="http://www.chezmoi.fr/process/facturation/">
<partnerLinks>
</partnerLinks>
<variables
</variables>
<sequences>
</sequences>
</process>
o <variables> : permettent de stocker des informations relatives aux traitements exécutés au sein du processus
Notes
(c) Leuville Objects Architectures Orientées Services - WS-BPEL / Business Process Execution Language 25-634
Architectures Orientées Services - WS-BPEL / Business Process Execution Language Version 5.1
<partnerLinks>
o Permet de décrire toutes les relations entre le processus BPEL et les services participants
<partnerLink
o myRole est utilisé pour indiquer que le service décrit est client du processus BPEL
o partnerRole est utilisé lorsque le service décrit est appelé par le processus BPEL
<partnerLinks>
</partnerLinks>
Notes
(c) Leuville Objects Architectures Orientées Services - WS-BPEL / Business Process Execution Language 25-636
Architectures Orientées Services - WS-BPEL / Business Process Execution Language Version 5.1
<partnerLinkType>
<definitions name="Employee"
targetNamespace="http://www.chezmoi.fr/tls/employee/wsdl/"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:plnk="http://schemas.xmlsoap.org/ws/2003/05/partner-link/">
...
<plnk:partnerLinkType name="EmployeeType"
xmlns="http://schemas.xmlsoap.org/ws/2003/05/partner-link/">
<plnk:role name="EmployeeServiceProvider">
<portType name="emp:EmployeeInterface"/>
</plnk:role>
</plnk:partnerLinkType>
...
</definitions>
Notes
(c) Leuville Objects Architectures Orientées Services - WS-BPEL / Business Process Execution Language 25-638
Architectures Orientées Services - WS-BPEL / Business Process Execution Language Version 5.1
<variables>
<variables>
...
<variable name="ClientSubmission" messageType="bpl:receiveSubmitMessage"/>
<variable name="EmployeeHoursRequest" messageType="emp:getWeeklyHoursRequestMessage"/>
...
</variables>
messageType
Notes
(c) Leuville Objects Architectures Orientées Services - WS-BPEL / Business Process Execution Language 25-640
Architectures Orientées Services - WS-BPEL / Business Process Execution Language Version 5.1
<variables>
Fonctions associées
o getVariableProperty
o getVariableData
Notes
(c) Leuville Objects Architectures Orientées Services - WS-BPEL / Business Process Execution Language 25-642
Architectures Orientées Services - WS-BPEL / Business Process Execution Language Version 5.1
<sequences>
<sequence>
o Possibilités <sequence>
o receive : permet de définir les modalités de réception <receive> </receive>
d’informations envoyées par un service client
<assign> </assign>
o assign : affectation de variable
<invoke> </invoke>
o invoke : appel d’un service participant
<reply> </reply>
o reply : permet de définir le contenu d’une réponse à fournir à un
</sequence>
service appelant
Notes
(c) Leuville Objects Architectures Orientées Services - WS-BPEL / Business Process Execution Language 25-644
Architectures Orientées Services - WS-BPEL / Business Process Execution Language Version 5.1
<assign>
<variables>
<!-- input of this process -->
<variable name="input"
messageType="tns:initiateLoanFlowSoapRequest"/>
<variable name="crInput"
messageType="crs:processCreditRatingServiceSoapRequest"/>
...
</variables
<assign>
<copy>
<from variable="input" part="parameters" query="//SSN"/>
<to variable="crInput" part="parameters"
query="/processCreditRatingService/ssn"/>
</copy>
</assign>
Notes
(c) Leuville Objects Architectures Orientées Services - WS-BPEL / Business Process Execution Language 25-646
Architectures Orientées Services - WS-BPEL / Business Process Execution Language Version 5.1
<invoke>
<invoke name="invokeCR"
partnerLink="creditRatingService"
portType="crs:CreditRatingService"
operation="process"
inputVariable="crInput"
outputVariable="crOutput"/>
<assign>
<copy>
<from variable="crOutput" part="parameters" query="//result"/>
<to variable="input" part="parameters"
query="/initiateLoanFlow/xmlLoanApp/CreditRating"/>
</copy>
</assign>
Notes
(c) Leuville Objects Architectures Orientées Services - WS-BPEL / Business Process Execution Language 25-648
Architectures Orientées Services - WS-BPEL / Business Process Execution Language Version 5.1
<receive>
<sequence>
</sequence>
Notes
(c) Leuville Objects Architectures Orientées Services - WS-BPEL / Business Process Execution Language 25-650
Architectures Orientées Services - WS-BPEL / Business Process Execution Language Version 5.1
<switch>
<switch>
<!-- comparaison de deux offres -->
<case condition="bpws:getVariableData('loanOffer1','parameters','result/APR') >
bpws:getVariableData('loanOffer2','parameters','result/APR') ">
<assign>
<copy>
<from variable="loanOffer2" part="parameters" query="result"/>
<to variable="selectedLoanOffer" part="parameters"
query="/onLoanFlowResult/result"/>
</copy>
</assign>
</case>
<assign>
<copy>
<from variable="loanOffer1" part="parameters" query="result"/>
<to variable="selectedLoanOffer" part="parameters"
query="/onLoanFlowResult/result"/>
</copy>
</assign>
</otherwise>
</switch>
Notes
A noter qu’une proposition liée à BPEL 2.0 suggère de remplacer <switch> <case> <otherwise> par <if>
<then> <elseif>.
(c) Leuville Objects Architectures Orientées Services - WS-BPEL / Business Process Execution Language 25-652