Objektklasse und Objektkategorie

Jede instance einer Objektklasse verfügt über eine mehrwertige objectClass-Eigenschaft, die die Klasse identifiziert, von der das Objekt instance ist, sowie alle strukturellen oder abstrakten Superklassen, von denen diese Klasse abgeleitet wird. Daher würde die objectClass-Eigenschaft eines Benutzerobjekts die obersten Klassen, person, organizationalPerson und Benutzerklassen identifizieren. Die objectClass-Eigenschaft enthält keine Hilfsklassen in der Liste. Das System legt den objectClass-Wert fest, wenn das Objekt instance erstellt wird und nicht geändert werden kann.

Jede instance einer Objektklasse verfügt außerdem über eine objectCategory-Eigenschaft, die eine einwertige Eigenschaft ist, die den distinguished Name der Klasse enthält, deren instance das Objekt ist, oder eine ihrer Superklassen. 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 ist das objectClass-Attribut nicht indiziert. Dies liegt daran, dass es mehrere Werte hat und hochgradig nicht eindeutig ist. Das heißt, jede instance 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 Entscheiden, was zu finden ist.

 

Bei den meisten Klassen ist defaultObjectCategory der distinguished Name des classSchema-Objekts der Klasse. Die defaultObjectCategory-Klasse für die organizationalUnit-Klasse ist z. B. "CN=Organizational-Unit,CN=Schema,CN=Configuration,DC<=forestroot>". Einige Klassen beziehen sich jedoch auf eine andere Klasse als defaultObjectCategory. Dies ermöglicht es einer Abfrage, Gruppen verwandter Objekte problemlos zu finden, auch wenn sie unterschiedlichen Klassen angehören. Beispielsweise identifizieren die Klassen user, person, organizationalPerson und contact die Personenklasse in ihren defaultObjectCategory-Eigenschaften . Dadurch können Suchfilter wie (objectCategory=person) Instanzen all dieser Klassen mit einer einzelnen Abfrage suchen. Abfragen für Personen sind sehr häufig, daher ist dies eine einfache Optimierung.

Wenn Sie eine Unterklasse aus einer Strukturklasse erstellen, besteht die bewährte Methode darin, den defaultObjectCategory-Wert der neuen Klasse auf den gleichen distinguished Name der Superklasse festzulegen. Dadurch kann die Standard-Benutzeroberfläche die Unterklasse "finden".