Die IADs- und IDirectoryObject-Schnittstellen
ADSI-Clients verwalten und bearbeiten Verzeichnisdienstobjekte mithilfe einer von zwei COM-Schnittstellen: IADs oder IDirectoryObject. IADs sind eine IDispatch-Schnittstelle , die von spät gebundenen Clients verwendet werden kann, z. B. in Microsoft Visual Basic, Java und verschiedenen Skriptsprachen. IDirectoryObject ist eine vtable-Schnittstelle, die direkten Zugriff auf Objekte von früh gebundenen Clients bietet, z. B. die in C und C++ geschriebenen.
Jedes ADSI-Objekt muss sowohl IADs als auch IDirectoryObject implementieren. ADSI-Clients, die in Sprachen wie C oder C++ geschrieben sind und direkt auf vtables zugreifen können, können beide Schnittstellen verwenden, aber nicht beide in derselben Anwendung. ADSI-Clients, die in Visual Basic oder Java geschrieben wurden, sind auf die Verwendung von IADs beschränkt.
Mit der IADs-Schnittstelle können spät gebundene Clients die inhärenten Housekeeping-Features des ADSI-Objektmodells nutzen. Zu diesen Features gehört der Eigenschaftencache, mit dem Clients Eigenschaften lesen und schreiben können, ohne für jeden Aufruf über die Leitung zu gehen. Darüber hinaus erhalten Clientanwendungen die Verwendung leistungsstarker Benutzeroberflächen- und ActiveX-Steuerelementbibliotheken und einen einfacheren Programmierstil. Im Gegenzug müssen spät gebundene Clients den VARIANT-Datentyp verwenden, was die Verwendung der umfangreicheren nativen Datentypen, die von ADSI bereitgestellt werden, ausschließt.
Die IDirectoryObject-Schnittstelle ermöglicht es früh gebundenen Clients, die nativen Verzeichnisdienstdatentypen vollständig zu nutzen, um auf einen geringfügigen Leistungsvorteil aus der Verwendung des Eigenschaftencaches zu verzichten. Im Gegenzug bietet die IDirectoryObject-Schnittstelle direkten, drahtinternen Zugriff auf Objekteigenschaften über eine einzelne Anforderung und nicht über einzelne Get - und Put-Aufrufe .