COM-Schnittstellen

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Elemente einer COM-Anwendung


Die COM-Clients kommunizieren mit den Objekten über COM-Schnittstellen. Bei den Schnittstellen handelt es sich um Gruppen von logisch oder semantisch zusammengehörigen Routinen, die die Kommunikation zwischen einem Anbieter eines Dienstes (Server-Objekt) und seinen Clients ermöglichen. Standardmäßig wird eine COM-Schnittstelle wie folgt dargestellt:

Eine COM-Schnittstelle

Jedes COM-Objekt muss beispielsweise die grundlegende Schnittstelle IUnknown implementieren. Über die Routine QueryInterface in IUnknown können Clients andere vom Server implementierte Schnittstellen anfordern.

Objekte können mehrere Schnittstellen aufweisen, von denen jede eine eigene Funktionalität implementiert. Eine Schnittstelle stellt eine Möglichkeit dar, dem Client mitzuteilen, welcher Dienst zur Verfügung gestellt wird, ohne dass Implementierungsdetails darüber geliefert werden, wie und wo das Objekt diesen Dienst zur Verfügung stellt.

Im Folgenden sind die wichtigsten Merkmale von COM-Schnittstellen beschrieben.

  • Sobald Schnittstellen als published deklariert wurden, sind sie absolut unveränderlich. Sie können sich darauf verlassen, dass eine Schnittstelle eine bestimmte Gruppe von Funktionen zur Verfügung stellt. Zusätzliche Funktionalität wird durch weitere Schnittstellen bereitgestellt.
  • Vereinbarungsgemäß beginnen die Bezeichner von COM-Schnittstellen mit dem Großbuchstaben I, auf den ein symbolischer Name folgt, der die Schnittstelle definiert, wie z.B. IMalloc oder IPersist.
  • Durch Verwendung eines GUID (Globally Unique Identifier) ist gewährleistet, dass Schnittstellen immer eindeutig identifizierbar sind. Bei einem GUID handelt es sich um eine zufällig generierte 128-Bit-Zahl. Schnittstellen-GUIDs werden auch IIDs (Interface Identifiers) genannt. Dadurch werden Benennungskonflikte zwischen unterschiedlichen Versionen eines Produkts oder zwischen verschiedenen Produkten vermieden.
  • Schnittstellen sind sprachunabhängig. Sie können eine COM-Schnittstelle mit Hilfe jeder beliebigen Sprache implementieren, solange diese Sprache eine Struktur von Zeigern unterstützt und mit ihr entweder implizit oder explizit über einen Zeiger eine Funktion aufgerufen werden kann.
  • Schnittstellen sind selbst keine Objekte, sondern sie stellen eine Möglichkeit zum Zugriff auf Objekte zur Verfügung. Daher greifen Clients nicht direkt, sondern über einen Schnittstellenzeiger auf Daten zu. Windows 2000 benutzt einen weiteren Umweg (Interceptor), über den es COM+-Features wie Just-In-Time-Aktivierung und Objekt-Pooling bereitstellt.
  • Schnittstellen entstehen immer durch Vererbung von der grundlegenden Schnittstelle IUnknown..
  • Schnittstellen können von COM über Proxy-Server so umgeleitet werden, dass Aufrufe der Schnittstellenmethoden zwischen Threads, Prozessen und im Netzwerk laufenden Computern erfolgen können, ohne dass die Client- bzw. Server-Objekte diese Umleitung bemerken. Weitere Informationen finden Sie unter In-Process-Server, Out-of-Process-Server und Remote-Server.

Siehe auch