Institut Supérieure Des Sciences Appliquées et de Technologie de Sousse
Environnement de développement
.NET Framework
FI-GL-A3
Présenté par
Dr. Ikbel Sayahi
[Link]@[Link]
Année Universitaire 2025-2026
9
Communication Micro-services
1 Introduction
▪ Définition
La base d’une architecture Microservices est de mettre en
place de petites briques logicielles autonomes et
interopérables, ce qui implique un fort besoin de
communication entre elles.
01/12/2025 Ikbel Sayahi 3
1 Introduction
▪ Définition
✓ La communication entre microservices est un élément central de l’architecture microservices.
Puisque chaque service est indépendant, spécialisé et déployé séparément, il doit pouvoir
communiquer avec les autres pour répondre à un besoin métier complet
✓ Les clients et les services peuvent communiquer par le biais de nombreux types de communication
différents, chacun ciblant un scénario et des objectifs différents. Au départ, ces types de
communications peuvent être classés dans deux axes:
❖ Communication synchrone ❖ Communication asynchrone
01/12/2025 Ikbel Sayahi 4
1 Introduction
▪ Avantages
✓ Ordonner les services
✓ Assurer la cohérence
✓ Répartir les responsabilités
01/12/2025 Ikbel Sayahi 5
1 Introduction
▪ Quel mode choisir?
Cas d’usage Type conseillé
Obtenir des données en temps réel Synchrone
Opérations longues ou multiples Asynchrone
Fort trafic / microservices nombreux Asynchrone
API publique simple Synchrone
01/12/2025 Ikbel Sayahi 6
2 Communication Synchrone:
▪ Définition
✓ Dans le mode synchrone, un microservice fait une requête directe à un autre microservice et
attend sa réponse avant de continuer son traitement.
❖ Le service demandeur est bloqué tant que la réponse n’est pas reçue.
❖ C’est le modèle typique des communications type client-serveur.
Exemples:
•Un front-end qui appelle un microservice via HTTP.
•Un microservice “Commande” qui demande au microservice “Produit” le stock disponible avant de
valider une commande.
01/12/2025 Ikbel Sayahi 7
2 Communication Synchrone
▪ Méthode HTTP classique
•Basé sur le protocole HTTP standard (GET, POST, PUT, DELETE…).
•Les données sont souvent échangées au format JSON.
•Chaque microservice expose une API REST (URL + méthode HTTP).
Très simple à mettre en place.
Compatible avec presque tous les frameworks
Bon pour les communications externes
Format JSON plus lourd et lent à sérialiser/désérialiser.
Gestion de latence et des timeouts importante
01/12/2025 Ikbel Sayahi 8
2 Communication Synchrone
▪ Méthode HTTP classique
01/12/2025 Ikbel Sayahi 9
2 Communication Synchrone
▪ Méthode HTTP classique
01/12/2025 Ikbel Sayahi 10
2 Communication Synchrone
▪ Méthode HTTP classique
01/12/2025 Ikbel Sayahi 11
2 Communication Synchrone
▪ Méthode HTTP classique
01/12/2025 Ikbel Sayahi 12
2 Communication Synchrone
▪ Méthode gRPC
✓ gRPC est un framework de communication entre services créé par Google.
✓ Il permet à deux applications (souvent des microservices) de communiquer entre elles
rapidement, efficacement et de manière typée.
✓ Hautement performant car les données transitent en binaire
✓ gRPC crée essentiellement une relation bidirectionnelle serveur-client entre les
microservices.
01/12/2025 Ikbel Sayahi 13
2 Communication Synchrone
▪ Méthode gRPC
✓ Un gRPC server est l’application qui expose
des services que d’autres applications peuvent
appeler à distance via gRPC.
✓ Un gRPC Client est un programme qui appelle
un gRPC Server.
✓ PROTO joue contrat d’échange entre le client et le
serveur. C’est le fichier de définition utilisé pour
décrire :
❖ les messages (structures de données)
❖ les services gRPC
❖ les types des champs
❖ les appels RPC
01/12/2025 Ikbel Sayahi 14
2 Communication Synchrone
▪ Méthode gRPC
01/12/2025 Ikbel Sayahi 15
2 Communication Synchrone
▪ Méthode gRPC
Microservice 1 : ProductService → expose gRPC
Microservice 2 : OrderService → consomme gRPC en tant que client
1) Créer le microservice gRPC
01/12/2025 Ikbel Sayahi 16
2 Communication Synchrone
▪ Méthode gRPC
2) Créer un fichier [Link]
01/12/2025 Ikbel Sayahi 17
2 Communication Synchrone
▪ Méthode gRPC
2) Configurer csprojet
01/12/2025 Ikbel Sayahi 18
2 Communication Synchrone
▪ Méthode gRPC
3) Implémentation du service gRPC
01/12/2025 Ikbel Sayahi 19
2 Communication Synchrone
▪ Méthode gRPC
3) Implémentation du service gRPC
01/12/2025 Ikbel Sayahi 20
2 Communication Synchrone
▪ Méthode gRPC
4) Activer le service dans [Link]
01/12/2025 Ikbel Sayahi 21
2 Communication Synchrone
▪ Méthode gRPC
5) Créer un client gRPC pour tester
Ajouter gRPC Client :
01/12/2025 Ikbel Sayahi 22
2 Communication Synchrone
▪ Méthode gRPC
5) Créer un client gRPC pour tester
Ajouter gRPC Client :
Copier le même fichier [Link] dans ce projet.
01/12/2025 Ikbel Sayahi 23
2 Communication Synchrone
▪ Méthode gRPC
5) Créer un client gRPC pour tester
Modifier le .csproj :
01/12/2025 Ikbel Sayahi 24
2 Communication Synchrone
▪ Méthode gRPC
5) Créer un client gRPC pour tester Code du client:
01/12/2025 Ikbel Sayahi 25
2 Communication Synchrone
▪ HTTP vs gRPC
Critère HTTP/2 gRPC
Framework RPC (Remote
Protocole de transport / Procedure Call) qui utilise
Type
communication HTTP/2 comme transport
par défaut
Permettre aux applications
Remplacer HTTP/1.1 pour
de microservices de
optimiser la
Objectif communiquer de manière
communication web (moins
efficace via appels de
de latence, multiplexage)
méthode distants
Niveau transport / Niveau application (au-
Niveau
protocole dessus de HTTP/2)
01/12/2025 Ikbel Sayahi 26
2 Communication Synchrone
▪ HTTP vs gRPC
Critère HTTP/2 gRPC
Requête-réponse classique Appels de méthodes comme si
Communication
(client → serveur) c’étaient locales (RPC)
Streaming bidirectionnel natif
Supporte le multiplexage de
Streaming (client→serveur,
flux, mais c’est basique
serveur→client, bidirectionnel)
Texte ou binaire (ex : JSON, Messages binaires via Protocol
Messages
HTML…) Buffers (Protobuf)
01/12/2025 Ikbel Sayahi 27
3 Communication Asynchrone
La communication asynchrone signifie que le service qui envoie une information ne bloque pas
son exécution en attendant une réponse.
•Émetteur : envoie un événement ou un message et continue son travail.
•Récepteur : reçoit et traite l’événement quand il le peut.
01/12/2025 Ikbel Sayahi 28
3 Communication Asynchrone
▪ Concepts clés
✓ Événement (Event)
C’est une notification qu’un changement ou une action a eu lieu.
Exemple: OrderCreated, ProductStockUpdated
✓ Producteur (Producer)
Le service qui publie l’événement.
Exemple: le OrderService publie OrderCreated lorsqu’une nouvelle commande est passée.
✓ Consommateur (Consumer)
Le service qui écoute et réagit aux événements.
Le InventoryService écoute OrderCreated pour mettre à jour le stock.
01/12/2025 Ikbel Sayahi 29
3 Communication Asynchrone
▪ Concepts clés
✓ Broker/ Bus d’événements
C’est l’intermédiaire qui transporte les événements entre producteurs et consommateurs.
Exemple: Kafka, RabbitMQ, Azure Service Bus, NATS
01/12/2025 Ikbel Sayahi 30
3 Communication Asynchrone
▪ Rabbit MQ
✓ RabbitMQ est un système de messagerie open-source basé sur le protocole AMQP (Advanced
Message Queuing Protocol).
✓ Il sert à transmettre des messages entre différentes applications ou microservices de manière
fiable et asynchrone.
01/12/2025 Ikbel Sayahi 31
3 Communication Asynchrone
▪ Rabbit MQ: caractéristiques
•Broker de messages : RabbitMQ agit comme un intermédiaire entre l’émetteur (producer)
et le récepteur (consumer).
•Découplage : Les producteurs et consommateurs n’ont pas besoin de connaître l’existence
de l’autre.
•Fiabilité : RabbitMQ peut garantir que les messages ne sont pas perdus.
01/12/2025 Ikbel Sayahi 32
3 Communication Asynchrone
▪ Rabbit MQ: Concepts de base
1. Producer (producteur)
L’application qui envoie un message.
Exemple : un service de commande qui envoie des infos sur une commande passée.
2. Queue (file d’attente)
Où les messages sont stockés jusqu’à ce qu’un consommateur les prenne.
Exemple : order_queue pour les nouvelles commandes.
3. Consumer (consommateur)
L’application qui reçoit et traite les messages.
Exemple : un service de stock qui diminue la quantité après réception d’un message.
01/12/2025 Ikbel Sayahi 33
3 Communication Asynchrone
▪ Rabbit MQ: Concepts de base
4. Exchange (échangeur)
•Il reçoit les messages des producteurs et décide dans quelle queue les placer selon un
type de routage.
•Types d’exchanges :
•Direct : message envoyé à la queue dont le nom correspond à la clé de routage.
•Fanout : message envoyé à toutes les queues attachées.
•Topic : routage basé sur un motif.
•Headers : routage basé sur les headers du message.
5. Binding (liaison)
Lien entre un exchange et une queue avec une clé de routage.
01/12/2025 Ikbel Sayahi 34
3 Communication Asynchrone
▪ Rabbit MQ: Concepts de base
01/12/2025 Ikbel Sayahi 35
3 Communication Asynchrone
▪ Rabbit MQ: Concepts de base
01/12/2025 Ikbel Sayahi 36
3 Communication Asynchrone
▪ Rabbit mq:Exemple
Lancer rabbimq en tant que logiciel installé ou bien le démarrer en tand que service windows
L’interface management est accessible sur : [Link]
•user: guest
•password: guest
01/12/2025 Ikbel Sayahi 37
3 Communication Asynchrone
▪ Rabbit mq:Exemple
Créer les microservices nécessaires:
Installer le package RabbitMQ
01/12/2025 Ikbel Sayahi 38
3 Communication Asynchrone
▪ Rabbit mq:Exemple
Créer un Producer dans OrderService: [Link]
01/12/2025 Ikbel Sayahi 39
3 Communication Asynchrone
▪ Rabbit mq:Exemple
Créer un Producer dans OrderService: [Link]
01/12/2025 Ikbel Sayahi 40
3 Communication Asynchrone
▪ Rabbit mq:Exemple
Créer un Producer dans OrderService: [Link]
01/12/2025 Ikbel Sayahi 41
3 Communication Asynchrone
▪ Rabbit mq:Exemple
Utilisation dans le controller
01/12/2025 Ikbel Sayahi 42
3 Communication Asynchrone
▪ Rabbit mq:Exemple
Créer un Consumer dans StockService
01/12/2025 Ikbel Sayahi 43
3 Communication Asynchrone
▪ Rabbit mq:Exemple
Créer un Consumer dans StockService
01/12/2025 Ikbel Sayahi 44
3 Communication Asynchrone
▪ Rabbit mq:Exemple
Créer un Consumer dans StockService
01/12/2025 Ikbel Sayahi 45
3 Communication Asynchrone
▪ Rabbit mq:Exemple
Créer un Consumer dans StockService
01/12/2025 Ikbel Sayahi 46
3 Communication Asynchrone
▪ Rabbit mq:Exemple
Lancer le consumer depuis [Link]
01/12/2025 Ikbel Sayahi 47