Architettura dell'estensione ADSI
Le estensioni ADSI sono basate sul modello di aggregazione COM con diversi miglioramenti. Le estensioni devono rispettare tutte le regole COM. Per altre informazioni, vedere la specifica COM.
Ecco una revisione del modello di aggregazione COM.
Un'aggregazione, nota anche come oggetto interno, è un oggetto creato da un aggregatore. L'oggetto di estensione è un'aggregazione.
Un aggregatore, noto anche come oggetto esterno, è un oggetto che crea un'aggregazione. ADSI è un aggregatore.
L'oggetto interno delega iUnknown all'IUnknown dell'aggregatore.
Le estensioni ADSI aggiungono i miglioramenti seguenti all'aggregazione COM per soddisfare i requisiti:
- Consente a ogni writer di estensione di estendere gli oggetti ADSI. Un writer di estensioni può registrare l'estensione con ADSI e non essere influenzato dall'esistenza di altre estensioni. Nel modello di aggregazione COM l'aggregatore deve disporre del CLSID dell'aggregazione. ADSI riduce questo requisito facendo di per sé l'aggregatore per tutte le estensioni. Pertanto, invece di formare un livello di componenti annidati, le estensioni sono allo stesso livello.
- Consente un oggetto, un IDispatch. Il supporto per l'automazione è una delle funzionalità più importanti di ADSI. Il supporto di automazione viene ottenuto perché ADSI supporta l'interfaccia IDispatch . I writer di estensioni sono invitati a supportare l'interfaccia IDispatch . Tuttavia, deve essere presente una sola interfaccia IDispatch su un determinato oggetto. ADSI integra e raccoglie le numerose interfacce IDispatch da estensioni diverse e le presenta come un IDispatch coerente al controller di automazione. Ogni estensione, se aggregata, deve reindirizzare le chiamate IDispatch al IDispatch fornito da ADSI.
Tutte queste soluzioni sono possibili a causa dei servizi forniti da Gestione oggetti ADSI, che risiedono in ogni provider ADSI.
La figura seguente illustra l'architettura del modello di estensione ADSI.
ADSI supporta due livelli di estensione:
- Supporto per l'associazione anticipata. Questo è il primo livello di estensione. Un'estensione deve supportare la registrazione e implementare nuove interfacce. I consumer di estensioni devono usare strumenti o host di scripting che supportano l'associazione anticipata, ad esempio Visual C++ , Visual Basic.
- Supporto dell'associazione tardiva. Ciò si verifica quando un'estensione soddisfa tutti i requisiti di associazione anticipata e implementa un'interfaccia aggiuntiva, IADsExtension. Gli implementatori di estensione possono usare qualsiasi strumento che opera come controller di automazione, ad esempio Host di Windows Script, Pagine di Active Server o HTML con VBScript.