Classe d’objet et catégorie d’objet
Chaque instance d’une classe d’objet a une propriété objectClass à valeurs multiples qui identifie la classe dont l’objet est un instance, ainsi que toutes les superclasses structurelles ou abstraites dont cette classe est dérivée. Ainsi, la propriété objectClass d’un objet utilisateur identifie les classes top, person, organizationalPerson et user . La propriété objectClass n’inclut pas de classes auxiliaires dans la liste. Le système définit la valeur objectClass lorsque l’objet instance est créé et qu’il ne peut pas être modifié.
Chaque instance d’une classe d’objet a également une propriété objectCategory, qui est une propriété à valeur unique qui contient le nom unique de la classe dont l’objet est un instance ou de l’une de ses superclasses. Lorsqu’un objet est créé, le système affecte à sa propriété objectCategory la valeur spécifiée par la propriété defaultObjectCategory de sa classe d’objet. Impossible de modifier la propriété objectCategory d’un objet.
Pour plus d’informations et un exemple de code qui récupère la propriété objectClass d’un objet, consultez Récupération de l’attribut objectClass.
Important
Avant Windows Server 2008, l’attribut objectClass n’est pas indexé. Cela est dû au fait qu’il a plusieurs valeurs et qu’il n’est pas unique ; autrement dit, chaque instance de l’attribut objectClass inclut la classe supérieure. Cela signifie qu’un index serait très volumineux et inefficace. Pour localiser des objets d’une classe donnée, utilisez l’attribut objectCategory , qui est indexé et à valeur unique. Pour plus d’informations sur l’utilisation de ces propriétés dans les filtres de recherche, consultez Choix des éléments à rechercher.
Pour la plupart des classes, defaultObjectCategory est le nom unique de l’objet classSchema de la classe. Par exemple, la valeur defaultObjectCategory de la classe organizationalUnit est « CN=Organizational-Unit,CN=Schema,CN=Configuration,DC<=forestroot> ». Toutefois, certaines classes font référence à une autre classe en tant que defaultObjectCategory. Cela permet à une requête de trouver facilement des groupes d’objets connexes, même s’ils sont de classes différentes. Par exemple, les classes user, person, organizationalPerson et contact identifient toutes la classe person dans leurs propriétés defaultObjectCategory . Cela permet aux filtres de recherche comme (objectCategory=person) de localiser des instances de toutes ces classes avec une seule requête. Les requêtes pour les personnes étant très courantes, il s’agit d’une optimisation simple.
Si vous créez une sous-classe à partir d’une classe structurelle, la meilleure pratique consiste à définir la valeur defaultObjectCategory de la nouvelle classe sur le même nom unique que la superclasse. Cela permet à l’interface utilisateur standard de « rechercher » la sous-classe.