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 für die Verwendung durch spät gebundene Clients vorgesehen ist, z. B. clients, die in Microsoft Visual Basic, Java und verschiedenen Skriptsprachen geschrieben wurden. IDirectoryObject ist eine vtable-Schnittstelle, die direkten Zugriff auf Objekte durch früh gebundene Clients ermöglicht, z. B. solche, die in C und C++ geschrieben sind.

Jedes ADSI-Objekt muss sowohl IADs als auch IDirectoryObjectimplementieren. ADSI-Clients, die in Sprachen wie C oder C++ geschrieben sind und direkt auf VTables zugreifen können, können beide Schnittstellen verwenden, jedoch 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 profitieren Clientanwendungen von leistungsstarken Benutzeroberflächen- und ActiveX-Steuerelementbibliotheken und einem einfacheren Programmierstil. Im Gegenzug müssen spät gebundene Clients den VARIANT-Datentyp verwenden, was die Verwendung der umfangreicheren nativen Datentypen ausschließt, die von ADSI bereitgestellt werden.

Die IDirectoryObject-Schnittstelle ermöglicht es früh gebundenen Clients, die nativen Verzeichnisdienstdatentypen vollständig zu nutzen, um einen geringfügigen Leistungsvorteil durch die Verwendung des Eigenschaftencaches zu erzielen. Im Gegenzug ermöglicht die IDirectoryObject-Schnittstelle direkten direkten Zugriff auf Objekteigenschaften über eine einzelne Anforderung und nicht über einzelne Get- und Put-Aufrufe.