다음을 통해 공유


ADSI 스키마 모델

스키마는 디렉터리 서비스에 알려진 모든 유형의 개체에 대한 정의를 보유한다는 측면에서 사전과 유사합니다. ADSI 클라이언트 애플리케이션은 스키마를 탐색하여 지정된 ADSI 구현의 기능을 검색할 수 있습니다. 또한 ADSI는 디렉터리 서비스의 기본 스키마와 통신하는 데 사용할 수 있는 스키마 관리 인터페이스를 제공합니다.

일부 스키마는 확장 가능하며 ADSI 공급자 또는 타사 공급자는 새 인터페이스 또는 기존 인터페이스에 대한 추가 속성을 게시하도록 선택할 수 있습니다. ADSI 클라이언트는 이 데이터를 사용하여 각 디렉터리 서비스에 대해 지원되는 기능을 결정합니다.

세 가지 종류의 스키마 개체가 있습니다. 클래스, 속성 및 구문은 각각 IADsClass, IADsPropertyIADsSyntax 스키마 관리 인터페이스를 각각 지원합니다.

참고

클래스는 오버로드된 용어입니다. C++ 클래스, Java 클래스, COM 클래스 및 ADSI 클래스가 있습니다. 이 문서에서는 정규화되지 않은 경우 클래스라는 단어는 스키마 개체의 범주 또는 형식을 나타냅니다.

 

ADSI는 모든 디렉터리 서비스의 스키마를 추상화하고 Namespace 개체의 모든 최상위 루트 노드에 배치합니다. 디렉터리 서비스가 지정된 루트 노드에서 지원하는 클래스를 식별하려면 스키마 개체를 열거하고 클래스 개체, 속성 개체 및 구문 개체 목록을 가져옵니다. 자세한 내용은 ADSI 스키마 사용을 참조하세요.

ADSI LDAP 공급자 스키마 캐시

ADSI용 LDAP 공급자는 스키마 데이터를 로컬 컴퓨터에 캐시하려고 시도합니다. 하위 스키마는 rootDSE(디렉터리 서비스 엔터프라이즈)의 루트에 있는 subSchemaSubEntry 특성에 저장된 고유 이름으로 식별됩니다. 하위 스키마 데이터를 제공하는 것 외에도 LDAP v3 서버는 스키마가 마지막으로 수정된 시간을 확인하는 데 사용되는 modifyTimeStamp 특성을 노출해야 합니다.

ADSI가 LDAP 서버에 처음 바인딩되면 subSchemaSubEntry 특성을 사용하여 하위 스키마 데이터를 검색합니다. ADSI가 하위 스키마 개체를 찾는 데 성공하면 LDAP 서버에 연결하는 컴퓨터의 레지스트리에 있는 데이터에 대한 포인터를 저장합니다. 이러한 값이 레지스트리에 저장되는 정확한 위치에 대한 자세한 내용은 ADSI 및 사용자 계정 컨트롤을 참조하세요.

그런 다음 ADSI는 스키마 데이터를 처리하려고 시도하고 modifyTimeStamp 특성을 읽습니다. modifyTimeStamp 특성이 있고 ADSI가 스키마를 성공적으로 처리하는 경우 ADSI는 디스크에 하위 스키마를 작성하고 키 아래에 다음 두 레지스트리 값을 만듭니다. 하위 스키마 데이터가 있지만 처리할 수 없는 경우 다음 레지스트리 값 중 어느 것도 만들어지지 않습니다.

  • modifyTimeStamp 특성을 포함하는 시간 값입니다. 이 값은 스키마 데이터가 최신이고 스키마 데이터의 상수 다시 로드를 방지하는 데 사용됩니다.
  • ADSI가 파일 시스템에 스키마 데이터를 저장하는 경로를 포함하는 파일 값입니다. 기본적으로 ADSI는 systemroot>\SchCache 디렉터리의 하위 스키마<를 LDAP 서버 이름에 해당하는 파일 이름으로 캐시합니다.

하위 스키마 데이터를 처리할 수 있지만 modifyTimeStamp 특성이 노출되지 않으면 스키마 데이터는 메모리에 캐시되지만 디스크에 기록되지는 않습니다. 로컬 컴퓨터의 ADSI를 통해 LDAP v3 서버에 연결되었고 캐시된 하위 스키마가 없는 경우 다음 이유 중 하나일 가능성이 큽니다.

  • 서버에서 올바른 속성을 노출하지 않았습니다.
  • ADSI에서 스키마를 처리할 수 없습니다.
  • ADSI에서 파일을 파일 시스템에 쓸 수 없습니다.