Delen via


Communicatie tussen processen

Het Windows-besturingssysteem biedt mechanismen voor het faciliteren van communicatie en het delen van gegevens tussen toepassingen. Gezamenlijk worden de activiteiten die door deze mechanismen worden ingeschakeld, interprocess communications (IPC) genoemd. Sommige vormen van IPC faciliteren de verdeling van arbeid tussen verschillende gespecialiseerde processen. Andere vormen van IPC vergemakkelijken de verdeling van arbeid tussen computers in een netwerk.

Normaal gesproken kunnen toepassingen IPC gebruiken die zijn gecategoriseerd als clients of servers. Een -client is een toepassing of een proces dat een service aanvraagt bij een andere toepassing of een ander proces. Een -server is een toepassing of een proces dat reageert op een clientaanvraag. Veel toepassingen fungeren als zowel een client als een server, afhankelijk van de situatie. Een tekstverwerkingstoepassing kan bijvoorbeeld fungeren als een client bij het aanvragen van een overzichtstabel met productiekosten van een spreadsheettoepassing die fungeert als een server. De spreadsheettoepassing kan op zijn beurt fungeren als een client bij het aanvragen van de nieuwste voorraadniveaus van een geautomatiseerde toepassing voor voorraadbeheer.

Nadat u hebt besloten dat uw toepassing baat heeft bij IPC, moet u beslissen welke van de beschikbare IPC-methoden u wilt gebruiken. Het is waarschijnlijk dat een toepassing gebruikmaakt van verschillende IPC-mechanismen. De antwoorden op deze vragen bepalen of een toepassing voordeel kan hebben met behulp van een of meer IPC-mechanismen.

  • Moet de toepassing kunnen communiceren met andere toepassingen die worden uitgevoerd op andere computers in een netwerk, of is het voldoende om de toepassing alleen te laten communiceren met toepassingen op de lokale computer?
  • Moet de toepassing kunnen communiceren met toepassingen die worden uitgevoerd op andere computers die mogelijk worden uitgevoerd onder verschillende besturingssystemen (zoals 16-bits Windows of UNIX)?
  • Moet de gebruiker van de toepassing de andere toepassingen kiezen waarmee de toepassing communiceert, of kan de toepassing impliciet de medewerkende partners vinden?
  • Moet de toepassing op een algemene manier communiceren met veel verschillende toepassingen, zoals het toestaan van knip- en plakbewerkingen met een andere toepassing, of moet de communicatievereisten worden beperkt tot een beperkte set interacties met specifieke andere toepassingen?
  • Is de prestaties een essentieel aspect van de toepassing? Alle IPC-mechanismen omvatten enige overhead.
  • Moet de toepassing een GUI-toepassing of een consoletoepassing zijn? Voor sommige IPC-mechanismen is een GUI-toepassing vereist.

De volgende IPC-mechanismen worden ondersteund door Windows:

Het Klembord voor IPC gebruiken

Het Klembord fungeert als centrale opslagplaats voor het delen van gegevens tussen toepassingen. Wanneer een gebruiker een knip- of kopieerbewerking uitvoert in een toepassing, worden de geselecteerde gegevens op het klembord in een of meer standaard- of toepassingsgedefinieerde indelingen geplaatst. Elke andere toepassing kan vervolgens de gegevens ophalen van het Klembord en kiezen uit de beschikbare indelingen die het begrijpt. Het Klembord is een zeer losjes gekoppeld uitwisselingsmedium, waarbij toepassingen alleen akkoord hoeven te gaan met de gegevensindeling. De toepassingen kunnen zich op dezelfde computer of op verschillende computers in een netwerk bevinden.

sleutelpunt: Alle toepassingen moeten het klembord ondersteunen voor de gegevensindelingen die ze begrijpen. Een teksteditor of tekstverwerker moet bijvoorbeeld in ieder geval klembordgegevens in pure tekstindeling kunnen produceren en accepteren. Zie Klembordvoor meer informatie.

COM voor IPC gebruiken

