# Patron de communication

Dans l'architecture logicielle, un patron de communication est un patron d'architecture orienté réseau qui décrit comment deux parties d'un système de passage de message se connectent et communiquent l'une avec l'autre.
En télécommunication, un patron d'échange de message (MEP) décrit le patron d'un message requis par un protocole de communication pour établir ou utiliser Canal de communication. Il y a deux patrons d'échange de message principaux — le patron requête-réponse, et le patron sens unique (one-way). Par exemple, HTTP est de type requête-réponse, et UDP est de type chemin unique (one-way).

## SOAP

Le terme « Patron d'échange de message » a un sens spécifique au sein du Simple Object Access protocol (SOAP)$^,$. Les types de MEP SOAP incluent :
* Entrée seulement (In-only) : Équivalent au sens-unique. Un échange de messages à sens-unique standard où le client envoie un message au serveur qui lui renvoie seulement un message de statut.
* Entrée seulement, robuste (Robust In-Only) : Ce patron sert aux échanges de messages à sens unique fiables. Le client initie l'échange avec un message auquel le serveur répond avec un statut. Si la réponse est un statut, le message est complet, sinon le client doit répondre avec un statut.
* Entrée-Sortie (In-Out) : Équivalent au requête-réponse. Un échange de messages bidirectionnel standard où le client initie avec un message, le serveur répond avec un message ou une erreur et le client répond avec un statut.
* Entrée-Sortie optionnelle (In-Optional-Out) : Un échange de messages bidirectionnel standard où la réponse par le serveur est optionnelle.
* Sortie seulement (Out-Only) : L'inverse d'une Entrée seulement. Supporte la notification d’événement. Ne peut pas déclencher de message d'erreur.
* Sortie robuste seulement (Robust Out-Only) : Similaire au patron de Sortie seulement, mais peut déclencher un message d'erreur. Le message sortant initialise l'échange.
* Sortie-Entrée (Out-In) : L'inverse d'un Entrée-Sortie. Le serveur transmet la requête et initialise l'échange.
* Sortie-Entrée optionnelle (Out-Optional-In) : L'inverse d'un Entrée-Sortie optionnelle. Le serveur produit un message sortant. Le message entrant est optionnel.

## ØMQ

La librairie ØMQ fournit des ports (sockets) qui nécessitent l'utilisation au choix d'un des patrons de message, et qui sont optimisés pour ces patrons spécifiquement. Les patrons de ØMQ sont :
* Request–reply : connecte un ensemble de clients à un ensemble de serveurs. C'est un appel de procédure à distance et un patron de distribution de tâches.
* Publish–subscribe : connecte un ensemble d'éditeurs avec un ensemble d'abonnés. C'est un patron de distribution de données.
* Push–pull : connecte des nœuds dans un patron fan-out / fan-in qui peut être en plusieurs étapes/boucles. C'est un patron de distribution de tâches parallèles et de collection.
* Exclusive pair : connecte deux ports de manière exclusive. C'est un patron de bas niveau pour des cas d'utilisations spécifiques et avancées.
Chaque patron définit une topologie, une configuration réseau particulière. Request-reply est un « bus de service », publish-subscriber un « arbre de distribution de données », push-pull un « pipeline parallélisé ». Tous les patrons ont été conçus délibérément de manière à être utilisables à n'importe quelle échelle, pour Internet.