O cache de atributos ADSI
O modelo de objeto ADSI fornece um cache de atributo do lado do cliente para cada objeto ADSI. O cache de atributos é comparável a uma tabela na memória que contém os nomes e valores da maioria dos atributos de objeto que foram baixados. Alguns atributos, como atributos operacionais, não são armazenados em cache. O ADSI usa o cache de propriedades para aprimorar o desempenho da manipulação de atributos e adicionar recursos de transação para operações de leitura e gravação de atributos. Esse recurso é crítico para clientes escritos em linguagens que não têm nenhum mecanismo de lote nativo para definir atributos, como o sistema de desenvolvimento Microsoft Visual Basic. Sem o cache de propriedades ADSI, esses clientes teriam que acessar o servidor toda vez que um atributo fosse lido ou gravado.
Quando um objeto é criado ou vinculado pela primeira vez, o cache de propriedades do objeto fica vazio. Quando o método IADs::GetInfo é chamado, o ADSI carrega os atributos solicitados para o objeto do serviço de diretório subjacente no cache local. Quando um valor de atributo específico é lido e o cache está vazio, o ADSI faz uma chamada implícita para o método IADs::GetInfo . Quando o cache é preenchido, todas as operações de leitura de atributo funcionam somente no conteúdo do cache.
Quando um valor de atributo é gravado, o novo valor é armazenado no cache local até que o método IADs::SetInfo seja chamado. Quando o método IADs::SetInfo é chamado, os atributos no cache são confirmados para o serviço de diretório subjacente. Depois que o método IADs::SetInfo é chamado, os valores permanecem no cache até serem explicitamente atualizados com outra chamada para o método IADs::GetInfo.
Importante
O método IADs::GetInfo deve ser usado com cuidado porque esse método sempre substituirá os valores de atributo no cache do serviço de diretório subjacente, mesmo que o valor armazenado em cache tenha sido alterado. Ou seja, ele substituirá os valores de atributo que foram alterados no cache, mas não confirmados no serviço de diretório subjacente por uma chamada para o método IADs::SetInfo .
A figura a seguir mostra os diferentes métodos usados para operar no cache.