Интерфейсы IAD и IDirectoryObject
Клиенты ADSI управляют объектами службы каталогов и управляют ими с помощью одного из двух интерфейсов COM: IADs или IDirectoryObject. IADs — это интерфейс IDispatch , предназначенный для использования конечными клиентами, такими как написанные на Microsoft Visual Basic, Java и различных языках сценариев. IDirectoryObject — это интерфейс vtable, предоставляющий прямой доступ к объектам с помощью ранних привязанных клиентов, таких как написанные на C и C++.
Каждый объект ADSI должен реализовать как идентификаторы IAD, так и IDirectoryObject. Клиенты ADSI, написанные на таких языках, как C или C++, которые могут напрямую обращаться к vtables, могут использовать любой интерфейс, но не оба в одном приложении. Клиенты ADSI, написанные в Visual Basic или Java, ограничены использованием идентификаторов IAD.
Интерфейс IADs позволяет клиентам с поздней привязкой использовать преимущества встроенных функций ведения дома объектной модели ADSI. Среди этих функций — кэш свойств, который позволяет клиентам считывать и записывать свойства, не перебирая провод для каждого вызова. Кроме того, клиентские приложения получают использование мощных библиотек пользовательского интерфейса и элементов управления ActiveX и более простого стиля программирования. В свою очередь, клиенты с поздней привязкой должны использовать тип данных VARIANT , который исключает использование более богатых собственных типов данных, предоставляемых ADSI.
Интерфейс IDirectoryObject позволяет клиентам с ранними привязками воспользоваться всеми преимуществами собственных типов данных службы каталогов за счет снижения производительности использования кэша свойств. В свою очередь, интерфейс IDirectoryObject обеспечивает прямой, локальный доступ к свойствам объектов через один запрос, а не через отдельные вызовы получения и размещения .