Partager via


Architecture de l’extension ADSI

Les extensions ADSI sont basées sur le modèle d’agrégation COM avec plusieurs améliorations. Les extensions doivent respecter toutes les règles COM. Pour plus d’informations, consultez la spécification COM.

Voici une révision du modèle d’agrégation COM.

modèle d’agrégation com

Un agrégat, également appelé objet interne, est un objet créé par un agrégateur. Votre objet d’extension est un agrégat.

Un agrégateur, également appelé objet externe, est un objet qui crée un agrégat. ADSI est un agrégateur.

L’objet interne délègue son IUnknown au IUnknown de l’agrégateur.

Les extensions ADSI ajoutent les améliorations suivantes à l’agrégation COM pour répondre à ses exigences :

  • Permet à chaque enregistreur d’extension d’étendre des objets ADSI. Un enregistreur d’extensions peut inscrire son extension auprès d’ADSI et ne pas être affecté par l’existence d’autres extensions. Dans le modèle d’agrégation COM, l’agrégateur doit avoir le CLSID de l’agrégat. ADSI assouplit cette exigence en se faisant agir en tant qu’agrégateur pour toutes les extensions. Par conséquent, au lieu de former une couche de composants imbriqués, les extensions sont au même niveau.
  • Autorise un objet, un IDispatch. La prise en charge de l’automatisation est l’une des fonctionnalités les plus importantes d’ADSI. La prise en charge de l’automatisation est obtenue, car ADSI prend en charge l’interface IDispatch . Les rédacteurs d’extension sont encouragés à prendre en charge l’interface IDispatch . Toutefois, il ne doit y avoir qu’une seule interface IDispatch sur un objet donné. ADSI intègre et collecte les nombreuses interfaces IDispatch de différentes extensions et les présente sous la forme d’un IDispatch cohérent au contrôleur Automation. Chaque extension, lorsqu’elle est agrégée, doit réacheminer ses appels IDispatch vers l’IDispatch fourni par ADSI.

Toutes ces solutions sont possibles grâce aux services que fournit le Gestionnaire d’objets ADSI, qui résident sur chaque fournisseur ADSI.

L’illustration suivante montre l’architecture du modèle d’extension ADSI.

Architecture du modèle d’extension adsi

ADSI prend en charge deux niveaux d’extension :

  • Prise en charge des liaisons anticipées. Il s’agit du premier niveau d’extension. Une extension doit prendre en charge l’inscription et implémenter de nouvelles interfaces. Les consommateurs d’extension doivent utiliser des outils ou des hôtes de script qui prennent en charge la liaison anticipée, par exemple, Visual C++ , Visual Basic.
  • Prise en charge des liaisons tardives. Cela se produit lorsqu’une extension répond à toutes les exigences de liaison précoces et implémente une interface supplémentaire, IADsExtension. Les implémenteurs d’extension peuvent utiliser n’importe quel outil qui fonctionne en tant que contrôleur Automation, tel que l’hôte de script Windows, les pages Active Server ou le code HTML avec VBScript.