Кэш атрибутов ADSI
Объектная модель ADSI предоставляет кэш атрибутов на стороне клиента для каждого объекта ADSI. Кэш атрибутов сравним с таблицей в памяти, содержащей имена и значения большинства атрибутов объектов, скачанных. Некоторые атрибуты, такие как операционные атрибуты, не кэшируются. ADSI использует кэширование свойств для повышения производительности манипуляции атрибутами и добавления возможностей транзакций для операций чтения и записи атрибутов. Эта возможность важна для клиентов, написанных на языках, которые не имеют собственного механизма пакетной обработки для задания атрибутов, таких как система разработки Microsoft Visual Basic. Без кэша свойств ADSI такие клиенты должны получать доступ к серверу каждый раз, когда атрибут считывается или записывается.
При создании или первой привязке объекта кэш свойств для объекта пуст. При вызове метода IADs::GetInfo ADSI загружает запрошенные атрибуты для объекта из базовой службы каталогов в локальный кэш. Если значение определенного атрибута считывается и кэш пуст, ADSI выполняет неявный вызов метода IADs::GetInfo . При заполнении кэша все операции чтения атрибутов работают только с содержимым кэша.
При записи значения атрибута новое значение сохраняется в локальном кэше до вызова метода IADs::SetInfo . При вызове метода IADs::SetInfo атрибуты в кэше фиксируются в базовой службе каталогов. После вызова метода IADs::SetInfo значения остаются в кэше до явного обновления с помощью другого вызова метода IADs::GetInfo.
Важно!
Метод IADs::GetInfo следует тщательно использовать, так как этот метод всегда перезаписывает значения атрибутов в кэше из базовой службы каталогов, даже если кэшированное значение было изменено. То есть он перезаписывает значения атрибутов, которые были изменены в кэше, но не зафиксированы в базовой службе каталогов с вызовом метода IADs::SetInfo .
На следующем рисунке показаны различные методы, используемые для работы с кэшем.