Objektklasse und Objektkategorie
Jede Instanz einer Objektklasse verfügt über eine mehrwertige objectClass-Eigenschaft, die die Klasse identifiziert, von der das Objekt eine Instanz ist, sowie alle strukturellen oder abstrakten Superklassen, von denen diese Klasse abgeleitet wird. Daher würde die objectClass-Eigenschaft eines Benutzerobjekts die obersten Benutzerklassen , person, organizationalPersonund identifizieren. Die objectClass-Eigenschaft enthält keine zusätzlichen Klassen in der Liste. Das System legt den objectClass-Wert fest, wenn die Objektinstanz erstellt wird, und kann nicht geändert werden.
Jede Instanz einer Objektklasse verfügt auch über eine objectCategory-Eigenschaft, bei der es sich um eine einwertige Eigenschaft handelt, die den Distinguished Name der Klasse enthält, deren Objekt eine Instanz oder eine ihrer Übergeordneten Klassen ist. Wenn ein Objekt erstellt wird, legt das System seine objectCategory-Eigenschaft auf den Wert fest, der von der defaultObjectCategory-Eigenschaft seiner Objektklasse angegeben wird. Die objectCategory-Eigenschaft eines Objekts kann nicht geändert werden.
Weitere Informationen und ein Codebeispiel zum Abrufen der objectClass-Eigenschaft eines Objekts finden Sie unter Abrufen des objectClass-Attributs.
Wichtig
Vor Windows Server 2008 wurde das objectClass-Attribut nicht indiziert. Dies liegt daran, dass sie über mehrere Werte verfügt und in hohem Maße nicht eindeutig ist. Das heißt, jede Instanz des objectClass-Attributs enthält die oberste Klasse. Dies bedeutet, dass ein Index sehr groß und ineffektiv wäre. Um Objekte einer bestimmten Klasse zu suchen, verwenden Sie das objectCategory-Attribut, das einwertig und indiziert ist. Weitere Informationen zur Verwendung dieser Eigenschaften in Suchfiltern finden Sie unter Entscheidung, was gesucht werden soll.
Für die meisten Klassen ist defaultObjectCategory der Distinguished Name des classSchema-Objekts der Klasse. Die defaultObjectCategory-Klasse für die organizationalUnit-Klasse ist beispielsweise "CN=Organizational-Unit,CN=Schema,CN=Configuration,<DC=forestroot>". Einige Klassen verweisen jedoch auf eine andere Klasse als defaultObjectCategory. Dadurch kann eine Abfrage Gruppen verwandter Objekte leicht finden, auch wenn sie von unterschiedlichen Klassen sind. Beispielsweise identifizieren die Benutzer-, Personen-, Organisationsperson-und Kontaktklassen alle die Person-Klasse in ihren defaultObjectCategory-Eigenschaften. Dadurch können Suchfilter wie (objectCategory=person) Instanzen aller dieser Klassen mit einer einzelnen Abfrage suchen. Abfragen für Personen sind sehr häufig, sodass dies eine einfache Optimierung ist.
Wenn Sie eine Unterklasse aus einer strukturellen Klasse erstellen, besteht die bewährte Methode darin, den defaultObjectCategory-Wert der neuen Klasse auf den gleichen Distinguished Name der Übergeordneten Klasse festzulegen. Dadurch kann die Standard-Benutzeroberfläche die Unterklasse "suchen".