Toepassingen die OLE gebruiken, beheren samengestelde documenten, dat wil gezegd documenten die bestaan uit gegevens uit verschillende toepassingen. OLE biedt services waarmee toepassingen eenvoudig andere toepassingen kunnen aanroepen voor het bewerken van gegevens. Een tekstverwerker die gebruikmaakt van OLE kan bijvoorbeeld een grafiek uit een spreadsheet insluiten. De gebruiker kan het werkblad automatisch starten vanuit de tekstverwerker door de ingesloten grafiek te kiezen om te bewerken. OLE zorgt ervoor dat het werkblad wordt gestart en de grafiek wordt weergegeven voor bewerking. Wanneer de gebruiker het werkblad afsluit, wordt de grafiek bijgewerkt in het oorspronkelijke document voor tekstverwerker. Het werkblad lijkt een uitbreiding van de tekstverwerker te zijn.

De basis van OLE is het Component Object Model (COM). Een softwareonderdeel dat COM gebruikt, kan communiceren met een groot aantal andere onderdelen, zelfs met onderdelen die nog niet zijn geschreven. De onderdelen communiceren als objecten en clients. Gedistribueerde COM breidt het COM-programmeermodel uit zodat het in een netwerk werkt.

sleutelpunt: OLE ondersteunt samengestelde documenten en stelt een toepassing in staat om ingesloten of gekoppelde gegevens op te nemen die, indien gekozen, automatisch een andere toepassing voor het bewerken van gegevens start. Hierdoor kan de toepassing worden uitgebreid door elke andere toepassing die gebruikmaakt van OLE. COM-objecten bieden toegang tot de gegevens van een object via een of meer sets gerelateerde functies, ook wel interfacesgenoemd. Zie COM en ActiveX Object Services voor meer informatie.

Gegevens kopiëren voor IPC gebruiken

Met gegevenskopie kan een toepassing informatie naar een andere toepassing verzenden met behulp van het WM_COPYDATA bericht. Deze methode vereist samenwerking tussen de verzendende toepassing en de ontvangende toepassing. De ontvangende toepassing moet de indeling van de informatie kennen en de afzender kunnen identificeren. De verzendende toepassing kan het geheugen waarnaar wordt verwezen door verwijzingen niet wijzigen.

sleutelpunt: gegevenskopie kan worden gebruikt om snel informatie naar een andere toepassing te verzenden met Behulp van Windows Messaging. Zie Data Copyvoor meer informatie.

DDE voor IPC gebruiken

DDE is een protocol waarmee toepassingen gegevens kunnen uitwisselen in verschillende indelingen. Toepassingen kunnen DDE gebruiken voor eenmalige gegevensuitwisseling of voor doorlopende uitwisselingen waarbij de toepassingen elkaar bijwerken zodra er nieuwe gegevens beschikbaar komen.

De gegevensindelingen die door DDE worden gebruikt, zijn hetzelfde als de indelingen die door het klembord worden gebruikt. DDE kan worden beschouwd als een uitbreiding van het klembordmechanisme. Het Klembord wordt bijna altijd gebruikt voor een eenmalige reactie op een gebruikersopdracht, zoals het kiezen van de opdracht Plakken in een menu. DDE wordt meestal ook geïnitieerd door een gebruikersopdracht, maar blijft vaak functioneren zonder verdere gebruikersinteractie. U kunt ook aangepaste DDE-gegevensindelingen definiëren voor IPC voor speciaal gebruik tussen toepassingen met nauwer gekoppelde communicatievereisten.

DDE-uitwisselingen kunnen optreden tussen toepassingen die op dezelfde computer of op verschillende computers in een netwerk worden uitgevoerd.

belangrijk punt: DDE is niet zo efficiënt als nieuwere technologieën. U kunt DDE echter nog steeds gebruiken als andere IPC-mechanismen niet geschikt zijn of als u een interface moet hebben met een bestaande toepassing die alleen DDE ondersteunt. Zie Dynamic Data Exchange en Dynamic Data Exchange Management Libraryvoor meer informatie.

Een bestandstoewijzing gebruiken voor IPC

