Cache d’attributs ADSI
Le modèle objet ADSI fournit un cache d’attribut côté client pour chaque objet ADSI. Le cache d’attributs est comparable à une table en mémoire qui contient les noms et les valeurs de la plupart des attributs d’objet qui ont été téléchargés. Certains attributs, tels que les attributs opérationnels, ne sont pas mis en cache. ADSI utilise la mise en cache de propriétés pour améliorer les performances de la manipulation des attributs et ajouter une fonctionnalité de transaction pour les opérations de lecture et d’écriture d’attributs. Cette fonctionnalité est essentielle pour les clients écrits dans des langages qui n’ont pas de mécanisme de traitement par lots natif pour définir des attributs, comme le système de développement Microsoft Visual Basic. Sans le cache de propriétés ADSI, ces clients devraient accéder au serveur chaque fois qu’un attribut est lu ou écrit.
Lorsqu’un objet est créé ou lié pour la première fois à, le cache de propriétés de l’objet est vide. Lorsque la méthode IADs::GetInfo est appelée, ADSI charge les attributs demandés pour l’objet à partir du service d’annuaire sous-jacent dans le cache local. Lorsqu’une valeur d’attribut spécifique est lue et que le cache est vide, ADSI effectue un appel implicite à la méthode IADs::GetInfo . Lorsque le cache est rempli, toutes les opérations de lecture d’attribut fonctionnent uniquement sur le contenu du cache.
Lorsqu’une valeur d’attribut est écrite, la nouvelle valeur est stockée dans le cache local jusqu’à ce que la méthode IADs::SetInfo soit appelée. Lorsque la méthode IADs::SetInfo est appelée, les attributs du cache sont validés sur le service d’annuaire sous-jacent. Une fois la méthode IADs::SetInfo appelée, les valeurs restent dans le cache jusqu’à ce qu’elles soient explicitement actualisées avec un autre appel à la méthode IADs::GetInfo .
Important
La méthode IADs::GetInfo doit être utilisée avec soin, car cette méthode remplace toujours les valeurs d’attribut dans le cache à partir du service d’annuaire sous-jacent, même si la valeur mise en cache a été modifiée. Autrement dit, il remplace les valeurs d’attribut qui ont été modifiées dans le cache, mais qui ne sont pas validées pour le service d’annuaire sous-jacent avec un appel à la méthode IADs::SetInfo .
L’illustration suivante montre les différentes méthodes utilisées pour fonctionner sur le cache.