Рекомендации по привязке к схеме
Существует два способа привязки к схеме Active Directory:
- Привязка непосредственно к контейнеру схемы или к объекту classSchema или attributeSchema в контейнере схемы. Объекты classSchema или attributeSchema содержат полные, формальные определения каждого класса и атрибута, которые могут существовать в лесу домен Active Directory. Дополнительные сведения см. в разделе "Чтение атрибутовSchema" и classSchema Objects.
- Привязка к абстрактной схеме или к записи класса или атрибута в абстрактной схеме. Абстрактная схема содержит только подмножество данных о каждом классе и атрибуте, но данные доступны в формате, который легко получить и использовать. Дополнительные сведения см. в разделе "Абстрактная схема" и "Чтение абстрактной схемы".
Чтобы изменить или расширить схему, привязывайся непосредственно к контейнеру схемы. Для чтения определений классов и атрибутов обычно проще читать из абстрактной схемы.
Проще прочитать абстрактную схему по следующим причинам:
- ADSI предоставляет специальные методы привязки и набор интерфейсов для чтения абстрактной схемы.
- Интерфейсы ADSI, которые работают с абстрактными возвращаемыми данными схемы в формате, подходящем для использования в других интерфейсах ADSI. Например, IADsClass и IADsProperty обычно используют строки lDAPDisplayName для создания отчетов по атрибутам и именам классов, даже если эти данные хранятся в каталоге в виде идентификаторов объектов (OID). Формат lDAPDisplayName удобнее, так как другие интерфейсы ADSI используют его для ссылки на классы и атрибуты в фильтрах поиска и в других местах.
- Абстрактная запись схемы для класса объектов содержит данные, собранные из нескольких объектов classSchema . Например, возможные родители, обязательные атрибуты и необязательные атрибуты для класса объектов являются объединением этих атрибутов из суперклассов класса и вспомогательных классов. При чтении из фактического контейнера схемы необходимо собирать данные из различных объектов classSchema , производных от класса. Если вы считываете абстрактную схему, данные размещаются в одном месте.
Необходимо привязать непосредственно к контейнеру схемы, а не использовать абстрактную схему в следующих случаях:
- Чтобы получить определенные атрибуты, не предоставляемые в абстрактной схеме. Например, oMSyntax, attributeSchema, defaultSecurityDescriptor и другие атрибуты не предоставляются в абстрактной схеме.
- Запрос объектов attributeSchema и classSchema. Чтобы найти классы или атрибуты, соответствующие указанному фильтру, привязать к контейнеру схемы и выполнить одноуровневый поиск.
- Добавление или изменение атрибутов или классов. Абстрактная схема доступна только для чтения; Его нельзя использовать для изменения или расширения схемы. Помните, что изменения должны быть сделаны на контроллере домена, который является главным. Дополнительные сведения см. в разделе "Предварительные требования для установки расширения схемы".