bestandstoewijzing stelt een proces in staat om de inhoud van een bestand te behandelen alsof het een blok geheugen in de adresruimte van het proces was. Het proces kan eenvoudige aanwijzerbewerkingen gebruiken om de inhoud van het bestand te onderzoeken en te wijzigen. Wanneer twee of meer processen toegang hebben tot dezelfde bestandstoewijzing, ontvangt elk proces een aanwijzer naar het geheugen in een eigen adresruimte die kan worden gebruikt om de inhoud van het bestand te lezen of te wijzigen. De processen moeten een synchronisatieobject, zoals een semaphore, gebruiken om beschadiging van gegevens in een multitasking-omgeving te voorkomen.

U kunt een speciaal geval van bestandstoewijzing gebruiken om gedeeld geheugen tussen processen op te geven. Als u het systeemwisselingsbestand opgeeft bij het maken van een object voor bestandstoewijzing, wordt het object voor bestandstoewijzing behandeld als een gedeeld geheugenblok. Andere processen hebben toegang tot hetzelfde geheugenblok door hetzelfde object voor bestandstoewijzing te openen.

Bestandstoewijzing is vrij efficiënt en biedt ook door het besturingssysteem ondersteunde beveiligingskenmerken die kunnen helpen bij het voorkomen van beschadiging van onbevoegde gegevens. Bestandstoewijzing kan alleen worden gebruikt tussen processen op een lokale computer; het kan niet worden gebruikt via een netwerk.

sleutelpunt: bestandstoewijzing is een efficiënte manier voor twee of meer processen op dezelfde computer om gegevens te delen, maar u moet wel synchronisatie tussen de processen bieden. Zie bestandstoewijzing en synchronisatievoor meer informatie.

Een Mailslot voor IPC gebruiken

Mailslots bieden communicatie in één richting. Elk proces dat een mailslot maakt, is een mailslotserver. Andere processen, genaamd mailslotclients, verzenden berichten naar de mailslotserver door een bericht naar het mailslot te schrijven. Binnenkomende berichten worden altijd toegevoegd aan het mailslot. Het mailslot slaat de berichten op totdat de mailslotserver ze heeft gelezen. Een proces kan zowel een mailslotserver als een mailslot-client zijn, zodat communicatie in twee richtingen mogelijk is met behulp van meerdere mailslots.

Een mailslot-client kan een bericht verzenden naar een mailslot op de lokale computer, naar een mailslot op een andere computer of naar alle mailslots met dezelfde naam op alle computers in een opgegeven netwerkdomein. Berichten die naar alle mailslots op een domein worden uitgezonden, mogen niet langer zijn dan 400 bytes, terwijl berichten die naar één mailslot worden verzonden, alleen worden beperkt door de maximale berichtgrootte die is opgegeven door de mailslotserver bij het maken van het mailslot.

Sleutelpunt: Mailslots bieden een eenvoudige manier voor toepassingen om korte berichten te verzenden en te ontvangen. Ze bieden ook de mogelijkheid om berichten uit te zenden op alle computers in een netwerkdomein. Zie Mailslotsvoor meer informatie.

Pipes gebruiken voor IPC

Er zijn twee soorten pijpen voor communicatie in twee richtingen: anonieme pijpen en benoemde pijpen. Anonieme pijpen gerelateerde processen in staat stellen om informatie naar elkaar over te dragen. Normaal gesproken wordt een anonieme pijp gebruikt voor het omleiden van de standaardinvoer of uitvoer van een onderliggend proces, zodat deze gegevens kan uitwisselen met het bovenliggende proces. Als u gegevens wilt uitwisselen in beide richtingen (dubbelzijdige bewerking), moet u twee anonieme pijpen maken. Het bovenliggende proces schrijft gegevens naar één pijp met behulp van de schrijfgreep, terwijl het onderliggende proces de gegevens uit die pijp leest met behulp van de leesgreep. Op dezelfde manier schrijft het onderliggende proces gegevens naar de andere pijp en wordt het bovenliggende proces gelezen. Anonieme pijpen kunnen niet via een netwerk worden gebruikt en kunnen ook niet worden gebruikt tussen niet-gerelateerde processen.

