Prozessübergreifende Kommunikation

Das Windows Betriebssystem bietet Mechanismen zur Vereinfachung der Kommunikation und Datenfreigabe zwischen Anwendungen. Zusammen werden die durch diese Mechanismen aktivierten Aktivitäten als prozessübergreifende Kommunikation (Interprocess Communications, IPC) bezeichnet. Einige Formen von IPC erleichtern die Arbeitsteilung zwischen mehreren spezialisierten Prozessen. Andere Formen von 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 an fordert. Ein Server ist eine Anwendung oder ein Prozess, der auf eine Clientanforderung antwortet. Viele Anwendungen fungieren je nach Situation sowohl als Client als auch als Server. Beispielsweise kann eine Textverarbeitungsanwendung als Client fungieren, wenn sie eine Zusammenfassende Tabelle der Herstellungskosten von einer Tabellenkalkulationsanwendung an fordert, die als Server fungieren soll. Die Tabellenkalkulationsanwendung kann wiederum als Client fungieren, wenn sie die neuesten Inventurebenen von einer automatisierten Inventursteuerungsanwendung anfing.

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

  • Sollte die Anwendung mit anderen Anwendungen kommunizieren können, die auf anderen Computern in einem Netzwerk ausgeführt werden, oder ist es ausreichend, dass die Anwendung nur mit Anwendungen auf dem lokalen Computer kommuniziert?
  • Sollte die Anwendung mit Anwendungen kommunizieren können, die auf anderen Computern ausgeführt werden, die unter unterschiedlichen Betriebssystemen ausgeführt werden (z. B. 16-Bit-Windows oder UNIX)?
  • Sollte der Benutzer der Anwendung die anderen Anwendungen auswählen müssen, mit denen die Anwendung kommuniziert, oder kann die Anwendung implizit seine partnerfreundlichen Partner finden?
  • Sollte die Anwendung allgemein mit vielen verschiedenen Anwendungen kommunizieren, z. B. das Zulassen von Ausschneide- und Einfügevorgängen mit einer anderen Anwendung, oder sollten ihre Kommunikationsanforderungen auf eine begrenzte Anzahl von Interaktionen mit bestimmten anderen Anwendungen beschränkt sein?
  • Ist die Leistung ein wichtiger Aspekt der Anwendung? Alle IPC-Mechanismen umfassen eine gewisse Menge an Mehraufwand.
  • Sollte die Anwendung eine GUI-Anwendung oder eine Konsolenanwendung sein? Einige IPC-Mechanismen erfordern eine GUI-Anwendung.

Die folgenden IPC-Mechanismen werden von Windows:

Verwenden der Zwischenablage für IPC

Die Zwischenablage fungiert als zentrales Lager für die Gemeinsame Nutzung von Daten zwischen Anwendungen. Wenn ein Benutzer einen Ausschneide- oder Kopiervorgang in einer Anwendung ausführt, legt die Anwendung die ausgewählten Daten in einem oder mehrere standard- oder anwendungsdefinierte Formate in der Zwischenablage ab. Jede andere Anwendung kann die Daten dann 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 sich nur auf das Datenformat einigen 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 die Datenformate unterstützen, die sie verstehen. Beispielsweise sollte ein Text-Editor oder ein Textprozessor zumindest in der Lage sein, Zwischenablagedaten im reinen Textformat zu erzeugen und zu akzeptieren. Weitere Informationen finden Sie unter Zwischenablage.

Verwenden von COM für IPC

Applications that use OLE manage compound documents—that is, documents made up of data from a variety of different applications. OLE stellt Dienste zur Verfügung, die es Anwendungen einfach machen, andere Anwendungen für die Datenbearbeitung auf aufruft. Beispielsweise könnte ein Textprozessor, der OLE verwendet, ein Diagramm aus einer Kalkulationstabelle einbetten. Der Benutzer kann das Arbeitsblatt automatisch innerhalb des Textprozessors starten, indem er das eingebettete Diagramm für die Bearbeitung auswählt. OLE übernimmt das Starten der Kalkulationstabelle und die Darstellung des Diagramms für die Bearbeitung. Wenn der Benutzer das Arbeitsblatt beendet, wird das Diagramm im ursprünglichen Textverarbeitungsdokument aktualisiert. Das Arbeitsblatt scheint eine Erweiterung des Textprozessors 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 komponenten, die noch nicht geschrieben wurden. Die Komponenten interagieren als Objekte und Clients. Verteiltes COM erweitert das COM-Programmiermodell, sodass es netzwerkübergreifend funktioniert.

