Der ADSI-Attributcache
Das ADSI-Objektmodell stellt einen clientseitigen Attributcache für jedes ADSI-Objekt bereit. Der Attributcache ist vergleichbar mit einer Tabelle im Arbeitsspeicher, die die Namen und Werte der meisten heruntergeladenen Objektattribute enthält. Einige Attribute, z. B. betriebsbezogene Attribute, werden nicht zwischengespeichert. ADSI verwendet das Zwischenspeichern von Eigenschaften, um die Leistung der Attributbearbeitung zu verbessern und Transaktionsfunktionen für Attributlese- und Schreibvorgänge hinzuzufügen. Diese Funktion ist wichtig für Clients, die in Sprachen geschrieben wurden, die über keinen nativen Batchverarbeitungsmechanismus zum Festlegen von Attributen verfügen, z. B. das Microsoft Visual Basic-Entwicklungssystem. Ohne den ADSI-Eigenschaftencache müssten solche Clients jedes Mal auf den Server zugreifen, wenn ein Attribut gelesen oder geschrieben wird.
Wenn ein Objekt erstellt oder zuerst an gebunden wird, ist der Eigenschaftencache für das Objekt leer. Wenn die IADs::GetInfo-Methode aufgerufen wird, lädt ADSI die angeforderten Attribute für das Objekt aus dem zugrunde liegenden Verzeichnisdienst in den lokalen Cache. Wenn ein bestimmter Attributwert gelesen und der Cache leer ist, ruft ADSI die IADs::GetInfo-Methode implizit auf. Wenn der Cache gefüllt ist, funktionieren alle Attributlesevorgänge nur für den Inhalt des Caches.
Wenn ein Attributwert geschrieben wird, wird der neue Wert im lokalen Cache gespeichert, bis die IADs::SetInfo-Methode aufgerufen wird. Wenn die IADs::SetInfo-Methode aufgerufen wird, werden die Attribute im Cache an den zugrunde liegenden Verzeichnisdienst committet. Nachdem die IADs::SetInfo-Methode aufgerufen wurde, verbleiben die Werte im Cache, bis sie explizit mit einem weiteren Aufruf der IADs::GetInfo-Methode aktualisiert werden.
Wichtig
Die IADs::GetInfo-Methode muss sorgfältig verwendet werden, da diese Methode die Attributwerte im Cache immer aus dem zugrunde liegenden Verzeichnisdienst überschreibt, auch wenn der zwischengespeicherte Wert geändert wurde. Das heißt, es überschreibt Attributwerte, die im Cache geändert wurden, aber nicht mit einem Aufruf der IADs::SetInfo-Methode an den zugrunde liegenden Verzeichnisdienst.
Die folgende Abbildung zeigt die verschiedenen Methoden, die zum Arbeiten mit dem Cache verwendet werden.