Prozessübergreifende Kommunikation
Das Windows-Betriebssystem bietet Mechanismen zur Erleichterung der Kommunikation und der Datenfreigabe zwischen Anwendungen. Zusammen werden die aktivitäten, die durch diese Mechanismen ermöglicht werden, als 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 anfordert. 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, um eine Zusammenfassende Tabelle der Herstellungskosten von einer Tabellenkalkulationsanwendung anzufordern, die als Server fungiert. Die Tabellenkalkulationsanwendung wiederum kann als Client fungieren, um die neuesten Bestandsebenen von einer automatisierten Bestandssteuerungsanwendung anzufordern.
Nachdem Sie 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 der Verwendung eines oder mehrerer 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 es aus, dass die Anwendung nur mit Anwendungen auf dem lokalen Computer kommuniziert?
- Sollte die Anwendung in der Lage sein, mit Anwendungen zu kommunizieren, die auf anderen Computern ausgeführt werden, die unter verschiedenen Betriebssystemen (z. B. 16-Bit-Windows oder UNIX) ausgeführt werden?
- Muss der Benutzer der Anwendung die anderen Anwendungen auswählen, mit denen die Anwendung kommuniziert, oder kann die Anwendung implizit ihre Kooperationspartner finden?
- Sollte die Anwendung auf allgemeine Weise mit vielen verschiedenen Anwendungen kommunizieren, z. B. durch Zulassen von Cut- und Paste-Vorgängen mit einer anderen Anwendung, oder sollten ihre Kommunikationsanforderungen auf einen eingeschränkten Satz von Interaktionen mit bestimmten anderen Anwendungen beschränkt sein?
- Ist die Leistung ein kritischer Aspekt der Anwendung? Alle IPC-Mechanismen beinhalten einen gewissen 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 unterstützt:
Verwenden der Zwischenablage für IPC
Die Zwischenablage fungiert als zentrale Verwahrstelle für die Gemeinsame Nutzung von Daten zwischen Anwendungen. Wenn ein Benutzer einen Ausschneiden- oder Kopiervorgang in einer Anwendung ausführt, platziert die Anwendung die ausgewählten Daten in einem oder mehreren Standard- oder anwendungsdefinierten Formaten in der Zwischenablage. Jede andere Anwendung kann dann die Daten aus der Zwischenablage abrufen und dabei aus den verfügbaren Formaten auswählen, die sie versteht. Die Zwischenablage ist ein sehr lose gekoppeltes Austauschmedium, bei dem sich Anwendungen 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 Textverarbeitungsprogramm 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
Anwendungen, die OLE verwenden, verwalten zusammengesetzte Dokumente, d. h. Dokumente, die aus Daten aus einer Vielzahl verschiedener Anwendungen bestehen. OLE stellt Dienste bereit, die anwendungen das Aufrufen anderer Anwendungen zur Datenbearbeitung erleichtern. Beispielsweise könnte ein Textverarbeitungsprogramm, das OLE verwendet, ein Diagramm aus einer Kalkulationstabelle einbetten. Der Benutzer kann die Kalkulationstabelle automatisch innerhalb der Textverarbeitung starten, indem er das eingebettete Diagramm zur Bearbeitung auswählt. OLE kümmert sich um das Starten der Kalkulationstabelle und die Darstellung des Graphen zur Bearbeitung. Wenn der Benutzer die Kalkulationstabelle beendet, wird das Diagramm im ursprünglichen Textverarbeitungsdokument aktualisiert. Die Kalkulationstabelle 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 solchen, die noch nicht geschrieben wurden. Die Komponenten interagieren als Objekte und Clients. Verteiltes COM erweitert das COM-Programmiermodell, sodass es in einem Netzwerk funktioniert.
Schlüsselpunkt: OLE unterstützt verbundgebundene Dokumente und ermöglicht es einer Anwendung, eingebettete oder verknüpfte Daten einzuschließen, die bei Auswahl automatisch eine andere Anwendung zur Datenbearbeitung startet. Dadurch kann die Anwendung um jede andere 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-Objektdienste.
Verwenden des Datenkopiervorgangs für IPC
Das Kopieren von Daten ermöglicht es einer Anwendung, Mithilfe der WM_COPYDATA Nachricht Informationen an eine andere Anwendung zu senden. Diese Methode erfordert eine Zusammenarbeit zwischen der sendenden Anwendung und der empfangenden Anwendung. Die empfangende Anwendung muss das Format der Informationen kennen und in der Lage sein, den Absender zu identifizieren. Die sendende Anwendung kann den Speicher, auf den durch Zeiger verwiesen wird, nicht ändern.
Schlüsselpunkt: Datenkopie kann verwendet werden, um Mithilfe von Windows-Messaging Schnellinformationen 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 den einmaligen Datenaustausch oder für den laufenden Austausch verwenden, bei dem sich die Anwendungen gegenseitig 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 betrachtet werden. Die Zwischenablage wird fast immer für eine einmalige Antwort auf einen Benutzerbefehl verwendet, z. B. das Auswählen des Befehls Einfügen aus einem Menü. DDE wird in der Regel auch durch einen Benutzerbefehl initiiert, funktioniert aber häufig ohne weitere Benutzerinteraktion weiter. Sie können auch benutzerdefinierte DDE-Datenformate für spezielle IPC zwischen Anwendungen mit enger 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 herstellen 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
Die Dateizuordnung ermöglicht es einem Prozess, den Inhalt einer Datei so zu behandeln, als ob es sich um einen Speicherblock im Adressraum des Prozesses handelt. 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 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 Arbeitsspeicher zwischen Prozessen bereitzustellen. Wenn Sie beim Erstellen eines Dateizuordnungsobjekts die Systemaustauschdatei 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 für zwei oder mehr Prozesse auf demselben Computer, Daten freizugeben. 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 unidirektionale Kommunikation. Jeder Prozess, der ein Maillot erstellt, ist ein Maillot-Server. Andere Prozesse, sogenannte Mailslot-Clients, senden Nachrichten an den Maillot-Server, indem sie eine Nachricht in dessen Maillot schreiben. Eingehende Nachrichten werden immer an das Maillot angefügt. Das 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 eine bidirektionale Kommunikation mit mehreren Mailslots möglich ist.
Ein Maillot-Client kann eine Nachricht an ein Maillot auf seinem lokalen Computer, an ein Maillot auf einem anderen Computer oder an alle Maillots mit dem gleichen Namen auf allen Computern in einer angegebenen Netzwerkdomäne senden. Nachrichten, die an alle Maillots in einer Domäne gesendet werden, dürfen nicht länger als 400 Bytes sein, während nachrichten, die an ein einzelnes Maillot gesendet werden, nur durch die maximale Nachrichtengröße beschränkt werden, die vom maillot-Server beim Erstellen des Maillots angegeben wurde.
Schlüsselpunkt: Mailslots bieten eine einfache Möglichkeit für Bewerbungen, kurze Nachrichten zu senden und zu empfangen. 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 ermöglichen es verwandten Prozessen, Informationen aneinander zu übertragen. In der Regel wird eine anonyme Pipe zum Umleiten der Standardeingabe oder -ausgabe eines untergeordneten Prozesses verwendet, sodass er Daten mit dem übergeordneten Prozess austauschen kann. Um Daten in beide Richtungen auszutauschen (Duplexvorgang), müssen Sie zwei anonyme Pipes erstellen. Der übergeordnete Prozess schreibt Daten mithilfe des Schreibhandles in eine Pipe, während der untergeordnete Prozess die Daten aus dieser Pipe mithilfe des Lesehandles 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 verwendet werden, noch können sie zwischen unabhängigen Prozessen verwendet werden.
Named Pipes werden verwendet, um Daten zwischen Prozessen zu übertragen, die keine verwandten Prozesse sind, und zwischen Prozessen auf verschiedenen Computern. In der Regel erstellt ein Named Pipe-Serverprozess eine Benannte 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, vorbehaltlich der Zugriffsbeschränkungen, die durch den Named-Pipe-Serverprozess angegeben werden. Nachdem sowohl der Server als auch der Client mit der Pipe verbunden sind, können sie Daten austauschen, indem lese- und schreibvorgänge für die Pipe ausgeführt werden.
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 macht RPC IPC so einfach wie das Aufrufen einer Funktion. RPC funktioniert zwischen Prozessen auf einem einzelnen Computer oder auf verschiedenen Computern in einem Netzwerk.
Das 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 Bytereihenfolgen zwischen unterschiedlichen Umgebungen zu berücksichtigen.
RPC-Clients und -Server sind eng gekoppelt, weisen jedoch weiterhin eine hohe Leistung auf. Das System nutzt RPC umfassend, um eine Client/Server-Beziehung 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-Komponenten.
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 ein Sockethandle optional als Dateihandle mit den Standarddatei-E/A-Funktionen verwendet werden.
Windows Sockets basieren auf den Sockets, die zuerst von Berkeley Software Distribution (BSD) populär gemacht wurden. Eine Anwendung, die Windows Sockets verwendet, kann mit anderen Socketimplementierungen 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 neu entstehende Netzwerkfunktionen unterstützen kann. Weitere Informationen finden Sie unter Windows Sockets 2.