🔗 Dans la jungle des IPCs

| ~ 4 mins | 788 mots

Introduction

Dans les programmes informatiques, les IPCs sont partout et de types trĂšs divers.

Pour rappel, il s’agit lĂ  de diverses technologies qui permettent Ă  plusieurs processus de communiquer entre deux (comprendre : se partager des donnĂ©es).

Il y a, Ă  mon sens 2 niveaux d’IPCs :

Si l’on comprend les IPC “haut-niveau”, les technologies de communications entre processus sont trĂšs nombreuses et il n’est pas toujours si simple de savoir quoi utiliser, ce qui abouti dans de nombreux cas Ă  utiliser les technologies connu plutĂŽt qu’une Ă©ventuelle meilleure technologie pour le cas d’usage.

Bref, j’avais du temps Ă  perdre et j’ai donc rĂ©alisĂ© un petit programme nommĂ© Universal Ping, ou j’ai testĂ© plus des dizaines d’IPC avec ces contraintes :

J’en ai profitĂ© pour essayer de clarifier dans ma tĂȘte tout cela. Voici donc ma façon, sous forme d’arbres de dĂ©cisions de prĂ©senter la diversitĂ© des ces IPCs :

Quel IPC Choisir ?

J’ai organisĂ© les IPCs autour d’un point qui me semble assez important : L’IPC fournit-elle une API ? Et si oui, est-elle prĂ©vu pour ĂȘtre utilisĂ© publiquement (comprendre par des programmes totalement extĂ©rieurs sans difficultĂ©s).

J’ai donc sĂ©parĂ© les IPC en trois catĂ©gories :

  1. Les IPCs conçu pour fournir une API “publique” explicite.
  2. Les IPCs conçu pour fournir une API “privĂ©e” explicite (plutĂŽt conçu pour une application en plusieurs parties).
  3. Les IPCs sans support intĂ©grĂ© de mĂ©canisme d’API.

Note : Il s’agit lĂ  d’une organisation subjective. Bien Ă©videmment, il est toujours tout Ă  fait possible d’utilisĂ© une IPC sans mĂ©canisme d’API et d’ajouter une documentation d’une API et/ou un sur-couche logicielle qui gĂšrerait l’API, mais cela sera moins “standard” qu’une technologie qui est conçue dans ce but.

API Publique

Si je veux concevoir un logiciel sur lequel d’autres logiciels peuvent se brancher, c’est vers ces solutions que je me tournerais :

ipc avec api publique

API Privée

Si je devais faire un logiciel “en plusieurs parties”, ces solutions sont Ă©lĂ©gantes :

ipc avec api publique

L’aspect API est particuliĂšrement intĂ©ressant si vous voulez travailler Ă  plusieurs sur diffĂ©rente partie sans vous marcher dessus.

Les autres IPCs

Ces technos requiĂšrent une clarification d’API entre les diffĂ©rents processus utilisant la technologie pour ĂȘtre utilisĂ© convenablement. Cependant, elles sont pour beaucoup simple d’accĂšs et n’ont pas forcĂ©ment les mĂȘmes avantages que les technologies prĂ©cĂ©dentes, je pense en particulier :

Certaines ont aussi des cas d’usage trĂšs dĂ©fini et sont quasi-imbattable dans ce cadre prĂ©cis, je pense en particulier Ă  MQTT pour des capteurs. L’absence d’API clarifiĂ© n’est pas forcĂ©ment un gros soucis notamment ll est trĂšs facile de regarder le flux avec un outil comme MqttExplorer et que les avantages du protocole surpassent cet inconvĂ©nient mineur pour ce cas d’usage.

ipc avec api publique

Mon avis ?

En faisant ce petit test de divers IPC, il y a clairement des technologies que j’apprĂ©cie plus que d’autres :

👋 VoilĂ , VoilĂ , plus qu’à trouver des cas d’usage concrĂȘt pour jouer avec plus de ces technos 😅 !