Communication inter-processus

Communication inter-processus

À certains moments, les applications échangent parfois des données entre elles. La communication inter-processus (ou IPC) est le partage de données entre des programmes en cours d’exécution, appelée processus. Elle peut être établie sur la même machine ou des hôtes différents. Il y a plusieurs approches.

La communication par socket entre deux applications est un mécanisme utilisé par Internet. Chacun crée son point de terminaison pour recevoir et envoyer des données sur le réseau. Généralement, le modèle utilisé est un client-serveur : une application a un service, et une autre l’appelle. Le world wide web (www) et les services web, REST ou SOAP reposent sur des sockets.

Couramment utilisée en programmation orientée objet, la technique message passing (moderne) est l’appel d’une méthode sur un objet pour exécuter un code encapsulé. On dit que l’on passe un message à un objet, car on donne le nom de la méthode et les paramètres d’entrée. Il est possible de distribuer le message à travers le réseau pour invoquer une méthode dans une autre application, en utilisant le protocole RPC (Remote Procedure Call) par exemple.

La file de messages, ou message queue en anglais est un composant qui permet de communiquer entre les processus ou les threads grâce à une file d’attente. Les messages sont produits ou consommés dans la file d’attente par plusieurs unités d’exécution. Le fonctionnement est typiquement asynchrone. Pour mettre en place une file de messages entre plusieurs applications, on utilise les logiciels appelés MOM (message-oriented middleware). RabbitMQ en est un.

Tous ces mécanismes ont la même finalité, à communiquer entre des programmes, mais seront choisis en fonction du contexte lors du développement d’une application. Le socket a la capacité à fonctionner avec beaucoup de produits (interopérabilité). Transparent, le message passing reste proche de la programmation. Et la message queue supprime les communications directes entre les applications, parfait pour la scalabilité.

Laisser un commentaire