绑定到架构的准则

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

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

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

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

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

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

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