Partager via


Communications interprocesseurs

Le système d’exploitation Windows fournit des mécanismes pour 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 interprocessus (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 en tant que clients ou serveurs. Un client est une application ou un processus qui demande un service à 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, selon 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 à 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é.

Une fois que vous avez décidé que votre application tirerait parti d’IPC, vous devez choisir parmi les méthodes CIB disponibles à utiliser. Il est probable qu’une application utilise plusieurs mécanismes de CIB. Les réponses à ces questions déterminent si une application peut tirer parti d’un ou de 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-il suffisant pour l’application de communiquer uniquement avec les applications sur l’ordinateur local ?
  • L’application doit-elle être en mesure de communiquer avec des applications s’exécutant sur d’autres ordinateurs qui peuvent s’exécuter sous différents systèmes d’exploitation (par exemple, 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, par exemple en autorisant les opérations de coupe-collage avec toute 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 sont-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 sert de dépôt central pour le partage de données entre les applications. Lorsqu’un utilisateur effectue une opération de coupe ou de copie 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’être d’accord sur le format des 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 les formats de données qu’elles comprennent. Par exemple, un éditeur de texte ou un traitement de texte doit 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 les documents composés, c’est-à-dire les documents constitués de données provenant d’une variété d’applications différentes. OLE fournit des services qui permettent aux applications d’appeler facilement 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 la feuille de calcul automatiquement à partir du traitement de texte en choisissant le graphique incorporé à modifier. OLE s’occupe du démarrage de la feuille de calcul et de la présentation du graphique à modifier. Lorsque l’utilisateur quitte la feuille de calcul, le graphe 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 d’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, lorsqu’elles sont choisies, 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 Services d’objets COM et ActiveX.

Utilisation de la copie de données pour IPC

La copie de 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 émettrice et l’application de réception. L’application destinataire doit connaître le format des informations et être en mesure d’identifier l’expéditeur. L’application émettrice ne peut pas modifier la mémoire référencée par les pointeurs.

Point clé : La 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 des échanges de données ponctuels ou pour des échanges en cours dans lesquels les applications se mettent à jour les unes les autres à mesure que de nouvelles données deviennent disponibles.

Les formats de données utilisés par DDE sont les mêmes que 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, comme le choix de la commande Coller dans un menu. DDE est également généralement initié par une commande utilisateur, mais il continue souvent de fonctionner sans autre interaction de l’utilisateur. Vous pouvez également définir des formats de données DDE personnalisés pour un IPC à usage spécial entre des applications avec des exigences de communication plus étroitement couplées.

Les échanges DDE peuvent se produire entre des applications s’exécutant sur le même ordinateur ou sur différents ordinateurs d’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 sont pas appropriés ou si vous devez interfacer avec une application existante qui prend uniquement en charge DDE. Pour plus d’informations, consultez Dynamic Data Exchange et Dynamic Data Exchange Management Library.

Utilisation d’un mappage de fichiers pour IPC

Le 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 plusieurs processus 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 une mémoire partagée nommée entre les processus. Si vous spécifiez le fichier d’échange de 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 l’altération non autorisée des données. Le mappage de fichiers ne peut être utilisé qu’entre des processus sur un ordinateur local ; il ne peut pas être utilisé sur un réseau.

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

Utilisation d’un maillot pour IPC

Les mailslots fournissent une communication unidirectionnelle. Tout processus qui crée un maillot est un serveur maillot. D’autres processus, appelés clients 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 ait lus. Un processus peut être à la fois un serveur de maillot et un client maillot, de sorte qu’une 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 dans tous les mailslots 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 des messages spécifiée par le serveur maillot lors de la création du maillot.

Point clé : Les 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. Les canaux anonymes permettent 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 lit à partir de celui-ci. Les canaux anonymes ne peuvent pas être utilisés sur un réseau, ni entre des processus non liés.

Les canaux nommés sont utilisés pour transférer des données entre des processus qui ne sont pas des processus connexes et entre des processus sur différents ordinateurs. En règle générale, un processus de serveur de canal nommé crée un canal nommé avec un nom connu ou un nom qui doit être communiqué à ses clients. Un processus client de canal 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é : Les canaux anonymes fournissent un moyen efficace de rediriger l’entrée ou la sortie 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’ils résident sur le même ordinateur ou sur un réseau. Pour plus d’informations, consultez Canaux.

Utilisation de RPC pour IPC

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

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

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

Point clé : RPC est une interface au niveau des fonctions, qui prend en charge la conversion automatique des données et les communications avec d’autres systèmes d’exploitation. À l’aide de RPC, vous pouvez créer des applications distribuées hautes performances et étroitement couplées. Pour plus d’informations, consultez Composants Microsoft RPC.

Utilisation de sockets Windows pour IPC

Les sockets Windows sont une interface indépendante du protocole. Il 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.

Les sockets Windows sont basés sur les sockets popularisés par Berkeley Software Distribution (BSD). Une application qui utilise des sockets Windows peut communiquer avec d’autres implémentations de socket 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é : Les sockets Windows sont une interface indépendante du protocole capable de prendre en charge les fonctionnalités réseau actuelles et émergentes. Pour plus d’informations, consultez Sockets Windows 2.