Freigeben über


Interprocess communications

Das Windows-Betriebssystem bietet Mechanismen zur Erleichterung der Kommunikation und der Datenfreigabe zwischen Anwendungen. Zusammenfassend werden die durch diese Mechanismen aktivierten Aktivitäten Interprocess Communications (IPC) bezeichnet. Einige Formen von IPC erleichtern die Arbeitsteilung zwischen mehreren spezialisierten Prozessen. Andere Formen des IPC erleichtern die Arbeitsteilung zwischen Computern in einem Netzwerk.

In der Regel können Anwendungen IPC verwenden, die als Clients oder Server kategorisiert sind. Ein Client ist eine Anwendung oder ein Prozess, der einen Dienst von einer anderen Anwendung oder einem anderen Prozess anfordert. Ein Server ist eine Anwendung oder ein Prozess, der auf eine Clientanforderung antwortet. Viele Anwendungen fungieren je nach Situation als Client und Server. Beispielsweise kann eine Textverarbeitungsanwendung als Client fungieren, um eine Zusammenfassende Tabelle der Herstellungskosten aus einer Tabellenkalkulationsanwendung anzufordern, die als Server fungiert. Die Tabellenkalkulationsanwendung kann wiederum als Kunde fungieren, um die neuesten Bestandsebenen aus einer automatisierten Bestandssteuerungsanwendung anzufordern.

Nachdem Sie sich entschieden haben, dass Ihre Anwendung von IPC profitieren würde, müssen Sie entscheiden, welche der verfügbaren IPC-Methoden verwendet werden sollen. Es ist wahrscheinlich, dass eine Anwendung mehrere IPC-Mechanismen verwendet. Die Antworten auf diese Fragen bestimmen, ob eine Anwendung von einem oder mehreren IPC-Mechanismen profitieren kann.

  • Sollte die Anwendung mit anderen Anwendungen kommunizieren können, die auf anderen Computern in einem Netzwerk ausgeführt werden, oder reicht die Anwendung aus, um nur mit Anwendungen auf dem lokalen Computer zu kommunizieren?
  • Sollte die Anwendung mit Anwendungen kommunizieren können, die auf anderen Computern ausgeführt werden, die unter verschiedenen Betriebssystemen (z. B. 16-Bit-Windows oder UNIX) ausgeführt werden können?
  • Sollte der Benutzer der Anwendung die anderen Anwendungen auswählen müssen, mit denen die Anwendung kommuniziert, oder kann die Anwendung implizit ihre kooperierenden Partner finden?
  • Sollte die Anwendung auf allgemeine Weise mit vielen verschiedenen Anwendungen kommunizieren, z. B. das Zulassen von Ausschneiden und Einfügen von Vorgängen mit einer anderen Anwendung, oder sollten ihre Kommunikationsanforderungen auf eine eingeschränkte Gruppe von Interaktionen mit bestimmten anderen Anwendungen beschränkt sein?
  • Ist die Leistung ein wichtiger Aspekt der Anwendung? Alle IPC-Mechanismen enthalten einen gewissen Mehraufwand.
  • Sollte es sich bei der Anwendung um eine GUI-Anwendung oder eine Konsolenanwendung handeln? Einige IPC-Mechanismen erfordern eine GUI-Anwendung.

Die folgenden IPC-Mechanismen werden von Windows unterstützt:

Verwenden der Zwischenablage für IPC

Die Zwischenablage dient als zentrale Verwahrung für die Datenfreigabe zwischen Anwendungen. Wenn ein Benutzer einen Ausschneiden- oder Kopiervorgang in einer Anwendung ausführt, platziert die Anwendung die ausgewählten Daten in der Zwischenablage in einem oder mehreren Standard- oder anwendungsdefinierte Formate. Jede andere Anwendung kann dann die Daten aus der Zwischenablage abrufen und aus den verfügbaren Formaten auswählen, die sie versteht. Die Zwischenablage ist ein sehr lose gekoppeltes Austauschmedium, bei dem Anwendungen nur das Datenformat akzeptieren müssen. Die Anwendungen können sich auf demselben Computer oder auf verschiedenen Computern in einem Netzwerk befinden.

Schlüsselpunkt: Alle Anwendungen sollten die Zwischenablage für diese Datenformate unterstützen, die sie verstehen. Beispielsweise sollte ein Text-Editor oder Textverarbeitungsprogramm zumindest in der Lage sein, Zwischenablagedaten im reinen Textformat zu erstellen und zu akzeptieren. Weitere Informationen finden Sie unter zwischenablage.

Verwenden von COM für IPC

