Modelo de esquema ADSI
Um esquema é semelhante a um dicionário, pois contém a definição de cada tipo de objeto conhecido por um serviço de diretório. Os aplicativos cliente ADSI podem navegar por um esquema para descobrir os recursos de qualquer implementação ADSI específica. Além disso, o ADSI fornece interfaces de gerenciamento de esquema que podem ser usadas para se comunicar com o esquema subjacente de um serviço de diretório.
Alguns esquemas são extensíveis e provedores ADSI ou fornecedores terceirizados podem optar por publicar novas interfaces ou propriedades adicionais para interfaces existentes lá. Os clientes ADSI usam esses dados para determinar quais recursos são suportados para cada serviço de diretório.
Há três tipos de objetos de esquema: classes, propriedades e sintaxes, cada um suportando respectivamente as interfaces de gerenciamento de esquema IADsClass, IADsProperty e IADsSyntax.
Observação
Classe é um termo sobrecarregado. Existem classes C++, classes Java, classes COM e classes ADSI. Neste documento, a palavra classe, a menos que qualificada de outra forma, refere-se a uma categoria ou tipo de objeto de esquema.
O ADSI abstrai o esquema de cada serviço de diretório e o coloca em cada nó raiz de nível superior no objeto Namespace . Para identificar quais classes um serviço de diretório oferece suporte em um determinado nó raiz, enumere o objeto de esquema e obtenha uma lista de objetos de classe, objetos de propriedade e objetos de sintaxe. Para obter mais informações, consulte Usando o esquema ADSI.
Cache de esquema do provedor LDAP ADSI
O provedor LDAP para ADSI tenta armazenar em cache os dados do esquema no computador local. Um subesquema é identificado por um nome distinto armazenado no atributo subSchemaSubEntry localizado na raiz da empresa de serviço de diretório (rootDSE). Além de fornecer os dados do subesquema, os servidores LDAP v3 devem expor um atributo modifyTimeStamp que é usado para determinar a última vez que o esquema foi modificado.
Quando o ADSI se liga pela primeira vez ao servidor LDAP, ele recupera os dados do subesquema usando o atributo subSchemaSubEntry. Se o ADSI conseguir localizar o objeto de subesquema, ele armazenará um ponteiro para os dados no Registro no computador que está se conectando ao servidor LDAP. Para obter informações sobre exatamente onde esses valores são armazenados no Registro, consulte ADSI e Controle de Conta de Usuário.
Em seguida, o ADSI tenta processar os dados do esquema e lê o atributo modifyTimeStamp. Se o atributo modifyTimeStamp existir e o ADSI processar o esquema com êxito, o ADSI gravará o subesquema no disco e criará os dois seguintes valores do Registro sob a chave. Se os dados do subesquema existirem, mas não puderem ser processados, nenhum destes valores do Registro será criado:
- Um valor Time, que contém o atributo modifyTimeStamp. Esse valor é usado para garantir que os dados do esquema sejam atuais e impede o recarregamento constante dos dados do esquema.
- Um valor File , que contém o caminho para onde o ADSI armazena os dados do esquema no sistema de arquivos. Por padrão, o ADSI armazena em cache o <subesquema no diretório systemroot>\SchCache com um nome de arquivo correspondente ao nome do servidor LDAP.
Se os dados do subesquema puderem ser processados, mas nenhum atributo modifyTimeStamp for exposto, os dados do esquema serão armazenados em cache na memória, mas não gravados no disco. Se um servidor LDAP v3 tiver sido contatado por meio de ADSI no computador local e um subesquema armazenado em cache não estiver presente, é mais provável que seja por um dos seguintes motivos:
- O servidor não expôs as propriedades corretas.
- ADSI não pôde processar o esquema.
- ADSI não pôde gravar o arquivo no sistema de arquivos.