named pipes worden gebruikt om gegevens over te dragen tussen processen die geen gerelateerde processen zijn en tussen processen op verschillende computers. Normaal gesproken maakt een serverproces met een benoemde pijp een benoemde pijp met een bekende naam of een naam die moet worden gecommuniceerd met de clients. Een clientproces met een benoemde pijp die de naam van de pijp kent, kan het andere uiteinde openen, afhankelijk van de toegangsbeperkingen die zijn opgegeven door het serverproces named-pipe. Nadat zowel de server als de client verbinding hebben gemaakt met de pijp, kunnen ze gegevens uitwisselen door lees- en schrijfbewerkingen uit te voeren op de pijp.

sleutelpunt: Anonieme pijpen bieden een efficiënte manier om standaardinvoer of uitvoer om te leiden naar onderliggende processen op dezelfde computer. Benoemde pijpen bieden een eenvoudige programmeerinterface voor het overdragen van gegevens tussen twee processen, ongeacht of ze zich op dezelfde computer of via een netwerk bevinden. Zie Pipesvoor meer informatie.

RPC voor IPC gebruiken

Met RPC kunnen toepassingen functies op afstand aanroepen. Daarom maakt RPC IPC net zo eenvoudig als het aanroepen van een functie. RPC werkt tussen processen op één computer of op verschillende computers in een netwerk.

De RPC van Windows voldoet aan de DCE (Open Software Foundation) Distributed Computing Environment (OSF). Dit betekent dat toepassingen die gebruikmaken van RPC kunnen communiceren met toepassingen die worden uitgevoerd met andere besturingssystemen die DCE ondersteunen. RPC ondersteunt automatisch gegevensconversie om rekening te houden met verschillende hardwarearchitecturen en voor bytevolgorde tussen verschillende omgevingen.

RPC-clients en -servers zijn nauw gekoppeld, maar onderhouden nog steeds hoge prestaties. Het systeem maakt uitgebreid gebruik van RPC om een client-/serverrelatie tussen verschillende onderdelen van het besturingssysteem te vergemakkelijken.

sleutelpunt: RPC is een interface op functieniveau, met ondersteuning voor automatische gegevensconversie en communicatie met andere besturingssystemen. Met RPC kunt u krachtige, nauw gekoppelde gedistribueerde toepassingen maken. Zie Microsoft RPC Componentsvoor meer informatie.

Windows Sockets voor IPC gebruiken

Windows Sockets is een protocolonafhankelijke interface. Het maakt gebruik van de communicatiemogelijkheden van de onderliggende protocollen. In Windows Sockets 2 kan een socketgreep eventueel worden gebruikt als bestandsgreep met de standaard I/O-functies van het bestand.

Windows Sockets zijn gebaseerd op de sockets die eerst populair zijn door Berkeley Software Distribution (BSD). Een toepassing die Gebruikmaakt van Windows Sockets kan communiceren met andere socket-implementaties op andere typen systemen. Niet alle transportserviceproviders ondersteunen echter alle beschikbare opties.

sleutelpunt: Windows Sockets is een protocolonafhankelijke interface die de huidige en opkomende netwerkmogelijkheden kan ondersteunen. Zie Windows Sockets 2voor meer informatie.

De unix-socketfunctie (AF_UNIX) in Windows

Vanaf Windows Insider Build 17063 kunt u de unix socket-adresfamilie (AF_UNIX) in Windows gebruiken om te communiceren tussen Win32-processen. Unix-sockets maken communicatie tussen processen (IPC) mogelijk tussen processen op dezelfde computer. Zie de blogpost AF_UNIX komt naar Windowsvoor meer informatie.

De afschaffing van het Remote Mailslot-protocol

Vanaf Windows 11 Insider Preview build 25314 en Windows Server Preview Build 25314 zijn we standaard begonnen met het uitschakelen van het Remote Mailslot-protocol. Dit is een voorloper van afschaffing en uiteindelijke verwijdering van Windows. Zie het blogbericht Het begin van het einde van Remote Mailslots als onderdeel van Windows Insidervoor meer informatie.