Modello di schema ADSI

Uno schema è simile a un dizionario in quanto contiene la definizione di ogni tipo di oggetto noto a un servizio directory. Le applicazioni client ADSI possono esplorare uno schema per individuare le funzionalità di qualsiasi implementazione ADSI specificata. ADSI fornisce inoltre interfacce di gestione dello schema che possono essere usate per comunicare con lo schema sottostante di un servizio directory.

Alcuni schemi sono estendibili e provider ADSI o fornitori di terze parti possono scegliere di pubblicare nuove interfacce o proprietà aggiuntive per le interfacce esistenti. I client ADSI usano questi dati per determinare quali funzionalità sono supportate per ogni servizio directory.

Esistono tre tipi di oggetti schema: classi, proprietà e sintassi, ognuno dei quali supporta rispettivamente le interfacce di gestione dello schema IADsClass, IADsProperty e IADsSyntax.

Nota

La classe è un termine di overload. Sono disponibili classi C++, classi Java, classi COM e classi ADSI. In questo documento, la classe parola, se non diversamente qualificata, fa riferimento a una categoria o a un tipo di oggetto schema.

 

ADSI astrae lo schema di ogni servizio directory e lo inserisce in ogni nodo radice di primo livello nell'oggetto Namespace . Per identificare le classi supportate da un servizio directory in un determinato nodo radice, è possibile enumerare l'oggetto schema e ottenere un elenco di oggetti classe, oggetti proprietà e oggetti sintassi. Per altre informazioni, vedere Uso dello schema ADSI.

ADSI LDAP Provider Schema Cache

Il provider LDAP per ADSI tenta di memorizzare nella cache i dati dello schema nel computer locale. Un sottoschema viene identificato da un nome distinto archiviato nell'attributo subSchemaSubEntry che si trova nella radice dell'organizzazione del servizio directory (rootD edizione Standard). Oltre a fornire i dati del sottoschema, i server LDAP v3 devono esporre un attributo modifyTimeStamp usato per determinare l'ultima volta che lo schema è stato modificato.

Quando ADSI viene prima associato al server LDAP, recupera i dati del sottoschema usando l'attributo subSchemaSubEntry . Se ADSI riesce a trovare l'oggetto sottoschema, archivia un puntatore ai dati nel Registro di sistema nel computer che si connette al server LDAP. Per informazioni sulla posizione esatta di archiviazione di questi valori nel Registro di sistema, vedere ADSI e User Account Control.

ADSI tenta quindi di elaborare i dati dello schema e legge l'attributo modifyTimeStamp . Se l'attributo modifyTimeStamp esiste e ADSI elabora correttamente lo schema, ADSI scrive il sottoschema su disco e crea i due valori del Registro di sistema seguenti sotto la chiave. Se i dati del sottoschema esistono, ma non possono essere elaborati, nessuno di questi valori del Registro di sistema viene creato:

  • Valore Time che contiene l'attributo modifyTimeStamp . Questo valore viene usato per garantire che i dati dello schema siano correnti e impediscano il ricaricamento costante dei dati dello schema.
  • Valore File , che contiene il percorso in cui ADSI archivia i dati dello schema nel file system. Per impostazione predefinita, ADSI memorizza nella cache il sottoschema nella <directory systemroot>\SchCache con un nome di file corrispondente al nome del server LDAP.

Se è possibile elaborare i dati del sottoschema, ma non viene esposto alcun attributo modifyTimeStamp , i dati dello schema vengono memorizzati nella cache in memoria, ma non scritti su disco. Se un server LDAP v3 è stato contattato tramite ADSI nel computer locale e non è presente un sottoschema memorizzato nella cache, è molto probabile che per uno dei motivi seguenti:

  • Il server non ha esposto le proprietà corrette.
  • ADSI non è riuscito a elaborare lo schema.
  • ADSI non è riuscito a scrivere il file nel file system.