Partager via


Communications interprocesseurs

Le système d’exploitation Windows fournit des mécanismes permettant de faciliter les communications et le partage de données entre les applications. Collectivement, les activités activées par ces mécanismes sont appelées communications interprocesseurs (IPC). Certaines formes d’IPC facilitent la division du travail entre plusieurs processus spécialisés. D’autres formes d’IPC facilitent la division du travail entre ordinateurs sur un réseau.

En règle générale, les applications peuvent utiliser IPC classés comme clients ou serveurs. Un client est une application ou un processus qui demande un service d’une autre application ou processus. Un serveur est une application ou un processus qui répond à une demande cliente. De nombreuses applications agissent à la fois en tant que client et serveur, en fonction de la situation. Par exemple, une application de traitement de texte peut agir en tant que client pour demander une table récapitulative des coûts de fabrication d’une application de feuille de calcul agissant en tant que serveur. L’application de feuille de calcul, à son tour, peut agir en tant que client pour demander les derniers niveaux d’inventaire à partir d’une application de contrôle d’inventaire automatisée.

Une fois que vous avez décidé que votre application tirerait parti de l’IPC, vous devez décider des méthodes IPC disponibles à utiliser. Il est probable qu’une application utilise plusieurs mécanismes IPC. Les réponses à ces questions déterminent si une application peut bénéficier à l’aide d’un ou plusieurs mécanismes IPC.

  • L’application doit-elle être en mesure de communiquer avec d’autres applications s’exécutant sur d’autres ordinateurs sur un réseau ou est-elle suffisante pour que l’application communique uniquement avec les applications sur l’ordinateur local ?
  • L’application doit-elle pouvoir communiquer avec les applications s’exécutant sur d’autres ordinateurs qui peuvent s’exécuter sous différents systèmes d’exploitation (comme Windows ou UNIX 16 bits) ?
  • L’utilisateur de l’application doit-il choisir les autres applications avec lesquelles l’application communique, ou l’application peut-elle trouver implicitement ses partenaires coopérants ?
  • L’application doit-elle communiquer avec de nombreuses applications différentes de manière générale, comme autoriser les opérations couper-coller avec une autre application, ou ses exigences de communication doivent-elles être limitées à un ensemble restreint d’interactions avec d’autres applications spécifiques ?
  • Les performances constituent-ils un aspect critique de l’application ? Tous les mécanismes IPC incluent une certaine surcharge.
  • L’application doit-elle être une application GUI ou une application console ? Certains mécanismes IPC nécessitent une application GUI.

Les mécanismes IPC suivants sont pris en charge par Windows :

Utilisation du Presse-papiers pour IPC

Le Presse-papiers agit comme un dépôt central pour le partage de données entre les applications. Lorsqu’un utilisateur effectue une opération couper ou copier dans une application, l’application place les données sélectionnées dans le Presse-papiers dans un ou plusieurs formats standard ou définis par l’application. Toute autre application peut ensuite récupérer les données du Presse-papiers, en choisissant parmi les formats disponibles qu’elle comprend. Le Presse-papiers est un support d’échange très faiblement couplé, où les applications n’ont besoin que d’accepter le format de données. Les applications peuvent résider sur le même ordinateur ou sur différents ordinateurs sur un réseau.

point clé : toutes les applications doivent prendre en charge le Presse-papiers pour ces formats de données qu’elles comprennent. Par exemple, un éditeur de texte ou un traitement de texte doivent au moins être en mesure de produire et d’accepter des données du Presse-papiers au format texte pur. Pour plus d’informations, consultez Presse-papiers.

Utilisation de COM pour IPC

Les applications qui utilisent OLE gèrent documents composés, c’est-à-dire des documents constitués de données provenant de diverses applications. OLE fournit des services qui facilitent l’appel d’applications à d’autres applications pour la modification des données. Par exemple, un traitement de texte qui utilise OLE peut incorporer un graphique à partir d’une feuille de calcul. L’utilisateur peut démarrer automatiquement la feuille de calcul à partir du processeur de texte en choisissant le graphique incorporé pour modification. OLE s’occupe du démarrage de la feuille de calcul et de la présentation du graphique pour modification. Lorsque l’utilisateur quitte la feuille de calcul, le graphique est mis à jour dans le document de traitement de texte d’origine. La feuille de calcul semble être une extension du traitement de texte.

La base d’OLE est le modèle objet de composant (COM). Un composant logiciel qui utilise COM peut communiquer avec un large éventail d’autres composants, même ceux qui n’ont pas encore été écrits. Les composants interagissent en tant qu’objets et clients. Distributed COM étend le modèle de programmation COM afin qu’il fonctionne sur un réseau.

