Поделиться через


Контейнеры и листья

службы домен Active Directory содержат иерархию объектов, в которых каждый экземпляр объекта, кроме корневого каталога иерархии, содержится другим объектом. Структура этой иерархии является более гибкой, чем файловая система каталогов и файлов. Вместо этого правила в схеме Active Directory определяют, какие классы объектов могут содержать экземпляры других классов объектов. Например, определение схемы по умолчанию класса объектов User включает классы объектов Организации и контейнера как можно выше, то есть возможные родительские объекты или контейнеры экземпляра объекта User. Это означает, что объект Организации-unit может содержать объект User, но объект User не может содержать другой объект User, если не изменяется определение схемы класса User.

За исключением объектов схемы, то есть объекты classSchema или attributeSchema, определяющие классы и атрибуты, которые могут существовать в лесу сервера, любой объект в службах домен Active Directory может быть контейнером. В частности, любой класс объектов, который отображается в атрибуте possSuperiors или systemPossSuperiors определения класса объектов, потенциально является контейнером. Дополнительные сведения о контейнерах предопределенного класса объектов см. в домен Active Directory справочнике по службам. Можно программно привязать к абстрактной схеме и использовать методы IADsClass::get_Containment или IADsClass::get_PossibleSuperiors, чтобы получить классы, которые данный класс может содержать или содержать. Дополнительные сведения см. в разделе "Чтение абстрактной схемы". Можно также прочитать возможный атрибутInferiors любого экземпляра объекта, чтобы определить классы объектов, которые может содержать объект. Помните, что возможные элементыInferiors — это созданный атрибут, то есть он вычисляется из значений systemPossSuperiors/systemPossSuperiors других определений классов и не хранится в каталоге.

Помните, что схема Active Directory определяет класс контейнера. Как уже говорилось ранее, объект не требуется быть экземпляром класса контейнера , который должен быть контейнером. Существует также класс Leaf , и хотя подклассы этого класса обычно не являются контейнерами, нет причин, почему они не могут быть.

Наконец, можно задать флаг в описатель дисплея, связанный с классом объектов, чтобы указать, что пользовательские интерфейсы всегда должны отображать экземпляры класса как листья, а не контейнеры. Это помогает предотвратить загромождание пользовательского интерфейса слишком большим количеством контейнеров. Дополнительные сведения см. в разделе "Просмотр контейнеров как конечных узлов".