Schlüsselpunkt: OLE unterstützt Verbunddokumente und ermöglicht einer Anwendung das Einbetten eingebetteter oder verknüpfter Daten, die bei Auswahl automatisch eine andere Anwendung für die Datenbearbeitung starten. 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 Sätze verwandter Funktionen, die als Schnittstellen bezeichnet werden. Weitere Informationen finden Sie unter COM und ActiveX Object Services.

Verwenden von Datenkopierdaten für IPC

Das Kopieren von Daten ermöglicht einer Anwendung das Senden von Informationen an eine andere Anwendung mithilfe der WM _ COPYDATA-Nachricht. 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 Arbeitsspeicher, auf den von Zeigern verwiesen wird, nicht ändern.

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

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 fortlaufende Austausche verwenden, bei denen die Anwendungen einander aktualisieren, sobald neue Daten verfügbar werden.

Die von DDE verwendeten Datenformate sind identisch mit denen, die von der Zwischenablage verwendet werden. DDE kann als Erweiterung des Zwischenablagemechanismus verwendet werden. Die Zwischenablage wird fast immer für eine einmalige Antwort auf einen Benutzerbefehl verwendet, z. B. die Auswahl des Befehls Einfügen aus einem Menü. DDE wird in der Regel auch durch einen Benutzerbefehl initiiert, funktioniert aber häufig ohne weitere Benutzerinteraktion. Sie können auch benutzerdefinierte DDE-Datenformate für spezielle IPC zwischen Anwendungen mit stärker gekoppelten Kommunikationsanforderungen definieren.

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

Schlüsselpunkt: 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 dynamische Daten Exchange und dynamische Daten Exchange Management Library.

Verwenden einer Dateizuordnung für IPC

Die Dateizuordnung ermöglicht es einem Prozess, den Inhalt einer Datei so zu behandeln, als wäre er 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, erhält jeder Prozess einen Zeiger auf den Arbeitsspeicher in seinem eigenen Adressraum, den er zum Lesen oder Ändern des Inhalts der Datei verwenden kann. Die Prozesse müssen ein Synchronisierungsobjekt wie z. B. ein Semaphor verwenden, um Datenbeschädigungen in einer Multitaskingumgebung zu verhindern.

Sie können einen Sonderfall der Dateizuordnung verwenden, um benannten freigegebenen Speicher zwischen Prozessen zur Verfügung zu stellen. Wenn Sie die Auslagerungsdatei des Systems beim Erstellen eines Dateizuordnungsobjekts angeben, wird das Dateizuordnungsobjekt als freigegebener Speicherblock behandelt. Andere Prozesse können auf denselben Speicherblock zugreifen, indem sie dasselbe Dateizuordnungsobjekt öffnen.

Die Dateizuordnung ist sehr effizient und bietet auch vom Betriebssystem unterstützte Sicherheitsattribute, die dazu beitragen können, nicht autorisierte Datenbeschädigungen zu verhindern. Die Dateizuordnung kann nur zwischen Prozessen auf einem lokalen Computer verwendet werden. sie kann nicht über ein Netzwerk verwendet werden.

Schlüsselpunkt: Die Dateizuordnung ist eine effiziente Möglichkeit, mit der zwei oder mehr Prozesse auf demselben Computer Daten gemeinsam verwenden können. Sie müssen jedoch eine Synchronisierung zwischen den Prozessen bereitstellen. Weitere Informationen finden Sie unter Dateizuordnung und Synchronisierung.

Verwenden eines Mailslots für IPC

Mailslots bieten eine one-way-Kommunikation. Jeder Prozess, der ein Mailslot erstellt, ist ein Maillotserver. Andere Prozesse, die als Mailslotclients bezeichnet werden, senden Nachrichten an den Maillotserver, indem sie eine Nachricht in das E-Mail-Lot schreiben. Eingehende Nachrichten werden immer an das Mailslot angefügt. Das Mailslot speichert die Nachrichten, bis sie vom Maillotserver gelesen wurden. Ein Prozess kann sowohl ein E-Mail-Löschserver als auch ein E-Mail-Löschclient sein, sodass eine zweiseitige Kommunikation mithilfe mehrerer E-Mail-Lots möglich ist.