point clé : OLE prend en charge les documents composés et permet à une application d’inclure des données incorporées ou liées qui démarrent automatiquement une autre application pour la modification des données. Cela permet à l’application d’être étendue par toute autre application qui utilise OLE. Les objets COM permettent d’accéder aux données d’un objet via un ou plusieurs ensembles de fonctions associées, appelées interfaces . Pour plus d’informations, consultez COM et ActiveX Object Services.

Utilisation de la copie de données pour IPC

La copie des données permet à une application d’envoyer des informations à une autre application à l’aide du message WM_COPYDATA. Cette méthode nécessite une coopération entre l’application d’envoi et l’application de réception. L’application de réception doit connaître le format des informations et être en mesure d’identifier l’expéditeur. L’application d’envoi ne peut pas modifier la mémoire référencée par des pointeurs.

point clé : copie de données peut être utilisée pour envoyer rapidement des informations à une autre application à l’aide de la messagerie Windows. Pour plus d’informations, consultez copie de données.

Utilisation de DDE pour IPC

DDE est un protocole qui permet aux applications d’échanger des données dans différents formats. Les applications peuvent utiliser DDE pour les échanges de données ponctuels ou pour les échanges continus dans lesquels les applications se mettent à jour à mesure que de nouvelles données sont disponibles.

Les formats de données utilisés par DDE sont identiques à ceux utilisés par le Presse-papiers. DDE peut être considéré comme une extension du mécanisme du Presse-papiers. Le Presse-papiers est presque toujours utilisé pour une réponse ponctuelle à une commande utilisateur, telle que le choix de la commande Coller dans un menu. DDE est également généralement initié par une commande utilisateur, mais il continue souvent à fonctionner sans interaction utilisateur supplémentaire. Vous pouvez également définir des formats de données DDE personnalisés à usage spécial entre les applications avec des exigences de communication plus étroitement couplées.

Les échanges DDE peuvent se produire entre les applications s’exécutant sur le même ordinateur ou sur différents ordinateurs sur un réseau.

point clé : DDE n’est pas aussi efficace que les technologies plus récentes. Toutefois, vous pouvez toujours utiliser DDE si d’autres mécanismes IPC ne conviennent pas ou si vous devez interagir avec une application existante qui prend uniquement en charge DDE. Pour plus d’informations, consultez dynamic Data Exchange et bibliothèque de gestion Dynamic Data Exchange.

Utilisation d’un mappage de fichiers pour IPC

mappage de fichiers permet à un processus de traiter le contenu d’un fichier comme s’il s’agissait d’un bloc de mémoire dans l’espace d’adressage du processus. Le processus peut utiliser des opérations de pointeur simples pour examiner et modifier le contenu du fichier. Lorsque deux processus ou plus accèdent au même mappage de fichiers, chaque processus reçoit un pointeur vers la mémoire dans son propre espace d’adressage qu’il peut utiliser pour lire ou modifier le contenu du fichier. Les processus doivent utiliser un objet de synchronisation, tel qu’un sémaphore, pour empêcher l’altération des données dans un environnement multitâche.

Vous pouvez utiliser un cas spécial de mappage de fichiers pour fournir mémoire partagée nommée entre les processus. Si vous spécifiez le fichier d’échange système lors de la création d’un objet de mappage de fichiers, l’objet de mappage de fichiers est traité comme un bloc de mémoire partagée. D’autres processus peuvent accéder au même bloc de mémoire en ouvrant le même objet de mappage de fichiers.

Le mappage de fichiers est très efficace et fournit également des attributs de sécurité pris en charge par le système d’exploitation qui peuvent aider à empêcher toute altération non autorisée des données. Le mappage de fichiers ne peut être utilisé qu’entre les processus d’un ordinateur local ; il ne peut pas être utilisé sur un réseau.

point clé : mappage de fichiers est un moyen efficace pour deux processus ou plus sur le même ordinateur de partager des données, mais vous devez fournir la synchronisation entre les processus. Pour plus d’informations, consultez de mappage de fichiers et de synchronisation.

Utilisation d’un Maillot pour IPC

Les mailslots fournissent une communication unidirectionnelle. Tout processus qui crée un maillot est un serveur mailslot. D’autres processus, appelés clients de maillot, envoient des messages au serveur maillot en écrivant un message dans son maillot. Les messages entrants sont toujours ajoutés au maillot. Le maillot enregistre les messages jusqu’à ce que le serveur maillot les lise. Un processus peut être à la fois un serveur maillot et un client maillot, de sorte que la communication bidirectionnelle est possible à l’aide de plusieurs mailslots.

Un client maillot peut envoyer un message à un maillot sur son ordinateur local, à un maillot sur un autre ordinateur ou à tous les mailslots portant le même nom sur tous les ordinateurs d’un domaine réseau spécifié. Les messages diffusés sur tous les maillots d’un domaine ne peuvent pas dépasser 400 octets, tandis que les messages envoyés à un seul maillot sont limités uniquement par la taille maximale de message spécifiée par le serveur maillot lors de la création du maillot.