Anwendungen, die OLE verwenden, verwalten zusammengesetzte Dokumente, d. h. Dokumente aus Daten aus einer Vielzahl verschiedener Anwendungen. OLE stellt Dienste bereit, mit denen Anwendungen andere Anwendungen für die Datenbearbeitung aufrufen können. Beispielsweise könnte ein Textverarbeitungsprogramm, das OLE verwendet, ein Diagramm aus einer Kalkulationstabelle einbetten. Der Benutzer kann das Arbeitsblatt automatisch aus dem Textverarbeitungsprogramm starten, indem er das eingebettete Diagramm zur Bearbeitung auswählt. OLE kümmert sich um das Starten der Kalkulationstabelle und die Darstellung des Diagramms zum Bearbeiten. Wenn der Benutzer die Tabelle beendet hat, wird das Diagramm im ursprünglichen Textverarbeitungsdokument aktualisiert. Das Arbeitsblatt scheint eine Erweiterung des Textverarbeitungsprogramms zu sein.

Die Grundlage von OLE ist das Component Object Model (COM). Eine Softwarekomponente, die COM verwendet, kann mit einer Vielzahl anderer Komponenten kommunizieren, auch mit denen, die noch nicht geschrieben wurden. Die Komponenten interagieren als Objekte und Clients. Verteiltes COM erweitert das COM-Programmiermodell, sodass es über ein Netzwerk hinweg funktioniert.

Schlüsselpunkt: OLE unterstützt zusammengesetzte Dokumente und ermöglicht es einer Anwendung, eingebettete oder verknüpfte Daten einzuschließen, die bei auswahl automatisch eine andere Anwendung für die Datenbearbeitung startet. Dadurch kann die Anwendung von jeder anderen Anwendung erweitert werden, die OLE verwendet. COM-Objekte ermöglichen den Zugriff auf die Daten eines Objekts über eine oder mehrere Gruppen verwandter Funktionen, die als Schnittstellenbezeichnet werden. Weitere Informationen finden Sie unter COM- und ActiveX-Objektdienste.

Verwenden der Datenkopie für IPC

Mit der Datenkopie kann eine Anwendung Informationen mithilfe der WM_COPYDATA Nachricht an eine andere Anwendung senden. Diese Methode erfordert die Zusammenarbeit zwischen der sendenden Anwendung und der empfangenden Anwendung. Die empfangende Anwendung muss das Format der Informationen kennen und den Absender identifizieren können. Die sendende Anwendung kann den Speicher, auf den von zeigern verwiesen wird, nicht ändern.

Schlüsselpunkt: Datenkopie kann verwendet werden, um Informationen mithilfe von Windows Messaging schnell an eine andere Anwendung zu senden. Weitere Informationen finden Sie unter Datenkopie.

Verwenden von DDE für IPC

DDE ist ein Protokoll, mit dem Anwendungen Daten in einer Vielzahl von Formaten austauschen können. Anwendungen können DDE für einmaligen Datenaustausch oder für fortlaufenden Austausch verwenden, bei dem die Anwendungen einander aktualisieren, wenn neue Daten verfügbar werden.

Die von DDE verwendeten Datenformate entsprechen denen, die von der Zwischenablage verwendet werden. DDE kann als Erweiterung des Zwischenablagemechanismus betrachtet werden. Die Zwischenablage wird fast immer für eine einmalige Antwort auf einen Benutzerbefehl verwendet, z. B. zum Auswählen des Befehls "Einfügen" aus einem Menü. DDE wird in der Regel auch von einem Benutzerbefehl initiiert, funktioniert aber häufig ohne weitere Benutzerinteraktion weiter. Sie können auch benutzerdefinierte DDE-Datenformate für speziellen IPC zwischen Anwendungen mit enger gekoppelten Kommunikationsanforderungen definieren.

DDE-Austausch kann zwischen Anwendungen auftreten, die auf demselben Computer oder auf verschiedenen Computern in einem Netzwerk ausgeführt werden.

Zentraler Punkt: DDE ist nicht so effizient wie neuere Technologien. Sie können DDE jedoch weiterhin verwenden, wenn andere IPC-Mechanismen nicht geeignet sind oder wenn Sie eine Schnittstelle mit einer vorhandenen Anwendung verwenden müssen, die nur DDE unterstützt. Weitere Informationen finden Sie unter dynamic Data Exchange und Dynamic Data Exchange Management Library.

Verwenden einer Dateizuordnung für IPC

