ADSI 擴充功能架構

ADSI 擴充功能是以 COM 匯總模型為基礎,具有數個增強功能。 延伸模組必須遵守所有 COM 規則。 如需詳細資訊,請參閱 COM 規格。

以下是 COM 匯總模型的檢閱。

com aggregation model

匯總也稱為內部物件,是匯總工具所建立的物件。 您的擴充對象是匯總。

匯總工具,也稱為外部物件,是建立匯總的物件。 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 extension model architecture

ADSI 支援兩種擴充層級:

  • 早期系結支援。 這是第一個延伸層級。 延伸模組必須支援註冊並實作新的介面。 延伸模組取用者必須使用支援早期系結的工具或腳本主機,例如 Visual C++ 、Visual Basic。
  • 晚期系結支援。 當擴充功能符合所有早期系結需求,並實作額外的介面 IADsExtension 時,就會發生這種情況。 延伸模組實作者可以使用任何以自動化控制器運作的工具,例如 Windows 腳本主機、Active Server Pages 或 HTML 搭配 VBScript。