Vorteile der Verwendung von ADSI-Erweiterungen

Die Art und Weise, wie Erweiterungsmethoden implementiert werden, hängt vom Erweiterungsschreiber ab. Ein Erweiterungsschreiber kann sogar eine Methode vollständig außerhalb des Bereichs des Verzeichnisses implementieren. Ein Entwickler von Sicherungs- und Wiederherstellungssoftware plant beispielsweise, ein Objekt namens Computer zu erweitern. Der Entwickler muss zwei Methoden erstellen: BackUp und Restore. Diese Methoden werden remote auf dem physischen Computer ausgeführt, auf den das Computerobjekt im Verzeichnis verweist. Durch die Funktion als Erweiterung greift die Komponente auf die ADSI-Infrastruktur zu und wird von ADSI-Clients als integraler Bestandteil des Objekts betrachtet.

In den folgenden Szenarien werden Situationen beschrieben, in denen das Erstellen einer Erweiterung für ADSI vorteilhaft wäre:

  • Erstellen Sie eine Erweiterung, um eine Komponente in das Verzeichnisobjekt zu integrieren. Da sich im Verzeichnis ein Benutzerobjekt befindet, möchte ein HR-Entwickler möglicherweise eine ADSI-Erweiterung erstellen, die andere Daten im Verzeichnis auffüllt, wenn ein Benutzer erstellt wird.

  • Erstellen Sie eine Erweiterung, wenn eine Komponente eine Verzeichnissuche erfordert. Eine Komponente erfordert möglicherweise ein Verzeichnis als Ausgangspunkt für eine Suche. Beispielsweise beim Erstellen einer neuen Anwendung. Ein Anwendungsobjekt, ToolApp, kann im Verzeichnis veröffentlicht werden. Ihre Anwendung unterstützt möglicherweise status Benachrichtigungen auf einer Sammlung von E-Mail-Servern. Sie entscheiden, diese Anwendung als ADSI-Erweiterung zu verwenden.

    Nun kann ein Benutzer nach allen Instanzen von ToolApp im Verzeichnis suchen. Für jedes zurückgegebene Objekt kann der Benutzer einen Aufruf von NotifyNow()ausstellen. Eine Anwendung oder Erweiterung kann aktuellere Objektdaten im Verzeichnis abrufen und jeden Server asynchron benachrichtigen.

  • Erstellen Sie eine Erweiterung als Verbindung zwischen Namespaces und Programmiermodellen. Beispielsweise erfindet ein ISV ein neues Objektmodell für Druckdienste. Das printQueue-Objekt ist bereits im Verzeichnis definiert. Der ISV kann eine ADSI-Erweiterung erstellen und dem printQueue-Objekt zuordnen. ADSI-Benutzer können eine Bindung an ein printQueue-Objekt herstellen und das Objektmodell für den ISV verwenden. Aus sicht des ADSI-Clients ist dieser Knotenpunkt transparent.

  • Erstellen Sie eine Erweiterung, um Aufgaben zu vereinfachen. Viele Aufgaben im Verzeichnis können durch Suchen und Festlegen mehrerer Attribute in einem Objekt oder mehreren Objekten ausgeführt werden. Durch das Erstellen einer einzelnen Funktion zum Bearbeiten mehrerer Attribute vereinfacht dies die Entwicklung für Anwendungs- und Skriptautoren.

Für ADSI-Clients bereichern Erweiterungen die ADSI-Programmierumgebung auf verschiedene Weise:

  • Entwickler, die ADSI-Clients erstellen, müssen kein neues Programmiermodell erlernen. Die Erweiterungen sind Teil von ADSI. Sie würden das gleiche Paradigma für die Suche, Die Datenbearbeitung und das Schützen von Objekten verwenden.
  • Administratoren können verwandte verzeichnisfähige Anwendungen mithilfe von Erweiterungen verwalten.
  • Erweiterungsverbraucher können ein ADSI-Objekt und eine Erweiterung als ein integriertes Objekt anzeigen.
  • Vorhandene Komponenten können in ADSI integriert werden, sodass Erweiterungen vorhandene Investitionen nutzen und Synergien zwischen den Komponenten schaffen können.

ADSI-Erweiterungen wurden mit den folgenden Zielen entworfen:

  • Einfach zu implementieren. Mit den aktuellen vorhandenen Microsoft-Technologien, Microsoft Visual C++ Entwicklungssystem und der Aktiven Vorlagenbibliothek kann schnell eine Erweiterung erstellt werden.
  • Clients zeigen einen IDispatch an. Aus sicht von Skript- und Automation-Autoren werden die Erweiterungsmethoden und -eigenschaften transparent in einem ADSI-Objekt zusammengeführt.
  • Unabhängig. Erweiterungsschreiber können ADSI unabhängig ohne Vorkenntnisse vorhandener Erweiterungen erweitern.

Betrachten Sie dieses Szenario: Ein Unternehmensentwickler oder ein ISV muss ein Sicherungsprogramm entwickeln. Mit dieser Sicherungsanwendung kann ein Administrator alle Computer in einer Organisationseinheit sichern. Mit einer ADSI-Erweiterung ist das folgende Skript möglich.

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 ist eine Eigenschaft, und BackUpNow ist eine Methode, die der Erweiterungsschreiber bereitstellt. Der Code zeigt die Vorteile sowohl für Erweiterungsverbraucher als auch für Anbieter. Der Erweiterungsschreiber muss keine neue Methode zum Filtern, Suchen und Zugreifen auf das Verzeichnis erstellen. Der Erweiterungs-Consumer muss kein neues Programmierparadigma neu lernen. Neue Methoden und Eigenschaften, die der Erweiterungsschreiber bereitstellt, werden als Teil von ADSI angezeigt.