Partager via


Classe d’objets et catégorie d’objets

Chaque instance d’une classe d’objet a une propriété objectClass à valeurs multiples qui identifie la classe dont l’objet est une instance, ainsi que toutes les superclasses structurelles ou abstraites à partir de laquelle cette classe est dérivée. Par conséquent, la propriété objectClass d’un objet utilisateur identifie les principales, personne, organisationPersonet classes utilisateur. La propriété objectClass n’inclut pas de classes auxiliaires dans la liste. Le système définit la valeur objectClass lorsque l’instance d’objet est créée et qu’elle ne peut pas être modifiée.

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 une instance ou l’une de ses superclasses. Lorsqu’un objet est créé, le système définit sa propriété objectCategory sur 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é objectClassd’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 est hautement non unique ; autrement dit, chaque instance de l’attribut objectClass inclut la classe de 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 à valeur unique et indexée. Pour plus d’informations sur l’utilisation de ces propriétés dans les filtres de recherche, consultez Décider de l'.

 

Pour la plupart des classes, ladefaultObjectCategoryest le nom unique de l’objet classSchema de la classe. Par exemple, la defaultObjectCategory pour la classeorganisationnelleest « CN=Organizational-Unit,CN=Schema,CN=Configuration,<DC=forestroot>». Toutefois, certaines classes font référence à une autre classe comme leur 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, l’utilisateur , personne, organisationPersonet les classes de contact identifient toutes les classes personne dans leur propriétés de defaultObjectCategory. Cela permet aux filtres de recherche comme (objectCategory=person) de localiser les instances de toutes ces classes avec une seule requête. Les requêtes pour les personnes sont très courantes. Il s’agit donc 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 de la superclasse. Cela permet à l’interface utilisateur standard de « rechercher » la sous-classe.