Faculté des Sciences Gabès
Support de Cours
Architecture SOA et services web
Ensigné par:
Dr: MAHJOUB Chahira
Année Universitaire : 2024-2025
1
Chapitre 1: Concept service
Introduction
Un service
Relation entre service et orchestration
Types de services
2
Introduction
Un système d’information en entreprise est composé :
- Des nombreuses technologies différentes;
- Des spécificités liées aux contraintes de moments,
- Des interfaces avec d’autres applications
1. Des nombreuses technologies différentes :
Les entreprises s’appuient sur une multitude de technologies pour gérer leurs processus
métier, leurs données et leurs communications. Ces technologies sont souvent hétérogènes et
spécialisées, ce qui signifie qu’elles remplissent des fonctions distinctes mais doivent travailler
ensemble pour assurer un système d’information cohérent et efficace.
3
1. Des nombreuses technologies différentes:
Par exemple :
• Bases de données (comme MySQL, Oracle) pour stocker et organiser les données.
• Serveurs (physiques ou virtuels) pour héberger les applications et les services.
• Logiciels de gestion tels que les ERP (Enterprise Resource Planning) pour la gestion intégrée des
ressources et les CRM (Customer Relationship Management) pour la relation client.
• Outils de communication (comme Microsoft Teams, Slack) pour faciliter la collaboration interne et
externe.
• Solutions cloud (comme AWS, Microsoft Azure) pour offrir une infrastructure accessible à distance.
Cependant, la coexistence de ces technologies pose un défi majeur : elles doivent interagir de manière
fluide pour éviter les silos d'information (Isolats de données) et garantir une circulation efficace des
données. Par exemple, un CRM doit pouvoir échanger des informations avec un ERP pour synchroniser
les données clients et les commandes.
Cette complexité technologique est l’une des raisons pour lesquelles des architectures comme la SOA
(Architecture Orientée Services) sont essentielles : elles permettent d’intégrer et de faire collaborer ces
technologies disparates (Hétérogènes) de manière modulaire et flexible.
4
Services Métier (ou Processus Métier) :
Les services métier représentent les activités clés qu’une entreprise exécute pour atteindre ses
objectifs. Ils sont au cœur du fonctionnement de l’entreprise et peuvent être vus comme des
ensembles de tâches ou d’opérations qui créent de la valeur pour l’entreprise et ses clients.
Exemples de services métier :
Gestion des commandes : Traitement des commandes clients, de la réception à la livraison.
Gestion des stocks : Suivi des niveaux de stock, réapprovisionnement, gestion des entrepôts.
Gestion de la relation client (CRM) : Suivi des interactions avec les clients, gestion des ventes et
du service client.
Gestion des ressources humaines : Recrutement, paie, formation des employés.
Comptabilité et finance : Gestion des factures, des paiements, des budgets et des rapports
financiers.
Ces services métier sont souvent automatisés ou supportés par des logiciels spécialisés (comme
les ERP ou CRM) pour améliorer l’efficacité et la précision.
5
Introduction
2. Des spécificités liées aux contraintes de moments :
Les systèmes d’information doivent s’adapter aux contraintes temporelles spécifiques à chaque
entreprise. Par exemple, certaines industries fonctionnent en temps réel (comme la finance ou la
logistique), tandis que d’autres peuvent tolérer des délais plus longs. Les contraintes de moments
peuvent aussi inclure des périodes de pointe ou Pics d’activité
(comme les soldes pour le commerce électronique) où le système doit être capable de gérer une charge
de travail augmentée.
3. Des interfaces avec d’autres applications :
Les systèmes d’information ne fonctionnent pas de manière isolée. Ils doivent souvent interagir avec
d’autres applications internes ou externes à l’entreprise. Par exemple, un système de gestion des stocks
peut avoir besoin de communiquer avec un système de vente en ligne ou avec les applications des
fournisseurs. Ces interfaces sont cruciales pour assurer la cohérence et l’efficacité des processus métier.
6
Introduction
Conception d’un programme informatique: suit un paradigme de développement.
Paradigme de développement :concept pour représenter le monde + des techniques pour
traiter ce concept
Procédural Composants
• 0001100 • Classe • Groupes d’interfaces • SOA
• 0100111 • Fonctions • Encapsulation • Interaction •…
• Modularité • Héritage d’applications
Binaire Objet • .. Service
7
Introduction
1. Paradigme Binaire :
Description :
Ce paradigme est à la base de tout développement informatique, représentant les données et les
instructions sous forme de codes binaires (comme 0001100 et 0100111).
Langages : Assembleur (ASM), Langage machine.
Détails : Ces langages travaillent directement avec le code binaire et sont très proches du matériel.
Avantages :
Performance maximale : Le code est exécuté directement par le processeur sans couches
intermédiaires.
Contrôle total : Les développeurs ont un accès direct au matériel.
Limites :
Complexité : Écrire et maintenir du code en binaire ou en assembleur est extrêmement difficile et
chronophage.
Portabilité : Le code est spécifique à une architecture matérielle.
Transition vers le paradigme procédural :
Pour simplifier le développement, les langages procéduraux (comme le C) ont été créés. Ils
permettent d'écrire du code plus lisible et portable tout en gardant un bon contrôle sur le matériel.
8
Introduction
2. Paradigme Procédural :
Description :
Ce paradigme se concentre sur l’exécution séquentielle d’instructions et l’utilisation de fonctions pour
structurer le code.
Langages : C, Pascal, Fortran.
Détails : Il organise le code en blocs réutilisables appelés fonctions et encourage la modularité.
Avantages :
Lisibilité : Le code est plus facile à comprendre et à maintenir grâce aux fonctions.
Modularité : Les fonctions peuvent être réutilisées dans différents programmes.
Limites :
Gestion de la complexité : Pour les grands projets, le code peut devenir difficile à organiser.
Réutilisabilité limitée : Les fonctions sont souvent spécifiques à un programme.
Transition vers le paradigme objet :
Pour mieux gérer la complexité et améliorer la réutilisabilité, le paradigme objet a été introduit. Il
permet de modéliser des entités réelles sous forme d’objets.
9
Introduction
3. Paradigme Objet:
Description :Ce paradigme repose sur les concepts de classe, d’encapsulation et d’héritage,
favorisant une organisation du code autour d’objets et de leurs interactions.
Langages: Java, C++, Python, Ruby.
Détails : Il permet une modélisation plus proche des entités réelles grâce aux objets
Avantages :
Modélisation intuitive : Les objets représentent des concepts du monde réel (exemple : une classe
Voiture avec des attributs comme couleur et des méthodes comme démarrer()).
Réutilisabilité : L’héritage permet de créer de nouvelles classes à partir de classes existantes.
Maintenabilité : L’encapsulation protège les données et simplifie les modifications.
Limites :
Courbe d'apprentissage : Les concepts comme l'héritage et le polymorphisme peuvent être difficiles à
maîtriser.
Performance : L’abstraction ajoute une légère surcharge par rapport au code procédural.
Transition vers le paradigme composant:
Pour répondre à des besoins plus complexes, comme l’intégration de systèmes hétérogènes, le
paradigme composant a émergé.
10
Introduction
4. Paradigme Composant :
Description :Ce paradigme consiste à regrouper des interfaces et à gérer les interactions entre
différentes applications pour créer des systèmes modulaires.
Langages : C#, Java (avec des frameworks comme JavaBeans), Component Pascal.
Détails : Ces langages et frameworks permettent de créer des composants logiciels réutilisables qui
encapsulent des fonctionnalités spécifiques.
Avantages :
Réutilisabilité : Les composants peuvent être utilisés dans plusieurs projets.
Modularité : Les systèmes sont construits en assemblant des composants indépendants.
Maintenabilité : Les composants peuvent être mis à jour ou remplacés sans affecter l'ensemble du
système.
Exemples concrets :
• JavaBeans : Un framework Java pour créer des composants réutilisables.
• .NET Components : Des composants logiciels utilisés dans l'écosystème Microsoft
11
Introduction
4. Paradigme Composant :
Limites :
Complexité de conception : La création de composants bien définis et interopérables nécessite une
planification rigoureuse.
Dépendances : Les composants peuvent dépendre d'autres composants, ce qui peut introduire des
risques d'instabilité.
Transition vers le paradigme SOA :
Pour intégrer des systèmes hétérogènes et faciliter l’interopérabilité, le paradigme SOA (Architecture
Orientée Services) a été développé.
12
Introduction
5. Paradigme SOA (Architecture Orientée Services):
Description :Ce paradigme organise les systèmes en services indépendants et interopérables,
communiquant via des interfaces standardisées.
Langages : Web Services (SOAP, REST), API.
Détails : Il permet une intégration flexible et modulaire des systèmes.
Avantages :
Interopérabilité : Les services peuvent être utilisés par différents systèmes, même s’ils sont écrits
dans des langages différents.
Réutilisabilité : Les services peuvent être réutilisés dans plusieurs applications.
Évolutivité : Les services peuvent être mis à jour ou remplacés indépendamment..
Limites :
Complexité de mise en œuvre : La conception et la gestion des services nécessitent une expertise.
Performance : La communication entre services peut introduire une latence
13
Introduction
Services indépendants et interopérables ???
Dans une architecture orientée services (SOA), les services sont conçus pour être :
Indépendants : Chaque service est autonome, avec une fonctionnalité spécifique, et peut être
développé, déployé et géré séparément.
Interopérables : Ils peuvent communiquer et fonctionner ensemble de manière fluide, même s’ils
utilisent des technologies différentes, grâce à des standards communs (comme les API REST ou les
web services).
14
Un service
🠶 Service: est une brique logicielle dont les fonctionnalités, les propriétés non fonctionnelles et
les conditions d’utilisation sont définies de manière déclarative par un descripteur de service. Il se
caractérise par les éléments suivants :
1. Composant logiciel :
• Exécute une action pour le compte d’un client.
• Mutualisé (partagé, réutilisable et interopérable).
• Référencé dans un annuaire où il est identifié.
2. Normalisation :
• Toutes ses fonctions sont appelées de la même manière via des paramètres, conformément à
un contrat de service.
• Décrit par une interface d’appel (utilisant un langage indépendant des technologies).
3. Communication :
• Communique avec le client par échange de messages (entrées/sorties).
4. Neutralité :
• Son utilisation est indépendante de son implémentation ou de son évolution, tant que le contrat est
respecté.
5. Couplage faible :
• L’interface isole le client du service, permettant une grande flexibilité.
6. Déploiement :
• Déployé physiquement sur un serveur
15
Relation entre service et orchestration
Les services peuvent être agrégés (composés) pour réaliser un processus métier complexe.
Cela permet de combiner plusieurs services simples en une fonctionnalité plus riche et adaptée à un
besoin spécifique.
L’orchestration permet aux services de communiquer et de collaborer sans avoir besoin de se
connaître directement, préservant ainsi leur couplage lâche (indépendance).
Un moteur d’orchestration (ou orchestrateur) est responsable d’appeler les services dans l’ordre
requis et de gérer les échanges de données entre eux.
Orchestration de Services
Composition de Services
Service
1 Service
Service Service
1 2
1 2
Service
2
5
Moteur Service
orchestration 3 3
Service Service
4 3 4 Service
4 16
Types de services
Applicatif
Fonctionnel : Logique métier spécifique.
Entité (CRUD) : Gestion des données (Create, Read,
Update, Delete).
Transverse (Infrastructure) : Fonctionnalités
transverses (sécurité, logs, etc.).
Host : Hébergement et gestion des environnements
d’exécution
17
Séance prochaine, …
18