ADSI 확장 사용의 이점
확장 메서드를 구현하는 방법은 확장 작성기에 따라 달라집니다. 확장 작성기는 디렉터리의 scope 외부에서 메서드를 완전히 구현할 수도 있습니다. 예를 들어 백업 및 복원 소프트웨어 개발자는 컴퓨터라는 개체를 확장할 계획입니다. 개발자는 두 가지 방법 인 BackUp 및 Restore를 만들어야 합니다. 이러한 메서드는 디렉터리의 컴퓨터 개체가 가리키는 물리적 컴퓨터 에서 원격으로 작동합니다. 확장 역할을 함으로써 구성 요소는 ADSI 인프라에 액세스하고 ADSI 클라이언트가 개체의 필수적인 부분으로 간주합니다.
다음 시나리오에서는 ADSI에 대한 확장을 만드는 것이 유리한 상황을 설명합니다.
디렉터리 개체와 구성 요소를 통합하는 확장을 만듭니다. 디렉터리에 사용자 개체가 있기 때문에 HR 개발자는 사용자를 만들 때 디렉터리의 다른 데이터를 채우는 ADSI 확장을 만들 수 있습니다.
구성 요소에 디렉터리 조회가 필요한 경우 확장을 만듭니다. 구성 요소에는 조회를 위한 시작점으로 디렉터리가 필요할 수 있습니다. 예를 들어 새 애플리케이션을 만들 때입니다. 애플리케이션 개체 인 ToolApp은 디렉터리에 게시할 수 있습니다. 애플리케이션은 메일 서버 컬렉션에서 상태 알림을 지원할 수 있습니다. 이 애플리케이션을 ADSI 확장으로 만들기로 결정했습니다.
이제 사용자는 디렉터리에서 ToolApp 의 모든 인스턴스를 검색할 수 있습니다. 반환된 각 개체에 대해 사용자는 NotifyNow()에 대한 호출을 실행할 수 있습니다. 애플리케이션 또는 확장은 디렉터리에서 더 많은 현재 개체 데이터를 가져오고 각 서버에 비동기적으로 알릴 수 있습니다.
네임스페이스와 프로그래밍 모델 간의 접합으로 확장을 만듭니다. 예를 들어 ISV는 인쇄 서비스에 대한 새 개체 모델을 발명합니다. printQueue 개체가 디렉터리에 이미 정의되어 있습니다. ISV는 ADSI 확장을 만들고 printQueue 개체와 연결할 수 있습니다. ADSI 사용자는 printQueue 개체에 바인딩하고 ISV에 대한 개체 모델 사용을 시작할 수 있습니다. ADSI 클라이언트 관점에서 이 접합점은 투명합니다.
작업을 간소화하는 확장을 만듭니다. 개체 또는 여러 개체에서 여러 특성을 검색하고 설정하여 디렉터리의 많은 작업을 수행할 수 있습니다. 여러 특성을 조작하는 단일 함수를 만들어 애플리케이션 및 스크립트 작성기에 대한 개발을 간소화합니다.
ADSI 클라이언트의 경우 확장은 다음과 같은 여러 가지 방법으로 ADSI 프로그래밍 환경을 보강합니다.
- ADSI 클라이언트를 만드는 개발자는 새 프로그래밍 모델을 배울 필요가 없습니다. 확장은 ADSI의 일부입니다. 개체 검색, 데이터 조작 및 보안에 동일한 패러다임을 사용합니다.
- 관리자는 확장을 사용하여 관련 디렉터리 사용 애플리케이션을 관리할 수 있습니다.
- 확장 소비자는 ADSI 개체와 확장을 하나의 통합 개체로 볼 수 있습니다.
- 기존 구성 요소는 ADSI와 통합될 수 있습니다. 이를 통해 확장은 기존 투자를 활용하고 구성 요소 간에 시너지 효과를 창출할 수 있습니다.
ADSI 확장은 다음 목표로 설계되었습니다.
- 구현하기 쉽습니다. 현재 기존 Microsoft 기술, Microsoft Visual C++ 개발 시스템 및 활성 템플릿 라이브러리를 사용하면 확장을 신속하게 만들 수 있습니다.
- 클라이언트는 하나의 IDispatch를 봅니다. 스크립트 및 Automation 작성기의 관점에서 확장 메서드와 속성은 하나의 ADSI 개체에 투명하게 혼합됩니다.
- 독립. 확장 작성기는 기존 확장에 대한 사전 지식 없이 ADSI를 독립적으로 확장할 수 있습니다.
회사 개발자 또는 ISV가 백업 프로그램을 개발해야 하는 시나리오를 고려합니다. 이 백업 애플리케이션을 사용하면 관리자가 조직 구성 단위의 모든 컴퓨터를 백업할 수 있습니다. ADSI 확장을 사용하면 다음 스크립트가 가능합니다.
Dim ou
On Error Resume Next
Set ou = GetObject("LDAP://OU=Sales, DC=Fabrikam, DC=COM")
If Err.Number<>0 Then
MsgBox("An error has occurred.")
Err.Clear
Set ou = Nothing
Exit Sub
End If
ou.Filter = Array("computer")
For each comp in ou
Debug.Print comp.Get("networkAddress")
Debug.Print comp.LastBackUp
comp.BackUpNow
Next
LastBackUp 은 속성이며 BackUpNow 는 확장 작성기에서 제공하는 메서드입니다. 이 코드는 확장 소비자와 공급자 모두에 대한 이점을 보여 줍니다. 확장 작성기는 디렉터리를 필터링, 검색 및 액세스하는 새로운 방법을 만들 필요가 없습니다. 확장 소비자는 새 프로그래밍 패러다임을 다시 학습할 필요가 없습니다. 확장 작성기에서 제공하는 새 메서드 및 속성은 ADSI의 일부로 표시됩니다.