ADSI 擴充功能架構
ADSI 擴充功能是以 COM 匯總模型為基礎,具有數個增強功能。 延伸模組必須遵守所有 COM 規則。 如需詳細資訊,請參閱 COM 規格。
以下是 COM 匯總模型的檢閱。
匯總也稱為內部物件,是匯總工具所建立的物件。 您的擴充對象是匯總。
匯總工具,也稱為外部物件,是建立匯總的物件。 ADSI 是匯總工具。
內部物件會將其 IUnknown 委派給匯總工具的 IUnknown。
ADSI 擴充功能會將下列增強功能新增至 COM 匯總,以滿足其需求:
- 可讓每個擴充寫入器擴充 ADSI 物件。 延伸模組寫入器可以使用ADSI註冊其延伸模組,而不會受到其他延伸模組的存在影響。 在 COM 匯總模型中,匯總工具必須具有匯總的 CLSID。 ADSI 藉由讓自己成為所有延伸模組的匯總工具,來放寬這項需求。 因此,延伸模組不是形成巢狀元件層,而是位於相同的層級。
- 允許一個物件,一個 IDispatch。 自動化支援是ADSI最重要的功能之一。 因為 ADSI 支援 IDispatch 介面,因此可達成自動化支援。 鼓勵擴充寫入器支援 IDispatch 介面。 不過,指定對象上應該只有一個 IDispatch 介面。 ADSI 會從不同的延伸模組整合並收集許多 IDispatch 介面,並將其呈現為自動化控制器的一個一致 IDispatch 。 匯總時,每個擴充功能都必須將其 IDispatch 呼叫重新路由至 ADSI 所提供的 IDispatch。
所有這些解決方案都是可能的,因為 ADSI 物件管理員所提供的服務位於每個 ADSI 提供者上。
下圖顯示 ADSI 擴充功能模型架構。
ADSI 支援兩種擴充層級:
- 早期系結支援。 這是第一個延伸層級。 延伸模組必須支援註冊並實作新的介面。 延伸模組取用者必須使用支援早期系結的工具或腳本主機,例如 Visual C++ 、Visual Basic。
- 晚期系結支援。 當擴充功能符合所有早期系結需求,並實作額外的介面 IADsExtension 時,就會發生這種情況。 延伸模組實作者可以使用任何以自動化控制器運作的工具,例如 Windows 腳本主機、Active Server Pages 或 HTML 搭配 VBScript。