IADs 和 IDirectoryObject 接口

ADSI 客户端通过使用两个 COM 接口 IADsIDirectoryObject 之一来管理和操作目录服务对象。 IADs 是一个 IDispatch 接口,旨在供后期绑定的客户端使用,例如用 Microsoft Visual Basic、Java 和各种脚本语言编写的客户端。 IDirectoryObject 是一个 vtable 接口,它通过早期绑定的客户端(如用 C 和 C++ 编写的客户端)提供对对象的直接访问。

每个 ADSI 对象必须同时实现 IADsIDirectoryObject。 使用 C 或 C++ 等语言编写的 ADSI 客户端可以直接访问 vtable,可以在同一应用程序中使用任一接口,但不能同时使用这两个接口。 使用 Visual Basic 或 Java 编写的 ADSI 客户端仅限于使用 IADs

IADs 接口使后期绑定客户端能够利用 ADSI 对象模型的固有管家功能。 这些功能包括属性缓存,使客户端能够读取和写入属性,而不必为每次调用都经过线路。 此外,客户端应用程序还可以利用功能强大的 UI 和 ActiveX 控件库以及更简单的编程风格。 作为回报,后期绑定客户端必须使用 VARIANT 数据类型,这将阻止使用 ADSI 提供的更丰富的本机数据类型。

IDirectoryObject 接口使早期绑定客户端能够充分利用本机目录服务数据类型,代价是放弃使用属性缓存的轻微性能优势。 作为回报,IDirectoryObject 接口通过单个请求提供对对象属性的直接在线访问,而不是通过单个 getput 调用。