ADSI-Erweiterungsarchitektur
ADSI-Erweiterungen basieren auf dem COM-Aggregationsmodell mit mehreren Verbesserungen. Erweiterungen müssen allen COM-Regeln entsprechen. Weitere Informationen finden Sie in der COM-Spezifikation.
Im Folgenden finden Sie eine Überprüfung des COM-Aggregationsmodells.
Ein Aggregat, auch als inneres Objekt bezeichnet, ist ein Objekt, das ein Aggregator erstellt. Ihr Erweiterungsobjekt ist ein Aggregat.
Ein Aggregator, auch als äußeres Objekt bezeichnet, ist ein Objekt, das ein Aggregat erstellt. ADSI ist ein Aggregator.
Das innere Objekt delegiert sein IUnknown an den IUnknown des Aggregators.
ADSI-Erweiterungen fügen der COM-Aggregation die folgenden Verbesserungen hinzu, um ihre Anforderungen zu erfüllen:
- Ermöglicht jedem Erweiterungsschreiber das Erweitern von ADSI-Objekten. Ein Erweiterungsschreiber kann seine Erweiterung bei ADSI registrieren und nicht von der Existenz anderer Erweiterungen betroffen sein. Im COM-Aggregationsmodell muss der Aggregator über die CLSID des Aggregats verfügen. ADSI lockert diese Anforderung, indem er sich als Aggregator für alle Erweiterungen fungiert. Daher befinden sich Erweiterungen auf derselben Ebene, anstatt eine Ebene geschachtelter Komponenten zu bilden.
- Erlaubt ein Objekt, ein IDispatch. Automatisierungsunterstützung ist eines der wichtigsten Features von ADSI. Automatisierungsunterstützung wird erreicht, da ADSI die IDispatch-Schnittstelle unterstützt. Erweiterungsautoren werden empfohlen, die IDispatch-Schnittstelle zu unterstützen. Es sollte jedoch nur eine IDispatch-Schnittstelle für ein bestimmtes Objekt vorhanden sein. ADSI integriert und sammelt die vielen IDispatch-Schnittstellen aus verschiedenen Erweiterungen und stellt sie als einen einheitlichen IDispatch für den Automation-Controller dar. Jede Erweiterung muss, wenn sie aggregiert wird, ihre IDispatch-Aufrufe an den von ADSI bereitgestellten IDispatch umleiten.
All diese Lösungen sind aufgrund von Diensten möglich, die der ADSI-Objekt-Manager bereitstellt, die sich in jedem ADSI-Anbieter befinden.
Die folgende Abbildung zeigt die ARCHITEKTUR des ADSI-Erweiterungsmodells.
ADSI unterstützt zwei Erweiterungsebenen:
- Unterstützung für frühzeitige Bindung. Dies ist die erste Erweiterungsebene. Eine Erweiterung muss die Registrierung unterstützen und neue Schnittstellen implementieren. Die Erweiterungsverbraucher müssen Tools oder Skripthosts verwenden, die eine frühzeitige Bindung unterstützen, z. B. Visual C++, Visual Basic.
- Unterstützung für späte Bindung. Dies geschieht, wenn eine Erweiterung alle Anforderungen an die frühzeitige Bindung erfüllt und eine zusätzliche Schnittstelle implementiert, IADsExtension. Erweiterungsimplementierer können jedes Tool verwenden, das als Automation-Controller fungiert, z. B. windows Script Host, Active Server Pages oder HTML mit VBScript.