Pour qu'une architecture orientée services soit
efficace, nous avons besoin d'une compréhension claire du terme
service.
Ces services peuvent être créés à
partir de zéro, mais sont souvent créés en exposant les
fonctions des anciens systèmes d'enregistrement en tant qu'interfaces de
service.
De cette manière, la SOA représente une
étape importante dans l'évolution du développement et de
l'intégration d'applications au cours des dernières
décennies. Avant l'émergence de la SOA à la fin des
années 1990, la connexion d'une application à des données
ou à des fonctionnalités hébergées dans un autre
système nécessitait une intégration point à point
complexe, une intégration que les développeurs devaient
recréer, en partie ou en totalité, pour chaque nouveau projet de
développement. L'exposition de ces fonctions via SOA élimine le
besoin de recréer l'intégration profonde à chaque fois.
Un service SOA est une unité
discrète des fonctionnalités qui peut être
accédée en distance, utilisée et mise à jour
indépendamment
Il existe deux rôles principaux dans l'architecture
orientée services:
? Fournisseur de services: le fournisseur de services est le
mainteneur du service et l'organisation qui met à disposition un ou
plusieurs services pour que d'autres puissent les utiliser. Pour annoncer des
services, le fournisseur peut les publier dans un registre, avec un contrat de
service qui spécifie la
nature du service, comment l'utiliser, les exigences du
service et les frais facturés.
+ Consommateur de service: le consommateur de service peut
localiser les métadonnées du service dans le registre et
développer les composants client requis pour lier et utiliser le
service.
Figure II.1 Principaux rôles dans SOA
Le service est un composant clef de l'architecture
orientée services. Il consiste en une fonction ou fonctionnalité
bien définie. C'est aussi un composant autonome qui ne dépend
d'aucun contexte ou service externe. Il est divisé en opérations
qui constituent autant d'actions spécifiques que le service peut
réaliser. On peut faire un parallélisme entre opérations
et services d'une part, et méthodes et classes dans le mode
orienté objet d'autre part.
Un service est une entité de traitement qui respecte
les caractéristiques suivantes :
+ Large granularité (coarse-grained)
: les opérations proposées par un service encapsulent plusieurs
fonctions et opèrent sur un périmètre de données
large au contraire de la notion de composant technique.
+ Interface : un service peut
implémenter plusieurs interfaces, et aussi plusieurs services peuvent
implémenter une interface commune.
+ Localisable : avant d'appeler (bind,
invoke) un service, il faudra le trouver (find).
+ Instance unique : à la
différence des composants qui sont instanciés à la demande
et peuvent avoir plusieurs instances en même temps, un service est
unique. Il correspond au design pattern Singleton.
+ Couplage faible (loosely-coupled) : les
services sont connectés aux clients et aux autres services via des
standards. Ces standards assurent le découplage, c'est-à-dire la
réduction des dépendances. Ces standards sont des documents XML
comme dans les web services.
+ Synchrone ou
asynchrone.