Interfaces in verteilten Anwendungen

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Das Delegationsmodell verwenden - Index

In VCL-Anwendungen sind Interfaces ein grundlegendes Element in den Objektmodellen von COM und SOAP. Delphi stellt für diese Technologien Basisklassen bereit, die die grundlegende Interface-Funktionalität in TInterfacedObject erweitern, was einfach die IInterface-Methoden implementiert.

Bei Verwendung von COM müssen Klassen und Interfaces einer Definition von IUnknown und nicht von IInterface entsprechen. Es gibt keine semantischen Unterschiede zwischen IUnknown und IInterface, die Verwendung von IUnknown ist lediglich eine Möglichkeit, Delphi-Interfaces der COM-Definition anzupassen. COM-Klassen erweitern die Funktionalität bei Verwendung von Klassengeneratoren und Klassenbezeichnern (CLSIDs). Klassengeneratoren sind für die Erstellung von Klasseninstanzen über CLSIDs verantwortlich. Die CLSIDs werden zur Registrierung and Bearbeitung von COM-Klassen verwendet. COM-Klassen, die Klassengeneratoren und Klassenbezeichner haben, werden Hilfsklassen (CoClasses) genannt. CoClasses nutzen die Versionsverwaltungsfunktionen von QueryInterface, d.h. wenn ein Softwaremodul aktualisiert wird, kann QueryInterface zur Laufzeit aufgerufen werden, um aktuellen Funktionen eines Objekts abzufragen.

Neue Clients können neue Versionen von älteren Interfaces ebenso wie neue Interfaces oder Objektfunktionen unmittelbar nutzen. Gleichzeitig bleiben Objekte vollständig kompatibel zum vorhandenen Client-Quelltext; eine Neucompilierung ist nicht erforderlich, da Interface-Implementierungen verborgen sind (die Methoden und Parameter selbst bleiben unverändert). In COM-Anwendungen können Entwickler die Implementierung zur Steigerung der Ausführungsgeschwindigkeit oder aus anderen internen Gründen ändern, ohne einen Client-Quelltext, der dieses Interface voraussetzt, zu trennen. Weitere Informationen zu COM-Interfaces finden Sie unter COM-Technologien im Überblick.

Wenn Sie Anwendungen verteilen, die auf SOAP basieren, müssen Interfaces ihre eigenen Laufzeit-Typinformationstabellen (RTTI) enthalten. Der Compiler fügt RTTI ein Interface nur dann hinzu, wenn mit der Compiler-Option {$M+} compiliert wird. Solche Interfaces werden aufrufbare Interfaces genannt. Die Nachkommen eines aufrufbaren Interface sind ebenfalls aufrufbar. Wenn ein aufrufbares Interface jedoch von einem anderen, nicht aufrufbaren Interface abgeleitet ist, kann der Web-Service nur die Methoden verwenden, die in dem aufrufbaren Interface und dessen Ableitungen definiert sind. Methoden, die von nicht aufrufbaren Vorfahren geerbt wurden, werden nicht mit Typinformationen compiliert und können daher nicht von Clients aufgerufen werden.

Am einfachsten lassen sich aufrufbare Interfaces entwickeln, indem Sie Ihr Interface so definieren, dass dieses von IInvokable abgeleitet wird. IInvokable ist nahezu identisch mit IInterface, wird jedoch mit der Option {$M+} compiliert. Weitere Informationen über Web-Service-Anwendungen, die unter Verwendung von SOAP verteilt werden sowie über aufrufbare Interfaces, finden Sie unter Web-Service verwenden.

Siehe auch