point clé : Mailslots offrent un moyen simple pour les applications d’envoyer et de recevoir des messages courts. Ils permettent également de diffuser des messages sur tous les ordinateurs d’un domaine réseau. Pour plus d’informations, consultez Mailslots.

Utilisation de canaux pour IPC

Il existe deux types de canaux pour la communication bidirectionnelle : les canaux anonymes et les canaux nommés. canaux anonymes permettre aux processus associés de transférer des informations entre eux. En règle générale, un canal anonyme est utilisé pour rediriger l’entrée ou la sortie standard d’un processus enfant afin qu’il puisse échanger des données avec son processus parent. Pour échanger des données dans les deux sens (opération duplex), vous devez créer deux canaux anonymes. Le processus parent écrit des données dans un canal à l’aide de son handle d’écriture, tandis que le processus enfant lit les données de ce canal à l’aide de son handle de lecture. De même, le processus enfant écrit des données dans l’autre canal et le processus parent lise à partir de celui-ci. Les canaux anonymes ne peuvent pas être utilisés sur un réseau, ni être utilisés entre des processus non liés.

canaux nommés sont utilisés pour transférer des données entre les processus qui ne sont pas liés et entre les processus sur différents ordinateurs. En règle générale, un processus de serveur nommé crée un canal nommé avec un nom connu ou un nom qui doit être communiqué à ses clients. Un processus client nommé qui connaît le nom du canal peut ouvrir son autre extrémité, sous réserve des restrictions d’accès spécifiées par le processus de serveur de canal nommé. Une fois que le serveur et le client se sont connectés au canal, ils peuvent échanger des données en effectuant des opérations de lecture et d’écriture sur le canal.

point clé : canaux anonymes offrent un moyen efficace de rediriger les entrées ou sorties standard vers des processus enfants sur le même ordinateur. Les canaux nommés fournissent une interface de programmation simple pour transférer des données entre deux processus, qu’elles résident sur le même ordinateur ou sur un réseau. Pour plus d’informations, consultez Pipes.

Utilisation de RPC pour IPC

RPC permet aux applications d’appeler des fonctions à distance. Par conséquent, RPC facilite l’appel d’une fonction par IPC. RPC fonctionne entre les processus sur un seul ordinateur ou sur différents ordinateurs sur un réseau.

Le RPC fourni par Windows est conforme à l’environnement DCE (Distributed Computing Environment) Open Software Foundation (OSF). Cela signifie que les applications qui utilisent RPC sont en mesure de communiquer avec les applications s’exécutant avec d’autres systèmes d’exploitation qui prennent en charge DCE. RPC prend automatiquement en charge la conversion de données en compte pour différentes architectures matérielles et pour l’ordre des octets entre les environnements dissimilar.

Les clients et serveurs RPC sont étroitement couplés, mais conservent toujours des performances élevées. Le système utilise largement RPC pour faciliter une relation client/serveur entre différentes parties du système d’exploitation.

point clé : RPC est une interface de niveau fonction, avec prise en charge de la conversion automatique des données et des communications avec d’autres systèmes d’exploitation. À l’aide de RPC, vous pouvez créer des applications distribuées hautement performantes et étroitement couplées. Pour plus d’informations, consultez Microsoft RPC Components.

Utilisation de Windows Sockets pour IPC

Windows Sockets est une interface indépendante du protocole. Elle tire parti des fonctionnalités de communication des protocoles sous-jacents. Dans Windows Sockets 2, un handle de socket peut éventuellement être utilisé comme handle de fichier avec les fonctions d’E/S de fichier standard.

Windows Sockets est basé sur les sockets d’abord popularisés par Berkeley Software Distribution (BSD). Une application qui utilise Windows Sockets peut communiquer avec d’autres implémentations de sockets sur d’autres types de systèmes. Toutefois, tous les fournisseurs de services de transport ne prennent pas en charge toutes les options disponibles.

point clé : Windows Sockets est une interface indépendante du protocole capable de prendre en charge les fonctionnalités de mise en réseau actuelles et émergentes. Pour plus d’informations, consultez Windows Sockets 2.

Fonction de socket unix (AF_UNIX) dans Windows

À compter de Windows Insider Build 17063, vous pouvez utiliser la famille d’adresses de socket unix (AF_UNIX) sur Windows pour communiquer entre les processus Win32. Les sockets Unix permettent une communication entre processus (IPC) entre les processus sur le même ordinateur. Pour plus d’informations, consultez le billet de blog AF_UNIX vient à Windows.

Dépréciation du protocole Remote Mailslot

À compter de Windows 11 Insider Preview Build 25314 et Windows Server Preview Build 25314, nous avons commencé à désactiver le protocole Remote Mailslot par défaut. Il s’agit d’un précurseur de la dépréciation et de la suppression éventuelle de Windows. Pour plus d’informations, consultez le billet de blog Le début de la fin des courriers distants dans le cadre de Windows Insider.