绑定到架构的准则

可以使用两种方法绑定到 Active Directory 架构:

  • 直接绑定到架构容器,或者绑定到架构容器中的 classSchemaattributeSchema 对象。 classSchemaattributeSchema 对象包含Active Directory 域林中可以存在的每个类和属性的完整正式定义。 有关详细信息,请参阅读取 attributeSchema 和 classSchema 对象
  • 绑定到抽象架构或抽象架构中的类或属性条目。 抽象架构仅包含有关每个类和属性的数据子集,但数据采用易于检索和使用的格式。 有关详细信息,请参阅抽象架构读取抽象架构

若要修改或扩展架构,请直接绑定到架构容器。 若要读取类和属性定义,通常从抽象架构中读取更容易。

从抽象架构中读取更容易,原因如下:

  • ADSI 提供特殊的绑定技术和一组接口来读取抽象架构。
  • 使用抽象架构的 ADSI 接口,以适合在其他 ADSI 接口中使用的格式返回数据。 例如,IADsClassIADsProperty 通常使用 lDAPDisplayName 字符串来报告属性和类名,即使这些数据以对象标识符 (OID) 的形式存储在目录中。 lDAPDisplayName 格式很方便,因为其他 ADSI 接口使用它来引用搜索筛选器和其他地方的类和属性。
  • 对象类的抽象架构条目包含从多个 classSchema 对象收集的数据。 例如,对象类的可能父级、必需属性和可选属性是类的超类和辅助类中的这些属性的并集。 如果从实际架构容器中读取,则需要从派生该类的各种 classSchema 对象中收集数据。 如果从抽象架构中读取数据,则数据位于一个位置。

在以下情况下,应直接绑定到架构容器,而不是使用抽象架构:

  • 获取抽象架构中未公开的特定属性。 例如,oMSyntaxattributeSchemadefaultSecurityDescriptor 和其他属性不会在抽象架构中公开。
  • 查询 attributeSchemaclassSchema 对象。 若要搜索与指定筛选器匹配的类或属性,请绑定到架构容器并执行一级搜索。
  • 添加或修改属性或类。 抽象架构为只读;不能用来修改或扩展架构。 请注意,必须在作为架构主机的域控制器上进行修改。 有关详细信息,请参阅安装架构扩展的先决条件