Concepts
Communications
Pour communiquer entre eux, des processus séparés n'ont besoin d'ouvrir qu'une seule connexion avec un bus. Ils n'échangent jamais directement des données. Ils envoient uniquement des messages vers le bus et ils ne reçoivent des messages qu'en provenance du bus. Différents programmes peuvent dialoguer en utilisant une seule interface simplifiée.
L'ouverture d'une connexion avec un bus retourne un identifiant - en fait un socket - qui sert à désigner le bus dans un envoi ou une réception d'un message.
NOTE : Ce connecteur est souvent utilisé pour automatiquement rediriger le flot du programme dans la boucle principale, typiquement après un select
.
Tous les processus communicants sont généralement enregistrés sur le même bus sur la même machine hôte. Pour des raisons d'architecture, d'organisation, de performances ou de sécurité, certains programmes peuvent très bien ouvrir des connexions avec plusieurs bus dédiés.
Adressage
Pour recevoir des données, un processus s'enregistre dans un bus sous un nom public, appelé un nom de domaine. Pour échanger des données, un processus envoie un message avec un nom de domaine à un bus qui transmettra les données au processus destinataire.
Caractéristiques
L'exercice de ping-pong dans Pratique a démontré toutes les caractéristiques du bus magique :
- les processus peuvent entrer dans un bus et en sortir à leur gré,
- un processus peut s'enregistrer et changer son nom dans un bus à tout moment,
- une seule connexion suffit pour communiquer avec plusieurs processus,
- la même interface uniforme peut être utilisée pour échanger des données entre différents programmes,
- les communications avec le bus sont asynchrones,
- un processus peut en même temps être un serveur et un client,
- un message peut être une notification et aucune réponse n'est attendue,
- un message peut être une requête auquel cas une réponse est attendue,
- si une réponse n'est pas reçue avant un certain délai, une erreur est automatiquement remontée,
- un message peut être diffusé à plusieurs processus enregistrés sous le même nom,
- quand un processus donné échoue, les messages sont automatiquement redirigés vers un processus dans le même domaine,
- le nombre de processus communiquant n'est pas limité,
- la taille des messages que les processus peuvent s'échanger n'est pas limitée,
- les erreurs d'adressage ou de transmission sont toujours remontées.
Flux des messages
Les communications à travers le bus sont asynchrones.
Après qu'un processus a envoyé un message, il reprend immédiatement le contrôle. Si aucun processus n'est actuellement enregistré dans le domaine de destination, ou si une erreur de transmission se produit, le bus envoie un message d'erreur à l'émetteur appelé un message nobody. Après que le message est transmis, si l'émetteur n'a pas demandé de réponse, le bus lui renvoie immédiatement un message de réponse vide. Si l'émetteur a demandé une réponse, le bus attend un message de réponse du récepteur et le transmet à l'émetteur quand il le reçoit. Si le récepteur ne répond pas dans un temps fixé, le bus envoie un message d'erreur à l'émetteur appelé un message time-out.
Afin de suivre le flot des messages, un identifiant de message est associé aux données par l'émetteur. Ce numéro d'identification est retourné par le bus dans la réponse.
Messages one-way
Les messages one-way n'attendent pas de réponse du récepteur. Le bus retourne un message de réponse vide après que toutes les données ont été lues par le processus destinataire. Si aucun processus n'est actuellement enregistré dans le domaine de destination, ou si une erreur de transmission se produit, le bus envoie un message nobody à l'émetteur.
Messages two-way
Les messages two-way messages attendent un message de réponse du récepteur. Comme pour les messages one-way, si aucun processus n'est actuellement enregistré dans le domaine de destination, ou si une erreur de transmission se produit, le bus envoie un message nobody à l'émetteur. Dès que le récepteur renvoie une réponse, le bus la transmet à l'émetteur dans un message de réponse. Si le récepteur ne répond pas dans un temps fixé, le bus envoie automatiquement un message time-out à l'émetteur.
Messages multi-way
Les messages multi-way sont comme les messages one-way sauf qu'ils sont envoyés à tous les processus qui se sont enregistrés dans le domaine spécifié. Le bus retourne un message de réponse vide si un processus destinataire a été trouvé et si toutes les données ont pu être transmises. Si aucun processus n'est actuellement enregistré dans le domaine spécifié, un message nobody est retourné.
Commentaires