IAD 및 IDirectoryObject 인터페이스

ADSI 클라이언트는 IAD 또는 IDirectoryObject라는 두 개의 COM 인터페이스 중 하나를 사용하여 디렉터리 서비스 개체를 관리하고 조작합니다. IAD는 Microsoft Visual Basic, Java 및 다양한 스크립팅 언어로 작성된 클라이언트와 같은 런타임에 바인딩된 클라이언트에서 사용하기 위한 IDispatch 인터페이스입니다. IDirectoryObject 는 C 및 C++로 작성된 클라이언트와 같은 초기 바인딩된 클라이언트에서 개체에 직접 액세스할 수 있는 vtable 인터페이스입니다.

각 ADSI 개체는 IAD와IDirectoryObject를 모두 구현해야 합니다. vtable에 직접 액세스할 수 있는 C 또는 C++와 같은 언어로 작성된 ADSI 클라이언트는 두 인터페이스 중 하나를 사용할 수 있지만 동일한 애플리케이션에서는 둘 다 사용할 수 없습니다. Visual Basic 또는 Java로 작성된 ADSI 클라이언트는 IAD 사용으로 제한됩니다.

IADs 인터페이스를 사용하면 런타임에 바인딩된 클라이언트가 ADSI 개체 모델의 고유 하우스키핑 기능을 활용할 수 있습니다. 이러한 기능 중에는 클라이언트가 각 호출에 대한 통신을 거치지 않고도 속성을 읽고 쓸 수 있는 속성 캐시가 있습니다. 또한 클라이언트 애플리케이션은 강력한 UI 및 ActiveX 컨트롤 라이브러리와 더 간단한 프로그래밍 스타일을 사용합니다. 그 대가로 런타임에 바인딩된 클라이언트는 ADSI 에서 제공하는 보다 풍부한 네이티브 데이터 형식을 사용하지 않는 VARIANT 데이터 형식을 사용해야 합니다.

IDirectoryObject 인터페이스를 사용하면 초기 바인딩된 클라이언트가 속성 캐시를 사용할 때 약간의 성능 이점을 포기하는 비용으로 네이티브 디렉터리 서비스 데이터 형식을 최대한 활용할 수 있습니다. 그 대가로 IDirectoryObject 인터페이스는 개별 getput 호출을 통하지 않고 단일 요청을 통해 개체 속성에 대한 직접 온-더-와이어 액세스를 제공합니다.