Поделиться через


Преимущества использования расширений ADSI

Способ реализации методов расширения зависит от модуля записи расширений. Модуль записи расширений может даже реализовать метод полностью за пределами область каталога. Например, разработчик программного обеспечения резервного копирования и восстановления планирует расширить объект, называемый компьютером. Разработчик должен создать два метода: BackUp и Restore. Эти методы работают удаленно на физическом компьютере, на который указывает объект компьютера в каталоге. Выступая в качестве расширения, компонент обращается к инфраструктуре ADSI и просматривается клиентами ADSI в качестве неотъемлемой части объекта.

В следующих сценариях описаны ситуации, когда создание расширения в ADSI будет выгодно:

  • Создайте расширение для интеграции компонента с объектом каталога. Так как в каталоге есть объект пользователя , разработчик отдела кадров может создать расширение ADSI, заполняющее другие данные в каталоге при создании пользователя .

  • Создайте расширение, если компоненту требуется поиск каталога. Компонент может требовать каталог в качестве отправной точки для поиска. Например, при создании нового приложения. Объект приложения ToolApp можно опубликовать в каталоге. Ваше приложение может поддерживать уведомления о состоянии в коллекции почтовых серверов. Вы решили сделать это приложение расширением ADSI.

    Теперь пользователь может искать все экземпляры ToolApp в каталоге. Для каждого возвращаемого объекта пользователь может вызвать NotifyNow(). Приложение или расширение может получать более текущие данные объекта в каталоге и асинхронно уведомлять каждый сервер.

  • Создайте расширение в качестве соединения между пространствами имен и моделями программирования. Например, isV изобретает новую объектную модель для служб печати. Объект printQueue уже определен в каталоге. IsV может создать расширение ADSI и связать его с объектом printQueue . Пользователи ADSI могут привязаться к объекту printQueue и начать использовать объектную модель для поставщика программного обеспечения. С точки зрения клиента ADSI эта точка соединения является прозрачной.

  • Создайте расширение для упрощения задач. Многие задачи в каталоге можно выполнить путем поиска и задания нескольких атрибутов в объекте или нескольких объектах. Создав одну функцию для управления несколькими атрибутами, она упрощает разработку для записи приложений и сценариев.

Для клиентов ADSI расширения расширяют среду программирования ADSI несколькими способами:

  • Разработчикам, создающих клиенты ADSI, не нужно изучать новую модель программирования. Расширения являются частью ADSI. Они будут использовать ту же парадигму для поиска, обработки данных и защиты объектов.
  • Администратор istrator может управлять связанными приложениями с поддержкой каталогов с помощью расширений.
  • Потребители расширений могут просматривать объект и расширение ADSI как один интегрированный объект.
  • Существующие компоненты могут быть интегрированы с ADSI, что позволяет расширениям использовать существующие инвестиции и создавать взаимодействие между компонентами.

Расширения ADSI были разработаны со следующими целями:

  • Легко реализовать. С помощью существующих технологий Майкрософт, системы разработки Microsoft Visual C++ и активной библиотеки шаблонов можно быстро создать расширение.
  • Клиенты просматривают один IDispatch. С точки зрения записи скриптов и автоматизации методы расширения и свойства прозрачно смешиваются в один объект 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.