In-Process-Server, Out-of-Process-Server und Remote-Server

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu COM-Server


Bei COM braucht ein Client nicht zu wissen, wo sich ein Objekt befindet, denn es ruft einfach eine Objektschnittstelle auf, wobei die zum Aufrufen notwendigen Schritte von COM durchgeführt werden. Diese Schritte können unterschiedlich sein, je nachdem, ob sich das Objekt im selben Prozess wie der Client, in einem anderen Prozess auf dem Client-Computer oder auf einem anderen Computer im Netzwerk befindet. Es gibt die folgenden verschiedenen Server-Typen:


In-Process-Server

Eine Bibliothek (DLL), die im selben Prozessraum wie der Client ausgeführt wird. Beispiel: ein ActiveX-Steuerelement, das in eine WWW-Seite eingebettet ist, die wiederum im Browser Internet Explorer oder Netscape angezeigt wird. Das ActiveX-Steuerelement wird hierbei auf den Client-Computer heruntergeladen und innerhalb desselben Prozesses aufgerufen wie der WWW-Browser.

Der Client kommuniziert über direkte Aufrufe der COM-Schnittstelle mit dem In-Process-Server.

Out-of-Process-Server (bzw. lokaler Server)

Eine andere Anwendung (EXE), die in einem anderen Prozessraum, aber auf demselben Computer wie der Client ausgeführt wird. Beispiel: Eine Excel-Kalkulationstabelle, die in ein Word-Dokument eingebettet ist; diese beiden separaten Anwendungen werden auf demselben Computer ausgeführt.

Der lokale Server kommuniziert über COM mit dem Client.

Remote-Server

Eine DLL oder eine andere Anwendung, die auf einem anderen Computer als dem ausgeführt wird, auf dem der Client läuft. Beispiel: Eine Delphi-Datenbankanwendung ist mit einem Anwendungsserver auf einem anderen Computer im Netzwerk verbunden.

Der Remote-Server verwendet DCOM zur Kommunikation mit Schnittstellen und dem Anwendungsserver.


Wie in der folgenden Abbildung gezeigt, befinden sich die Zeiger auf Objektschnittstellen für In-Process-Server im selben Prozessraum wie der Client, so dass COM die Objektimplementierung direkt aufrufen kann.

In-Process-Server

Hinweis:  Dies ist unter COM+ nicht immer zutreffend. Ruft ein Client ein Objekt in einem anderen Kontext, COM+ fängt den Anruf ab, so dass er sich wie ein Out-of-Process-Anruf (s. unten) verhält, auch wenn es sich um einen In-Process-Server handelt.

Wie in der folgenden Abbildung gezeigt, verwendet COM zum Einleiten von Remote-Prozedurenaufrufen einen Proxy-Server, wenn der Prozess entweder in einem anderen Prozessraum oder gar auf einem ganz anderen Computer ausgeführt wird. Der Proxy-Server befindet sich im selben Prozessraum wie der Client, so dass aus Sicht des Clients alle Schnittstellenaufrufe gleich aussehen. Der Proxy-Server fängt den Aufruf des Clients ab und leitet ihn an die Stelle weiter, an der das tatsächliche Objekt ausgeführt wird. Der Mechanismus, der es dem Client ermöglicht, auf Objekte in einem anderen Prozessraum oder sogar auf einem anderen Computer in einer Weise zuzugreifen, als würden sie in ihrem eigenen Prozessraum ausgeführt, wird Marshaling genannt.

Out-of-Process-Server und Remote-Server

Der Unterschied zwischen Out-of-Process-Servern und Remote-Servern besteht in der verwendeten Art der Kommunikation zwischen den einzelnen Prozessen. Der Proxy-Server verwendet COM zur Kommunikation mit einem Out-of-Process-Server, verteiltes COM (DCOM) zur Kommunikation mit einem Remote-Computer. DCOM übergibt eine lokale Objektanforderung transparent an das auf einer anderen Maschine ablaufende entfernte Objekt.

Hinweis:  DCOM benutzt für einen RPC (Remote Procedure Call, Aufruf einer entfernten Prozedur) das RPC-Protokoll der Open Group's DCE (Distributed Computing Environment). Zum Schutz verwendet DCOM das Sicherheitsprotokoll des NT LAN-Managers (NTLM). Für Verzeichnisdienste wird DNS (Domain Name System) eingesetzt.

Siehe auch