top
Loading...
目錄服務技術介紹——ADSI(二)

下面列出目前已經實現的ADSI目錄服務:

(1)  Windows NT域用戶管理。

(2)  LDAP (Exchange Server)目錄服務。

(3)  Internet Information Server

(4)  NDS(Novell NetWare Directory Services)

目前,在一個企業內部存在多個目錄服務也會帶來一些問題。對于管理員來說,它必須管理多個目錄服務,這使得管理更為復雜;對于企業工作人員來說,為了訪問不同目錄服務中的信息,他必須登錄到多個目錄服務中;對于開發人員來說,為了使用目錄服務,他必須選擇使用哪個目錄服務或者使用多個目錄服務。雖然ADSI統一了目錄服務的編程接口,但是為了在企業內部更好地使用目錄服務功能,必須對目錄服務的應用有所規劃。由于Windows 2000全面采用了ADSI作為其應用編程接口,因此,建立在Windows 2000上的應用將可以更方便地訪問系統提供的各種目錄服務,應用程序與操作系統可以更好地結合起來。

二、ADSI結構

ADSI編程接口包括兩個方面,實現ADSI目錄服務的提供者(provider)和使用ADSI的客戶。每一個當前被支持的目錄服務必須有一個提供者,ADSI提供者實現了ADSI對象以及與名字空間相關的對象;ADSI客戶與普通的COM客戶程序類似,它調用ADSI接口訪問目錄服務所提供的各種功能,包括查找目錄、讀取目錄對象的屬性,如果允許的話,還可以修改對象的屬性。

ADSI提供目錄訪問的基本結構如下圖所示:



圖1 ADSI目錄服務層次結構圖

ADSI提供了兩種形式的編程接口,對于支持自動化的客戶,它可以通過ADSI自動化接口調用目錄服務提供者的屬性和方法;對于性能要求比較高的客戶,它可以通過vtable形式的COM接口訪問目錄服務提供者。ADSI這種雙接口結構幾乎總能滿足客戶程序的需要,關于雙接口的原理以及用法請讀者參閱有關自動化(Automation)方面的書籍,本文為簡便起見,僅從自動化接口的角度討論ADSI接口。

在ADSI所定義的接口規范中,對應于目錄服務的目錄對象,我們也稱為活動目錄對象(Active Directory Object)。另一個重要的對象為包容器(Container) 對象,包容器對象與目錄對象的關系跟我們在文件系統中使用的目錄與文件的關系類似,一個包容器對象可以包含許多其它的目錄對象或者包容器對象,而目錄對象代表了一定的實體。對于每個ADSI提供者,它從基本的名字空間的根節點開始,通過包容器對象和目錄對象,形成了一棵樹,如圖2所示。



圖2 ADSI包容器對象與目錄對象的樹狀結構示意圖

ADSI的每個包容器對象或者目錄對象都有一個與之相聯系的類別對象,類別對象說明了對象的一些特征信息,比如,對象的屬性、對象屬于包容器還是目錄對象,等等。類別對象也描述一些屬性,這些屬性是所有屬于此類別的對象所共有的屬性,在這些屬性中,有的屬性是強制必須要有的,而有的屬性則是可選的。屬性最重要的特征是它的語法,語法定義本身也是一個目錄對象。類別、屬性和語法都是某個包容器對象下面的目錄對象,被稱為表結構(schema)。

在ADSI定義的接口中,最基本的接口為IADs接口,它是一個從IDispatch接口派生出來的雙接口,并且所有的目錄對象都必須實現IADs接口。IADs接口的屬性和方法如表1和表2所示。

北斗有巢氏 有巢氏北斗