ADSI拡張機能を使用する利点
拡張メソッドを実装する方法は、拡張ライターによって異なります。 拡張ライターは、ディレクトリのスコープ外に完全にメソッドを実装する場合もあります。 たとえば、バックアップと復元のソフトウェアの開発者は、コンピューターと呼ばれるオブジェクトを拡張することを計画しています。 開発者は、2つのメソッドを作成する必要があります。バックアップと復元。 これらのメソッドは、ディレクトリ内のコンピューターオブジェクトが指す物理コンピューター上でリモートで動作します。 拡張機能として機能することで、コンポーネントはADSIインフラストラクチャにアクセスし、ADSIクライアントによってオブジェクトの不可欠な部分として表示されます。
次のシナリオでは、ADSIの拡張機能を作成すると便利な状況について説明します。
コンポーネントをディレクトリオブジェクトと統合するための拡張機能を作成します。 ディレクトリにユーザーオブジェクトがあるため、人事開発者は、ユーザーの作成時にディレクトリ内の他のデータを設定するADSI拡張機能を作成することができます。
コンポーネントにディレクトリ参照が必要な場合は、拡張機能を作成します。 コンポーネントには、参照の開始点としてディレクトリが必要な場合があります。 たとえば、新しいアプリケーションを作成する場合です。 アプリケーションオブジェクトToolAppは、ディレクトリで公開できます。 アプリケーションは、メールサーバーのコレクションで状態通知をサポートする場合があります。 このアプリケーションをADSI拡張機能にすることにします。
これで、ユーザーはディレクトリ内のToolAppのすべてのインスタンスを検索できます。 返されたオブジェクトごとに、ユーザーはNotifyNow()の呼び出しを発行できます。 アプリケーションまたは拡張機能は、ディレクトリ内の最新のオブジェクトデータを取得し、各サーバーに非同期的に通知することができます。
名前空間とプログラミングモデルの間のジャンクションとして拡張機能を作成します。 たとえば、ISVが印刷サービス用の新しいオブジェクトモデルを発明したとします。 printQueueオブジェクトは、ディレクトリで既に定義されています。 ISVは、ADSI拡張機能を作成し、printQueueオブジェクトに関連付けることができます。 ADSIユーザーは、printQueueオブジェクトにバインドして、ISVのオブジェクトモデルの使用を開始できます。 ADSIクライアントの観点からは、このジャンクションポイントは透過的です。
タスクを簡略化するための拡張機能を作成します。 ディレクトリ内の多くのタスクは、1つまたは複数のオブジェクトの複数の属性を検索して設定することで実現できます。 複数の属性を操作する単一の関数を作成することで、アプリケーションおよびスクリプトの作成者の開発が簡略化されます。
ADSIクライアントの場合、拡張機能はいくつかの方法でADSIプログラミング環境を強化します。
- ADSIクライアントを作成する開発者は、新しいプログラミングモデルを学習する必要はありません。 拡張機能はADSIの一部です。 検索、データ操作、およびオブジェクトのセキュリティ保護に同じパラダイムを使用します。
- 管理者は、拡張機能を使用して、関連するディレクトリ対応アプリケーションを管理できます。
- 拡張機能のコンシューマーは、ADSIオブジェクトと拡張機能を1つの統合されたオブジェクトとして表示できます。
- 既存のコンポーネントはADSIと統合できます。これにより、拡張機能は既存の投資を活用し、コンポーネント間の相乗効果を作成できます。
ADSI拡張機能は、次の目的で設計されています。
- 簡単に実装できます。 現在の既存のMicrosoftテクノロジ、Microsoft Visual C++開発システム、およびActive Template Libraryを使用すると、拡張機能をすばやく作成できます。
- クライアントは1つのIDispatchを表示します。 スクリプトおよびオートメーションライターの観点からは、拡張メソッドとプロパティは1つのADSIオブジェクトに透過的にブレンドされます。
- 独立。 拡張ライターは、既存の拡張機能に関する事前知識がなくても、ADSIを個別に拡張できます。
企業の開発者またはISVは、バックアッププログラムを開発する必要があります。 このバックアップアプリケーションを使用すると、管理者は組織単位内のすべてのコンピューターをバックアップできます。 ADSI拡張機能を使用すると、次のスクリプトを実行できます。
Dim ou
On Error Resume Next
Set ou = GetObject("LDAP://OU=Sales, DC=Fabrikam, DC=COM")
If Err.Number<>0 Then
MsgBox("An error has occurred.")
Err.Clear
Set ou = Nothing
Exit Sub
End If
ou.Filter = Array("computer")
For each comp in ou
Debug.Print comp.Get("networkAddress")
Debug.Print comp.LastBackUp
comp.BackUpNow
Next
LastBackUpはプロパティであり、BackUpNowは拡張機能ライターが提供するメソッドです。 このコードは、拡張機能のコンシューマーとプロバイダーの両方の利点を示しています。 拡張機能ライターは、ディレクトリのフィルター処理、検索、およびアクセスの新しい方法を作成する必要はありません。 拡張機能のコンシューマーは、新しいプログラミングパラダイムを再学習する必要はありません。 拡張機能ライターが提供する新しいメソッドとプロパティは、ADSIの一部として表示されます。