可以使用多种语言编写 ADSI 客户端应用程序。 对于大多数管理任务,ADSI 定义了可从符合自动化的语言访问的接口和对象。 例如,Microsoft Visual Basic 开发系统、Microsoft Visual Basic Scripting Edition (VBScript) 和 Java,以及更注重性能和效率的语言(如 C 和 C++)。
与 Active Server Pages 和 VBScript 的顺利集成使编写访问目录服务的 Internet 应用程序变得容易。 为了与 OLE DB 应用程序集成,ADSI 通过支持一部分 OLE DB 查询接口来提供 OLE DB 提供程序。 OLE DB 提供程序支持对 Active Directory 的只读访问。
对于 Internet 应用程序,在 Active Server Page (ASP) 文件中使用脚本可以在服务器上创建和操作 ADSI 对象,并在网页中显示结果。 在 Microsoft 管理控制台中,目录服务管理单元可以使用 ADSI 查找感兴趣的目录服务。 简言之,Active Directory 服务接口可以提供对各种目录服务(包括尚未生成的目录服务)的访问。
为了访问使用传统 API 的结构,ADSI 体系结构定义了不支持可通过 C 和 C++ 等语言访问的自动化的低级别接口。 这些接口不过是用于目录服务网络协议的 COM 包装器。
将代码写入已发布的接口允许应用程序访问所有已安装 ADSI 提供程序的目录服务,并集成生成的数据。 安装新的 ADSI 提供程序时,应用程序可以继续访问网络上的其他目录服务,而代码几乎不做任何更改。
下图显示了 ADSI 如何适应应用程序环境。 无论应用程序是使用 Visual Basic、C/C++、VBScript、Microsoft JScript 开发系统编写的,还是作为使用 Active Server Pages 的 Web 应用程序编写,Active Directory 服务接口都提供对基础目录服务的干净且易于使用的访问,而无需使用本机网络 API。
如上图所示,不支持自动化的客户端可以访问所有 ADSI 接口,包括具有命名约定
IDirectoryXXX
的纯 COM 接口和具有命名约定
IADsXXX
的自动化 COM 接口。 由于客户端主要从目录服务请求信息,因此通过 OLE DB 和
IDirectorySearch
的 ADSI 灵活查询模型是有效的。