Ein maillot-Client kann eine Nachricht an ein E-Mail-Lot auf seinem lokalen Computer, an ein E-Mail-Lot auf einem anderen Computer oder an alle E-Mail-Lots mit dem gleichen Namen auf allen Computern in einer angegebenen Netzwerkdomäne senden. Nachrichten, die an alle E-Mail-Lots in einer Domäne gesendet werden, dürfen nicht länger als 400 Byte sein. Nachrichten, die an ein einzelnes E-Mail-Lot gesendet wurden, sind dagegen nur durch die maximale Nachrichtengröße beschränkt, die vom Maillotserver beim Erstellen des Mailslots angegeben wurde.

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

Verwenden von Pipes für IPC

Es gibt zwei Arten von Pipes für die two-way-Kommunikation: anonyme Pipes und Named Pipes. Anonyme Pipes ermöglichen es verwandten Prozessen, Informationen untereinander zu übertragen. In der Regel wird eine anonyme Pipe verwendet, um die Standardeingabe oder -ausgabe eines untergeordneten Prozesses umzuleiten, damit sie Daten mit dem übergeordneten Prozess austauschen kann. Zum Austauschen von Daten in beide Richtungen (Duplexvorgang) müssen Sie zwei anonyme Pipes erstellen. Der übergeordnete Prozess schreibt Daten mithilfe seines Schreibhandles in eine Pipe, während der untergeordnete Prozess die Daten mithilfe seines Lesehandles aus dieser Pipe liest. Auf ähnliche Weise schreibt der untergeordnete Prozess Daten in die andere Pipe, und der übergeordnete Prozess liest daraus. Anonyme Pipes können weder über ein Netzwerk noch zwischen nicht verknüpften Prozessen verwendet werden.

Named Pipes werden verwendet, um Daten zwischen Prozessen, die keine verwandten Prozesse sind, und zwischen Prozessen auf verschiedenen Computern zu übertragen. In der Regel erstellt ein Named Pipe-Serverprozess eine Named Pipe mit einem bekannten Namen oder einem Namen, der an seine Clients übermittelt werden soll. Ein Named Pipe-Clientprozess, der den Namen der Pipe kennt, kann sein anderes Ende öffnen. Dies unterliegt zugriffseinschränkungen, die vom Named 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 auf der Pipe ausführen.

Schlüsselpunkt: Anonyme Pipes bieten eine effiziente Möglichkeit, Standardeingaben oder -ausgaben an untergeordnete Prozesse auf demselben Computer umzuleiten. Named Pipes 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. Daher vereinfacht RPC IPC so einfach wie das Aufrufen einer Funktion. RPC wird zwischen Prozessen auf einem einzelnen Computer oder auf verschiedenen Computern in einem Netzwerk ausgeführt.

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 die Datenkonvertierung automatisch, um unterschiedliche Hardwarearchitekturen und die Byte reihenfolge zwischen unterschiedlichen Umgebungen zu berücksichtigen.

RPC-Clients und -Server sind eng gekoppelt, bieten aber trotzdem eine hohe Leistung. Das System nutzt RPC umfassend, um eine Client-/Serverbeziehung zwischen verschiedenen Teilen des Betriebssystems zu ermöglichen.

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

Verwenden Windows Sockets für IPC

Windows Sockets ist eine protokollunabhängige Schnittstelle. Sie nutzt die Kommunikationsfunktionen der zugrunde liegenden Protokolle. In Windows Sockets 2 kann ein Sockethand handle optional als Dateihand handle mit den standardmäßigen Datei-E/A-Funktionen verwendet werden.

Windows Sockets basieren auf den Sockets, die zuerst von der Softwareverteilung von California (BSD) popularisiert wurden. Eine Anwendung, die Windows Sockets verwendet, kann mit anderen Socketimplementierung auf anderen Systemtypen kommunizieren. Allerdings unterstützen nicht alle Transportdienstanbieter alle verfügbaren Optionen.

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