Académique Documents
Professionnel Documents
Culture Documents
Résumé SOA
CHAPITRES 1-2-3
Chapitre 1 : Introduction
§ Technologies
§ Fonctionnement :
§ Approches de SOA
• Bottom-Up : Son principe est de commencer par un petit groupe et on ajoute jusqu’à on obtient une grande
entreprise.
• Top-down : c’est l’adverse de Bottom-Up. Top-down est la décomposition d’un système ou problème jusqu’à
l’obtient d’un petit service de base.
Chapitre 2 : Les Services
Un service :
- comportement défini par contrat
- réalisé et fourni par tout composant
- utilisé par tout composant sur la base unique du contrat.
§ Contrat Standardisé :
définit un accord entre le fournisseur et le consommateur :
• contrat syntaxique :
o propose une représentation technique du service
o constitue le contrat d’utilisation du service
o présente le nom du traitement, ses paramètres d’entrée et de sortie et les contraintes structurelles
qui s’y appliquent.
o Ensemble de schéma XML (XSD)
• contrat sémantique :
o une description informelle du traitement
o précise les règles et contraintes d’utilisation du service (Les exceptions; les pré- conditions et post-
conditions techniques ou métiers, policies : sécurité/encodage/langue…)
o Ensemble de schéma XML (XSD)
• contrat de niveau de service (QoS et SLA)
o spécifie par exemple le temps de réponse maximum attendu QoS : Quality of service
o les plages horaires d’accessibilité SLA : Service Level Agreement
o le temps de reprise après interruption
XML : Extensible Markup Language
Standardisation du contrat :
utilisation d’un formalisme commun :
XSD : XML Schema Definition
o moyen de construire un modèle cohérent et donc facile à comprendre et à partager
o faciliter la communication
o facilite la centralisation des éléments constituant les contrats
èRéutilisabilité
§ Couplage lâche
• Le couplage technique : impose au consommateur de connaître le protocole d’échange
du fournisseur
• Le couplage fonctionnel : impose au client de connaître le format d’échange du
fournisseur
Couplages inévitables :
1. La logique d’un service est directement dépendante de son implémentation
2. la logique d’un service est fortement liée aux technologies sur lesquelles son implémentation s’appuie
3. la logique d’un service est également dépendante des services qui le composent
4. le contrat de service ainsi que sa logique peuvent être couplés aux processus qui les utilisent
§ Abstraction :
- fournir les services du SI sur un modèle boîte noire
- seules les informations fournies au consommateur sont celles contenues dans son contrat
- cette restriction d’accès aux informations du service ne doit pas violer le principe de la prédictibilité du
service
• Prédictibilité du service : le comportement du service et la réponse qu’il donne suite à une
requête ne doivent pas varier è le respect du contrat du service
§ Réutilisabilité :
-la capacité du service à répondre aux besoins de plusieurs types de consommateurs
les principaux freins qui peuvent influencer mal sur le degré de réutilisation de service sont :
1. La centralisation et la standardisation des ressources :
Centraliser les contrats de service assure un accès exclusif aux services via le contrat,
simplifiant ainsi l'inventaire des services pour une réutilisation maximale au sein de
l'entreprise.
2. La démarche suivie dans la conception de service :
•Le processus de conception « Bottom-up » :
Un service peut émerger soit par une approche « Push » du fournisseur, soit par une
approche « Pull » du consommateur. Selon l'initiateur (fournisseur ou client), le
résultat peut être un service générique (Push) visant à satisfaire tous les partenaires
(risque de manquer de valeur métier) ou un service répondant spécifiquement aux
besoins d'un client sans considération de réutilisation, souvent dicté par des
impératifs de délai imposés par le client.
• Un processus de conception « Top-down » :
Le service découle d'une analyse approfondie et systémique du système
d'information ou d'un bloc spécifique. Bien qu'assurant une cohérence globale des
services, cette approche représente un défi complexe dont les avantages ne sont pas
garantis.
Þ Le choix de la démarche dépond du contexte et l’offre de services existants.
3. La granularité de service :
- le nombre de fonctions recouvertes par celui-ci
- une mauvaise granularité du service va limiter son réutilisation (mauvaise granularité :
trop ou trop peu de fonctionnalités)
§ Autonomie
- le service n’a pas besoin à d’autres services pour accomplir sa tâche
- Réduire l’accès partagé aux ressources d’un service et augmenter le niveau d’isolation physique des
services sont deux leviers permettant d’augmenter cette capacité.
• Autonomie de niveau de service
• Autonomie pure
§ Sans état (Stateless)
la gestion d’états (d’informations de contexte) au sein d’un service pose des problèmes :
• De compréhension et de maintenabilité : augmenter la complexité de l’implémentation(rendre
difficile sa lecture, sa documentation, sa testabilité )
• De réutilisation : suite à la complexité de lisibilité
• De performances :la gestion d’état est consommatrice de ressources systèmes (stockage)
Þ donc conception et implémentation de services sans état. La responsabilité de la gestion d’états sera
alors déléguée aux utilisateurs (consommateurs) des services
§ Découvrabilité :
Un service, accompagné de métadonnées de communication, nécessite une découverte humaine en
l'absence de découvrabilité en temps réel. Un référentiel de services centralisé stocke les
métadonnées essentielles pour la recherche et la récupération des éléments associés aux services par
la mise en œuvre d’un repository de services.
§ Composabilité :
L’objectif est ici de déterminer la « bonne » granularité de services afin de décomposer la solution à
un problème métier de haut niveau en un ensemble de « plus petites unités réutilisables » de
traitement : les services
de vue technique (runtime), un service ne sera composable que s’il est autonome et stateless (c’est-à-
dire réutilisable).
Les applications des services Web :
• B2C (Business to Consumer) : Qualifie une application, un site Internet destiné au grand public.
• B2B (Business to Business) : Qualifie une application, un site Internet destiné au commerce de professionnel
à professionnel.
Exemples :
Google+ : B2B et B2C // Twitter , Viadeo et LinkedIn ,WordPress : B2B //. Facebook et Myspace : B2C
2. La Cible :
o représentée par une URL absolue ou relative
o Le serveur est chargé de traduire en une réalité physique exploitable (un fichier physique, un
exécutable, un répertoire).
o Des préférences convenues entre le serveur et le client pour améliorer le service rendu, sont :
• Le choix de la langue la plus appropriée.
• Le choix d'un encodage acceptable du côté du client.
• Le choix d'une version
3. Un corps de requête :
• Le client pousse un document local vers le serveur.
4. Détermination de la longueur du corps d'entité :
o Toute requête portant un contenu d'une certaine longueur doit informer le
serveur de cette longueur. On utilise le champ : Content-Length
Construction De La Réponse :
Le schéma de réponse est symétrique à celui de la requête, à la différence près que le corps d'entité est le plus
souvent non vide.
• Une requête mono-entité, dans le cas général se construit ainsi :
1. Framework de messagerie :
la manière avec laquelle les messages sont manipulés
a. Nœud SOAP(Nodes)
o l'infrastructure technique qui alimente les différents scénarios de communication entre
services
o le processeur logique permettant de recevoir, transmettre, et exécuter un ensemble
d'opérations sur les messages SOAP
o identifié par un URI
o peut être classifié en SOAP server, SOAP listener ou bien SOAP router selon son rôle dans
la communication.
b. Différents rôles joués par un nœud
o Expéditeur initial (Demandeur de service),(Initial Sender) ou (Service Requestor).
o Récepteur Final (Fournisseur de service),(Ultimate Receiver) ou (Service Provider).
o Nœud intermédiaire (Intermediary)
2. Encodage et sérialisation standard pour les objets:
• SOAP impose une spécification d'encodage/sérialisation standard
• doit être appliquée sur les données du message
• Cette tâche est assurée par le runtime SOAP implanté des deux côtés (client, fournisseur) avec le RPC
3. Invocation de Service d'objets distants via SOAP RPC :
- SOAP permet d'invoquer un objet distant en communiquant les informations nécessaires à l'appel: nom de la
méthode, et sa signature numérique (ses arguments) dans un message au format XML.
- La réponse à la requête est aussi renvoyée encapsulée dans un message au format XML.
- Les différentes étapes d'invocation des objets distants sont:
1. Le programme client SOAP crée le document XML contenant les informations nécessaires à
l'invocation d'un objet distant, et le transmet au protocole HTTP (requête POST).
2. Le message est transmis au serveur via une connexion HTTP.
3. Le serveur reçoit le message et fait appel à l'objet concerné.
4. L'objet effectue le traitement demandé et renvoie les résultats au serveur SOAP.
5. Le serveur SOAP encapsule les résultats et les envoie dans un document XML au client via le protocole
HTTP.
6. Le client SOAP décode le message et envoie les résultats au demandeur initial.
4. Messages SOAP :
• Le framework de messagerie SOAP requiert que les messages SOAP soient composés d'une
enveloppe (Envelope) contenant :
• Un entête (Header) :véhiculer les métadonnées du message : Optionnelle
• un corps (Body) : contient les données applicatives destinées au récepteur final : partie
principale
• tous les fichiers attachés en pièces jointes doivent être référencés par des URL dans le message
principal.
5. Acheminement des messages :
A l'arrivée d'un message chez un nœud SOAP :
1. Vérifier la structure du message: enveloppe, entête, et corps du message.
2. Déterminer les entrées d'entêtes destinées à lui-même, et l'ensemble des rôles à en exécuter.
3. Sélectionner parmi ces entrées celles qui sont mandataires.
4. Si une de ces entrées n'est pas comprise ou bien qu'il n'a pas la capacité d'en traiter, il envoie un message
d'erreur à l'expéditeur initial.
5. Traiter toutes les entrées mandataires, ainsi que celles qui sont optionnelles et dont il a la capacité d'en
traiter.
6. Traiter le corps du message s'il s'agit du récepteur final.
7. Retransmettre le message au nœud suivant s'il s'agit d'un nœud intermédiaire.
a) Traitement de l'entête:
Une entrée entête SOAP peut contenir un attribut d'information appelé "role", qui sert à déterminer quel
nœud doit exécuter ce rôle.
b) Compréhension des entrées d'entête:
o L'utilisation de l'attribut mustUnderstand = "true" permet de rendre la compréhension et le
traitement d'une entrée par un nœud SOAP spécifique obligatoire
o si le nœud concerné n'a pas compris ou bien n'est pas capable de traiter cette entrée,
l'acheminement du message est arrêté et un message d'erreur est envoyé à l'expéditeur initial.
c) Réacheminement des messages par les nœuds intermédiaires:
o Un nœud SOAP intermédiaire doit obligatoirement retransmettre le message reçu au nœud suivant ,
il doit:
o Supprimer toutes les entrées entête déjà traitées ainsi que celles ignorées et dont elles ne
contiennent pas l'attribut "relay = true ".
o Garder toutes les entrées non traitées qui contiennent l'attribut "relay = true", ainsi que toute entrée
destinée aux autres nœuds.
o Ne prendre un attribut relay en considération que dans le cas où mustUnderstand est absent ou bien
égal à "false".
6. Nœud intermédiaire actif :
- En plus du traitement effectué par des intermédiaires de réacheminement, les intermédiaires actifs
entreprennent du traitement supplémentaire : des services de sécurité, des services d'annotation et des
services de manipulation de contenu.
7. Règles d'encodage:
Les règles d'encodage SOAP expriment les types de données définis pour l'application en XML :
a) Les types de données simples :
tous les types simples définis comme Built-in data-type dans XML Schema : string, integer, float, date, etc .
b) Les types composés
- Struct (enregistrement)
- Array : marqué par leur attribut xsi:type qui est SOAP-ENC:Array , Le type des membres du tableau est
déclaré au moyen d'un autre attribut SOAP-ENC: arrayType
8. Liaison du SOAP avec les protocoles du transport:
a) Modes de transport de message SOAP:
• Le mécanisme RPC SOAP est utilisé pour les communications au sein de l'entreprise
• La communication par messages est utilisée entre deux entités métiers différentes
b) Utilisation de SOAP avec RPC:
- Pour effectuer une invocation de méthode distante les informations suivantes sont nécessaires:
• URI de l'objet cible.
• Nom de la méthode.
• Signature de la méthode (facultative)
• Paramètres de la méthode
• Données de l'entête (facultatives)
- Les appels et réponses de méthodes RPC sont transmis encapsulés dans l'élément Body du message
Implémentation SOAP :
Il existe actuellement diverses implémentations du protocole SOAP ainsi que des ensembles d'outils, adaptés à
une gamme variée d'environnements et de langages de programmation tels que Java, C++, C, Perl, PHP,
Python, entre autres. Ces solutions sont conçues pour satisfaire les divers besoins des utilisateurs en matière
de communication entre applications, offrant une flexibilité d'intégration dans des contextes technologiques
diversifiés.
Ces outils peuvent implémenter de différentes fonctionnalités :
• Processus fondamental de création, déploiement et utilisation des services web.
• Comprendre et réaliser tous les traitements concernant les styles d'encodage et la translation des
types natifs de données dans XML et vice versa.
• Encodage, décodage et routage des messages SOAP à travers le protocole de transport.
les fonctionnalités spécifiques sont diverses, elles concernent surtout :
• L'utilisation du protocole de transport
• Les fonctionnalités de sécurité
• Appel d'objet à distance avec différents niveaux d'automatisation.
• Utilisation et manipulation des données SQL.
STRUCTURE DES MESSAGES SOAP
La structure d’un message SOAP diffère selon les types d’informations transportées :
• informations sont tous textuelles èle format de message simple suffit
• s’il y a des informations nécessitant des formats de données binaires spécifique (image, vidéo, son,
pdf,..) èdoivent être encapsulées dans un format MIME
1. Message simple :
Un message SOAP simple est message contenant uniquement du texte (XML). Il est composé de :
a) L’enveloppe SOAP (Envelope) :
- conteneur englobant tous les autres éléments du message
- Sa déclaration est strictement obligatoire
- Le mot-clé Envelope est suivi d'un espace de nom = un URI qui pointe vers un schéma XML.
- La valeur de cet URI (schéma XML) varie selon la version du message SOAP(1.1 ou 1.2).
- A la suite de l’URI l’attribut encodingStyle peut être utilisé pour indiquer le format de sérialisation utilisée
pour coder un élément donné et ses descendants( tableau par exemple).
b) L’entête du message (Header) :
• optionnelle
• composée d’une ou plusieurs entrées (Header entry/ Header Block) qui peuvent être destinée { un ou
plusieurs nœuds SOAP (nœuds intermédiaires et/ou récepteur final du messag}.
• L’entrée peut contenir des attributs nécessaires pour le traitement du message (encodingStyle, role
(actor), mustUnderstand et relay )
à Attribut « role » (actor pour la version 1.1) : désigner le destinataire concerné (un émetteur, un
récepteur final ou bien aucun ou plusieurs intermédiaires) par le traitement de cette entrée.
S’il n’est pas spécifié alors seul le destinataire final est concerné de cette entrée
• Erreur VersionMismatch : Quand un nœud génère une erreur avec value de code ="VersionMismatch" il
devrait fournir obligatoirement une entrée d'entête appelée "Upgrade" dans le message d'erreur généré qui
contient une liste ordonnée d'espaces de noms représentant les versions supportées.
• Erreur mustUnderstand : Lorsqu'un nœud SOAP génère une faute avec une valeur Value du Code fixée à
"env:MustUnderstand", il devrait fournir un bloc d'en-tête NotUnderstood dans le message de faute généré.
• WSDL est un langage de description des capacités de services web basé sur XML. Un document WSDL
décrit essentiellement le nom de la méthode utilisée, son nombre de paramètres, et leur type, ce
qu'un service web offre, où il réside et comment on peut l'invoquer.
• La description d’un service doit inclure la définition des composants nécessaire à :
- protocole de communication (SOAP pour les services web)
- l’interaction avec un client ou un autre service web
Le WSDL divise les informations en deux niveaux : abstrait (réutilisable, non spécifique au service) et concret
(protocoles spécifiques au service). Le niveau abstrait est utilisé lors de la sélection, le niveau concret lors de
l'invocation des méthodes du service web.
1. Niveau abstrait:
Le niveau abstrait dans WSDL décrit les détails des méthodes d'un service, ainsi que les informations sur les
messages et les données échangés lors de son utilisation.
En cas de méthodes similaires entre deux services, la description WSDL au niveau abstrait peut être réutilisée.
L’élément interface: Cet élément décrit l’ensemble des fonctionnalités, appelées opérations(simple interaction
entre le client et le service), fournies par le service web .
les messages sont définis au niveau de l’opération et sont de deux types : soit des messages que le service
reçoit (sous- élément input), soit des messages que le service envoie au client (sous- élément output)
Obligation : Pour bien comprendre les détails par des exemples voir pages : 243 – 250
§ Comparaison entre la structure des documents wsdl 1.1 et la structure des documents wsdl 2.0 :
o UDDI (Universal Description, Discovery and Integration) est une spécification d’annuaires de services
web.
o formalisées en XML
o elles proposent 3 types d’informations :
pages blanches : contenant noms, adresses, identifiants et contacts des entreprises enregistrées
décrits dans une entité : Business Entity
pages jaunes : détails sur le métier des entreprises et les services qu’elles proposent, décrites dans
une entité : Business Service
page verte : informations techniques sur les services ,processus métier, l’URL du WSDL de service
Annuaire UDDI publique :implémenté sous forme de nœuds UDDI, telles que SAP, IBM, Microsoft, La
publication d’un service chez une entreprise propage automatiquement ses informations (pages blanches,
jaunes et vertes) aux différents nœuds UDDI. L’accès à l’ensemble des informations des registres peut se faire
à n’importe quel nœud UDDI. Ce type d’annuaire est gratuit.
Annuaire UDDI privé : permet à une entreprise de choisir les partenaires pour lesquels elle autorise la
publication et l'invocation de ses services web.
La partie pages blanches : est constituée de deux éléments <businessEntity> et <Publisher Assertion>.
• <businessEntity> donne des informations de contact sur l’organisation fournissant les services
• <Publisher Assertion> spécifie les liens d’affiliation entre deux entreprises (mère et fille)
La partie pages jaunes : est constituée des éléments <business Service>.
• <business Service> décrit un ensemble de services fournis par une organisation (le nom du service, la
description textuelle, les informations de classification).
Un <business Service> est un sous élément de <businessEntity>.
La partie pages vertes : est constituée des éléments <bindingTemplate> et <tModel>.
• <bindingTemplate> spécifie des informations techniques, telles que l’URI du service. Un
<bindingTemplate> est un sous élément de <business Service>.
• <tModel> définit des structures d’informations techniques telles que l’interface WSDL, les taxonomies
industrielles, les ontologies, etc. Un élément <tModel> peut être réutilisé par plusieurs éléments
<bindingTemplate>.
Le protocole d'utilisation de l'UDDI offre trois fonctions de base :
• publish : permet de publier un nouveau service.
• find : permet d'interroger l'annuaire UDDI.
• bind : permet d'établir une connexion entre l'application cliente et le service.