Modélisation et test de la composition de
services Web
Présentation des services Web Dans cette section, nous présenterons l’architecture orientée services et sa principale réalisation : les services Web. Nous donnons deux définitions des services Web et décrivons brièvement leurs principaux standards et technologies. Enfin, nous abordons le concept de composition des services Web en explicitant les deux méthodes de composition : l’orchestration et la chorégraphie.
Architecture orientée services
Une architecture orientée services, notée SOA, est une architecture logicielle visant à mettre en place un système d’information constitué de services applicatifs indépendants et interconnectés. L’architecture SOA permet la réutilisation des applications et des services existants, ainsi de nouveaux services peuvent être créés à partir d’une infrastructure informatique des systèmes déjà existante. En d’autres termes, SOA permet aux entreprises de tirer partie des investissements existants en leur permettant de réutiliser des applications existantes, en leur offrant une interopérabilité entre applications et technologies hétérogènes. L’objectif d’une architecture SOA est de décomposer une fonctionnalité en un ensemble de services et de décrire leurs interactions. Ces services peuvent être utilisés par des processus métier (i.e. services Web composés) ou par des clients dans différentes applications. Dans une architecture SOA, comme le montre la Figure 2.1, les fournisseurs de services publient (ou enregistrent) leurs services dans un annuaire de services (qui peut être publique ou local à un réseau d’entreprise par exemple). Cet annuaire est utilisé par les utilisateurs (i.e. les clients de services) pour trouver des services vérifiant certains critères ou correspondant à une certaine description. Si l’annuaire contient de tels services, il envoie au client les descriptions de ces services avec un contrat d’utilisation. Le client fait alors son choix, s’adresse au fournisseur et invoque le service Web.
Services Web
Il existe de nombreuses définitions des services Web. Nous citerons deux d’entre elles. Selon Mark Colan (IBM), les services Web sont : « des applications modulaires basées sur internet qui exécutent des tâches précises et qui respectent un format spécifique ». Nous donnons la définition du W3C1 pour les services Web, qui est plus complète étant donné qu’elle cite les principaux standards des services Web : « A Web service is a software system designed to support interoperable machine-to-machine interaction over a network. It has an interface described in a machine-processable format (specifically WSDL). Other systems interact with the Web service in a manner prescribed by its description using SOAP messages, typically conveyed using HTTP with an XML serialization in conjunction with other Web-related standards. » En d’autres mots, les services Web sont des applications auto descriptives, modulaires et faiblement couplées fournissant un modèle simple de programmation et de déploiement d’applications. Ils reposent principalement sur des technologies basées sur XML pour la structure et le contenu de messages échangés entre services (SOAP), pour la description des services (WSDL), pour la découverte des services (UDDI) et pour leurs orchestrations (BPEL). L’ensemble des ces technologies se retrouvent dans l’abréviation WS-*. Le modèle des services Web, illustré ci-dessous dans la Figure 2.2, instancie celui de l’architecture SOA qui est représenté ci-dessus dans la Figure 2.1. Dans la suite, nous allons décrire brièvement les principaux standards des services Web : XML, HTTP, WSDL, SOAP et UDDI.
XML
XML est un langage utilisé pour décrire les messages échangés entre applications. Il permet une représentation textuelle des données. Dans les services Web, c’est plus particulièrement XML schema qui est mis en œuvre [9] et qui permet la description des structures de données en XML. HTTP HTTP est un protocole largement utilisé et mis en œuvre pour le transport des formulaires de pages HTML [10]. Dans le cadre des services Web, il a en charge le transport des messages échangés. WSDL WSDL est un langage basé sur XML permettant la description unifiée des interfaces (publiques) de services Web et des protocoles d’accès [5]. Il contient toutes les informations nécessaires à l’invocation d’un service Web : le nom du service, le nom de ses opérations (et leur paramètres) organisées sous forme de messages, le protocole de transport utilisé (souvent HTTP), l’encodage des données et l’adresse URL de localisation du service. Une description WSDL définit un service comme étant une collection de ports (i.e. endpoints). Elle se compose des parties suivantes (cf. Fig. 2.3) : 1. types, qui fournit la définition des types de données utilisés pour la description des messages échangés ; 2. messages, qui représente une définition abstraite des données échangées et leurs types associés ; 3. portType, qui identifie un ensemble d’opérations abstraites où chaque opération est composée d’un ou plusieurs messages ; 4. binding, qui spécifie le protocole concret et les spécifications de format de données pour les opérations et les messages définis par un portType particulier ; 5. liaisons et ports de communication, qui permet de lier les opérations (ou un portType) au protocole de transport sous-jacent. SOAP SOAP est un protocole de transport basé sur XML permettant de spécifier les échanges de messages [11]. SOAP se situe au dessus des autres protocoles réseaux (e.g. HTTP, SMTP) qui encapsulent les messages SOAP dans leurs propres messages. Un message SOAP a deux parties : (1) une partie entête optionnelle utilisée pour transférer les données d’authentification, ou de gestion de sessions, (2) le corps du message qui a en charge l’encodage des noms des opérations, de leurs paramètres ainsi que du résultat retourné.
Composition de services Web
La composition de services Web est la plus importante fonctionnalité assurée par une architecture SOA. Celle-ci offre un environnement homogène pour la composition dans la mesure où toutes les parties de la composition sont des services idéalement décrits de la même façon et communiquant par les mêmes standards d’échange de messages. La composition permet de combiner des services pour former un nouveau service dit composé ou composite. L’exécution d’un service composé implique des interactions avec des services partenaires en faisant appel à leurs fonctionnalités. Le but de la composition est avant tout la réutilisation de services (simples ou composés) et de préférence sans aucune modification de ces derniers. Nous pouvons distinguer deux méthodes de composition de services Web : Orchestration de services Web L’orchestration décrit la manière dont les services Web peuvent interagir ensemble au niveau des messages, incluant l’ordre d’exécution des messages et la logique métier. Dans l’orchestration, un seul processus (appelé orchestrateur) est responsable de la composition et contrôle les interactions entre les différents services. Cet orchestrateur coordonne de manière centralisée les différentes opérations des services partenaires qui n’ont aucune connaissance de cette composition. BPEL [1] est reconnu comme un langage standard d’orchestration de services Web.Chorégraphie de services Web La chorégraphie décrit une collaboration entre services pour accomplir un certain objectif. A l’inverse de l’orchestration, la chorégraphie ne repose pas sur un seul processus principal. C’est une coordination décentralisée où chaque participant est responsable d’une partie du workflow, et connaît sa propre part dans le flux de messages échangés. WS-CDL [13] est l’un des langages de description de chorégraphie pour les services Web. Il peut être considéré comme un complément à un langage d’orchestration tel que BPEL en lui apportant un modèle global nécessaire pour assurer la cohérence des interactions des services partenaires, et pour prendre en considération les éventuelles situations de compétition entre partenaires. En résumé, la différence majeure entre l’orchestration et la chorégraphie est que l’orchestration offre une vision centralisée de la composition, alors que la chorégraphie offre une vision globale et plus collaborative de la coordination