Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Способ реализации методов расширения зависит от автора расширения. Автор расширения может даже реализовать метод полностью за пределами рамок каталога. Например, разработчик программного обеспечения для резервного копирования и восстановления планирует расширить объект, называемый компьютер. Разработчик должен создать два метода: BackUp и Restore. Эти методы работают удаленно на физическом компьютере, на который указывает объект компьютера в каталоге. Выступая в качестве расширения, компонент обращается к инфраструктуре ADSI и просматривается клиентами ADSI в качестве неотъемлемой части объекта.
В следующих сценариях описаны ситуации, когда создание расширения в ADSI будет выгодно:
Создайте расширение для интеграции компонента с объектом каталога. Так как в каталоге есть объект пользователя, разработчик отдела кадров может создать расширение ADSI, которое заполняет другие данные в каталоге при создании пользователя.
Создайте расширение, если компоненту требуется поиск каталога. Компонент может требовать каталог в качестве отправной точки для поиска. Например, при создании нового приложения. Объект приложения, ToolApp, можно опубликовать в каталоге. Ваше приложение может поддерживать уведомления о состоянии в коллекции почтовых серверов. Вы решили сделать это приложение расширением ADSI.
Теперь пользователь может искать все экземпляры ToolApp в каталоге. Для каждого возвращаемого объекта пользователь может вызвать NotifyNow(). Приложение или расширение может получать более текущие данные объекта в каталоге и асинхронно уведомлять каждый сервер.
Создайте расширение в качестве соединения между пространствами имен и моделями программирования. Например, ISV изобретает новую модель объектов для служб печати. Объект printQueue уже определен в каталоге. IsV может создать расширение ADSI и связать его с объектом printQueue. Пользователи ADSI могут привязаться к объекту printQueue и начать использовать объектную модель для isV. С точки зрения клиента ADSI эта точка соединения является прозрачной.
Создайте расширение для упрощения задач. Многие задачи в каталоге можно выполнить путем поиска и задания нескольких атрибутов в объекте или нескольких объектах. Создание одной функции для обработки нескольких атрибутов упрощает разработку для разработчиков приложений и сценариев.
Для клиентов ADSI расширения расширяют среду программирования ADSI несколькими способами:
- Разработчикам, создающих клиенты ADSI, не нужно изучать новую модель программирования. Расширения являются частью ADSI. Они будут использовать ту же парадигму для поиска, обработки данных и защиты объектов.
- Администраторы могут управлять связанными приложениями с поддержкой каталогов с помощью расширений.
- Потребители расширений могут просматривать объект и расширение 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.