Dateizuordnung ermöglicht es einem Prozess, den Inhalt einer Datei so zu behandeln, als wären sie ein Speicherblock im Adressraum des Prozesses. Der Prozess kann einfache Zeigervorgänge verwenden, um den Inhalt der Datei zu untersuchen und zu ändern. Wenn zwei oder mehr Prozesse auf dieselbe Dateizuordnung zugreifen, empfängt jeder Prozess einen Zeiger auf den Speicher in seinem eigenen Adressbereich, den er zum Lesen oder Ändern des Inhalts der Datei verwenden kann. Die Prozesse müssen ein Synchronisierungsobjekt verwenden, z. B. ein Semaphor, um Datenbeschädigungen in einer Multitaskingumgebung zu verhindern.

Sie können einen speziellen Fall der Dateizuordnung verwenden, um benannten freigegebenen Speicher zwischen Prozessen bereitzustellen. Wenn Sie beim Erstellen eines Dateizuordnungsobjekts die Systemtauschdatei angeben, wird das Dateizuordnungsobjekt als freigegebener Speicherblock behandelt. Andere Prozesse können auf denselben Speicherblock zugreifen, indem sie dasselbe Dateizuordnungsobjekt öffnen.

Die Dateizuordnung ist ziemlich effizient und bietet auch vom Betriebssystem unterstützte Sicherheitsattribute, mit denen nicht autorisierte Datenbeschädigungen verhindert werden können. Dateizuordnung kann nur zwischen Prozessen auf einem lokalen Computer verwendet werden; sie kann nicht über ein Netzwerk verwendet werden.

Schlüsselpunkt: Dateizuordnung ist eine effiziente Möglichkeit für zwei oder mehr Prozesse auf demselben Computer zum Freigeben von Daten, aber Sie müssen die Synchronisierung zwischen den Prozessen bereitstellen. Weitere Informationen finden Sie unter Dateizuordnung und Synchronisierung.

Verwenden eines Mailslots für IPC

Mailslots bieten eine unidirektionale Kommunikation. Jeder Prozess, der einen Maillot erstellt, ist ein Maillot-Server. Andere Prozesse, die Maillot-Clientsgenannt werden, senden Nachrichten an den Maillot-Server, indem sie eine Nachricht an ihren Maillot schreiben. Eingehende Nachrichten werden immer an das Maillot angefügt. Der Maillot speichert die Nachrichten, bis der Maillot-Server sie gelesen hat. Ein Prozess kann sowohl ein Maillot-Server als auch ein Maillot-Client sein, sodass die bidirektionale Kommunikation mit mehreren Maillots möglich ist.

Ein Maillot-Client kann eine Nachricht an einen Maillot auf seinem lokalen Computer an einen Maillot auf einem anderen Computer oder an alle Mailslots mit demselben Namen auf allen Computern in einer bestimmten Netzwerkdomäne senden. Nachrichten, die an alle E-Maillots in einer Domäne übertragen werden, können nicht mehr als 400 Byte betragen, während nachrichten, die an ein einzelnes Maillot gesendet werden, nur durch die maximale Nachrichtengröße begrenzt werden, die vom Maillot-Server beim Erstellen des Maillots angegeben wird.

Schlüsselpunkt: Mailslots bieten eine einfache Möglichkeit für Anwendungen zum Senden und Empfangen von Kurznachrichten. Sie bieten auch die Möglichkeit, Nachrichten auf allen Computern in einer Netzwerkdomäne zu übertragen. Weitere Informationen finden Sie unter Mailslots.

Verwenden von Pipes für IPC

Es gibt zwei Arten von Rohren für die bidirektionale Kommunikation: anonyme Rohre und benannte Rohre. Anonyme Pipes es verwandten Prozessen ermöglichen, Informationen miteinander zu übertragen. In der Regel wird eine anonyme Pipe verwendet, um die Standardeingabe oder -ausgabe eines untergeordneten Prozesses umzuleiten, sodass sie Daten mit dem übergeordneten Prozess austauschen kann. Zum Austauschen von Daten in beide Richtungen (Duplexbetrieb) müssen Sie zwei anonyme Rohre erstellen. Der übergeordnete Prozess schreibt Daten mithilfe des Schreibkästchens in eine Pfeife, während der untergeordnete Prozess die Daten aus dieser Pipe mithilfe des Lesekästchens liest. Ebenso schreibt der untergeordnete Prozess Daten in die andere Pipe, und der übergeordnete Prozess liest daraus. Anonyme Rohre können nicht über ein Netzwerk verwendet werden und können nicht zwischen nicht verwandten Prozessen verwendet werden.

