Duale Schnittstellen

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Automatisierungsschnittstellen


Unter einer dualen Schnittstelle versteht man eine Schnittstelle, die gleichzeitig benutzerdefinierte Schnittstelle und Dispatch-Schnittstelle (dispinterface) ist. Sie wird als COM-VTable-Schnittstelle implementiert, die von IDispatch abgeleitet ist. Für Controller, die nur zur Laufzeit auf das Objekt zugreifen, steht die Dispatch-Schnittstelle zur Verfügung. Für Objekte, welche die Vorteile des frühen Bindens beim Compilieren nutzen können, wird die effektivere benutzerdefinierte VTable-Schnittstelle verwendet.

Duale Schnittstellen verbinden die Vorteile von benutzerdefinierten VTable-Schnittstellen und Dispatch-Schnittstellen:

  • Für VTable-Schnittstellen führt der Compiler Typprüfung durch und liefert Fehlermeldungen mit weiteren Informationen.
  • Bei Automatisierungs-Controllern, die keine Typinformationen erhalten können, stellt die Dispatch-Schnittstelle zur Laufzeit Zugriff auf das Objekt zur Verfügung.
  • Bei In-Process-Servern können Sie den schnellen Zugriff über die VTable-Schnittstellen nutzen.
  • Bei Out-of-Process-Servern führt COM das Marshaling der Daten sowohl für die VTable-Schnittstellen als auch für die Dispatch-Schnittstellen durch. COM stellt eine generische Proxy-/Stub-Implementierung zur Verfügung, welche das Marshaling für die Schnittstelle anhand der in einer Typbibliothek enthaltenen Informationen vornehmen kann.

Die ersten drei Einträge der VTable für eine duale Schnittstelle beziehen sich auf die Schnittstelle IUnknown, die folgenden vier auf die Schnittstelle IDispatch, und bei den übrigen Einträgen handelt es sich um COM-Einträge für den direkten Zugriff auf Elemente der benutzerdefinierten Schnittstelle.