Modelo de esquema ADSI
Un esquema es similar a un diccionario en que contiene la definición de cada tipo de objeto conocido para un servicio de directorio. Las aplicaciones cliente ADSI pueden examinar un esquema para detectar las características de cualquier implementación adsi determinada. Además, ADSI proporciona interfaces de administración de esquemas que se pueden usar para comunicarse con el esquema subyacente de un servicio de directorio.
Algunos esquemas son proveedores extensibles y ADSI o proveedores de terceros pueden optar por publicar nuevas interfaces o propiedades adicionales para las interfaces existentes allí. Los clientes ADSI usan estos datos para determinar qué características se admiten para cada servicio de directorio.
Hay tres tipos de objetos de esquema: clases, propiedades y sintaxis, cada uno de los cuales admite respectivamente las interfaces de administración de esquemas IADsClass, IADsProperty e IADsSyntax.
Nota
La clase es un término sobrecargado. Hay clases de C++, clases de Java, clases COM y clases ADSI. En este documento, la clase word, a menos que se califique lo contrario, hace referencia a una categoría o tipo de objeto de esquema.
ADSI abstrae el esquema de cada servicio de directorio y lo coloca en cada nodo raíz de nivel superior del objeto Namespace . Para identificar qué clases admite un servicio de directorio en un nodo raíz determinado, se enumera el objeto de esquema y se obtiene una lista de objetos de clase, objetos de propiedad y objetos de sintaxis. Para obtener más información, consulta Usar el esquema ADSI.
Caché de esquemas del proveedor LDAP ADSI
El proveedor LDAP para ADSI intenta almacenar en caché los datos del esquema en el equipo local. Una subsquima se identifica mediante un nombre distintivo almacenado en el atributo subSchemaSubEntry ubicado en la raíz de la empresa del servicio de directorio (rootDSE). Además de proporcionar los datos de subsquema, los servidores LDAP v3 deben exponer un atributo modifyTimeStamp que se usa para determinar la última vez que se modificó el esquema.
Cuando ADSI se enlaza por primera vez al servidor LDAP, recupera los datos de subschema mediante el atributo subSchemaSubEntry . Si ADSI logra encontrar el objeto subschema, almacena un puntero a los datos del registro en el equipo que se conecta al servidor LDAP. Para obtener información sobre exactamente dónde se almacenan estos valores en el Registro, consulta ADSI y Control de cuentas de usuario.
ADSI intenta procesar los datos del esquema y lee el atributo modifyTimeStamp . Si el atributo modifyTimeStamp existe y ADSI procesa correctamente el esquema, ADSI escribe la subschema en el disco y crea los dos siguientes valores del Registro bajo la clave. Si existen datos de subsquima, pero no se pueden procesar, no se crea ninguno de estos valores del Registro:
- Valor time , que contiene el atributo modifyTimeStamp . Este valor se usa para asegurarse de que los datos del esquema están actualizados y evita la recarga constante de los datos del esquema.
- Valor de archivo , que contiene la ruta de acceso a donde ADSI almacena los datos de esquema en el sistema de archivos. De forma predeterminada, ADSI almacena en caché la subsquema en el <directorio systemroot>\SchCache con un nombre de archivo correspondiente al nombre del servidor LDAP.
Si se pueden procesar los datos de subsquema, pero no se expone ningún atributo modifyTimeStamp , los datos del esquema se almacenan en caché en la memoria, pero no se escriben en el disco. Si se ha contactado con un servidor LDAP v3 a través de ADSI en el equipo local y una subschema almacenada en caché no está presente, lo más probable es que se deba a uno de los siguientes motivos:
- El servidor no ha expuesto las propiedades correctas.
- ADSI no pudo procesar el esquema.
- ADSI no pudo escribir el archivo en el sistema de archivos.