Benannte Rohre werden verwendet, um Daten zwischen Prozessen zu übertragen, die keine zugehörigen Prozesse und zwischen Prozessen auf verschiedenen Computern sind. In der Regel erstellt ein Named-Pipe-Serverprozess eine benannte Pipe mit einem bekannten Namen oder einem Namen, der an seine Clients kommuniziert werden soll. Ein Named-Pipe-Clientprozess, der den Namen der Pipe kennt, kann sein anderes Ende öffnen, vorbehaltlich von Zugriffsbeschränkungen, die durch den Benannten Pipe-Serverprozess angegeben werden. Nachdem sowohl der Server als auch der Client eine Verbindung mit der Pipe hergestellt haben, können sie Daten austauschen, indem sie Lese- und Schreibvorgänge für die Pipe ausführen.

Schlüsselpunkt: Anonyme Rohre bieten eine effiziente Möglichkeit zum Umleiten von Standardeingaben oder -ausgaben an untergeordnete Prozesse auf demselben Computer. Benannte Rohre bieten eine einfache Programmierschnittstelle zum Übertragen von Daten zwischen zwei Prozessen, unabhängig davon, ob sie sich auf demselben Computer oder über ein Netzwerk befinden. Weitere Informationen finden Sie unter Pipes.

Verwenden von RPC für IPC

RPC ermöglicht Anwendungen das Remoteaufrufen von Funktionen. Aus diesem Grund macht RPC IPC so einfach wie das Aufrufen einer Funktion. RPC arbeitet zwischen Prozessen auf einem einzelnen Computer oder auf verschiedenen Computern in einem Netzwerk.

Der von Windows bereitgestellte RPC ist mit der Open Software Foundation (OSF) Distributed Computing Environment (DCE) kompatibel. Dies bedeutet, dass Anwendungen, die RPC verwenden, mit Anwendungen kommunizieren können, die mit anderen Betriebssystemen ausgeführt werden, die DCE unterstützen. RPC unterstützt automatisch die Datenkonvertierung, um unterschiedliche Hardwarearchitekturen und byte-Sortierung zwischen unterschiedlichen Umgebungen zu berücksichtigen.

RPC-Clients und -Server sind eng gekoppelt, halten aber weiterhin eine hohe Leistung aufrecht. Das System nutzt RPC umfassend, um eine Client-/Serverbeziehung zwischen verschiedenen Teilen des Betriebssystems zu erleichtern.

Schlüsselpunkt: RPC ist eine Schnittstelle auf Funktionsebene mit Unterstützung für die automatische Datenkonvertierung und für die Kommunikation mit anderen Betriebssystemen. Mithilfe von RPC können Sie leistungsstarke, eng gekoppelte verteilte Anwendungen erstellen. Weitere Informationen finden Sie unter Microsoft RPC Components.

Verwenden von Windows Sockets für IPC

Windows Sockets ist eine protokollunabhängige Schnittstelle. Es nutzt die Kommunikationsfunktionen der zugrunde liegenden Protokolle. In Windows Sockets 2 kann optional ein Sockethandle als Dateihandle mit den Standardfunktionen für Datei-E/A verwendet werden.

Windows Sockets basieren auf den Sockets, die zuerst von Berkeley Software Distribution (BSD) beliebt sind. Eine Anwendung, die Windows Sockets verwendet, kann mit anderen Socketimplementierungen auf anderen Arten von Systemen kommunizieren. Nicht alle Transportdienstanbieter unterstützen jedoch alle verfügbaren Optionen.

Schlüsselpunkt: Windows Sockets ist eine protokollunabhängige Schnittstelle, die aktuelle und neue Netzwerkfunktionen unterstützt. Weitere Informationen finden Sie unter Windows Sockets 2.

Die Unix-Socketfunktion (AF_UNIX) in Windows

Ab Windows Insider Build 17063 können Sie die Unix-Socketfamilie (AF_UNIX) unter Windows verwenden, um zwischen Win32-Prozessen zu kommunizieren. Unix-Sockets ermöglichen die Interprozesskommunikation (INTER-Process Communication, IPC) zwischen Prozessen auf derselben Maschine. Weitere Informationen finden Sie im Blogbeitrag, AF_UNIX zu Windowskommt.

Die Deaktivierung des RemoteMaillot-Protokolls

Ab Windows 11 Insider Preview Build 25314 und Windows Server Preview Build 25314 haben wir standardmäßig das RemoteMaillot-Protokoll deaktiviert. Dies ist ein Vorläufer für die Veraltetkeit und schließliche Entfernung von Windows. Weitere Informationen finden Sie im Blogbeitrag Anfang des Endes von RemoteMaillots als Teil von Windows Insider.