Classe oggetto e categoria di oggetti
Ogni istanza di una classe oggetto ha una proprietà objectClass multivalore che identifica la classe di cui l'oggetto è un'istanza, nonché tutte le superclassi strutturali o astratte da cui deriva tale classe. Di conseguenza, la proprietà objectClass di un oggetto utente identifica le classi top, person, organizationalPerson e user. La proprietà objectClass non include classi ausiliarie nell'elenco. Il sistema imposta il valore objectClass quando viene creata l'istanza dell'oggetto e non può essere modificata.
Ogni istanza di una classe oggetto ha anche una proprietà objectCategory , ovvero una proprietà a valore singolo che contiene il nome distinto della classe di cui l'oggetto è un'istanza o una delle relative superclassi. Quando viene creato un oggetto, il sistema imposta la proprietà objectCategory sul valore specificato dalla proprietà defaultObjectCategory della relativa classe oggetto. Impossibile modificare la proprietà objectCategory di un oggetto.
Per altre informazioni e un esempio di codice che recupera la proprietà objectClass di un oggetto, vedere Recupero dell'attributo objectClass.
Importante
Prima di Windows Server 2008, l'attributo objectClass non viene indicizzato. Questo perché ha più valori ed è altamente non univoco; ovvero ogni istanza dell'attributo objectClass include la classe principale. Ciò significa che un indice sarebbe molto grande e inefficace. Per individuare gli oggetti di una determinata classe, utilizzare l'attributo objectCategory , che è a valore singolo e indicizzato. Per altre informazioni sull'uso di queste proprietà nei filtri di ricerca, vedere Decidere cosa trovare.
Per la maggior parte delle classi, defaultObjectCategory è il nome distinto dell'oggetto classSchema della classe. Ad esempio, defaultObjectCategory per la classe organizationalUnit è "CN=Organizational-Unit,CN=Schema,CN=Configuration,DC<=forestroot".> Tuttavia, alcune classi fanno riferimento a un'altra classe come defaultObjectCategory. Ciò consente a una query di trovare facilmente gruppi di oggetti correlati, anche se sono di classi diverse. Ad esempio, le classi user, person, organizationalPerson e contact identificano tutte la classe person nelle proprietà defaultObjectCategory. Ciò consente ai filtri di ricerca come (objectCategory=person) di individuare le istanze di tutte queste classi con una singola query. Le query per gli utenti sono molto comuni, quindi si tratta di un'ottimizzazione semplice.
Se si crea una sottoclasse da una classe strutturale, è consigliabile impostare il valore defaultObjectCategory della nuova classe sullo stesso nome distinto della superclasse. In questo modo l'interfaccia utente standard può "trovare" la sottoclasse.