Benefícios do uso de extensões ADSI

A maneira como os métodos de extensão são implementados depende do gravador de extensão. Um gravador de extensão pode até mesmo implementar um método completamente fora do escopo do diretório. Por exemplo, um desenvolvedor de software de backup e restauração planeja estender um objeto chamado computador. O desenvolvedor deve criar dois métodos: BackUp e Restore. Esses métodos operam remotamente no computador físico para o qual o objeto de computador no diretório aponta. Ao atuar como uma extensão, o componente acessa a infraestrutura ADSI e é visualizado pelos clientes ADSI como parte integrante do objeto.

Os cenários a seguir descrevem situações em que a criação de uma extensão para ADSI seria vantajosa:

  • Crie uma extensão para integrar um componente com o objeto de diretório. Como há um objeto de usuário no diretório, um desenvolvedor de RH pode desejar criar uma extensão ADSI que preencha outros dados no diretório quando um usuário é criado.

  • Crie uma extensão se um componente exigir uma pesquisa de diretório. Um componente pode exigir um diretório como ponto de partida para uma pesquisa. Por exemplo, ao criar um novo aplicativo. Um objeto de aplicativo, ToolApp, pode ser publicado no diretório. Seu aplicativo pode oferecer suporte a notificações de status em uma coleção de servidores de email. Você decide tornar este aplicativo uma extensão ADSI.

    Agora, um usuário pode procurar todas as instâncias do ToolApp no diretório. Para cada objeto retornado, o usuário pode emitir uma chamada para NotifyNow(). Um aplicativo ou extensão pode obter mais dados de objeto atuais no diretório e notificar cada servidor de forma assíncrona.

  • Crie uma extensão como uma junção entre namespaces e modelos de programação. Por exemplo, um ISV inventa um novo modelo de objeto para serviços de impressão. O objeto printQueue já está definido no diretório. O ISV pode criar uma extensão ADSI e associá-la ao objeto printQueue . Os usuários ADSI podem se vincular a um objeto printQueue e começar a usar o modelo de objeto para o ISV. Do ponto de vista do cliente ADSI, esse ponto de junção é transparente.

  • Crie uma extensão para simplificar tarefas. Muitas tarefas no diretório podem ser realizadas pesquisando e definindo vários atributos em um objeto ou vários objetos. Ao criar uma única função para manipular vários atributos, simplifica o desenvolvimento para escritores de aplicativos e scripts.

Para clientes ADSI, as extensões enriquecem o ambiente de programação ADSI de várias maneiras:

  • Os desenvolvedores que criam clientes ADSI não precisam aprender um novo modelo de programação. As extensões fazem parte da ADSI. Eles usariam o mesmo paradigma para pesquisa, manipulação de dados e proteção de objetos.
  • Os administradores podem gerenciar aplicativos relacionados habilitados para diretório usando extensões.
  • Os consumidores de extensão podem exibir um objeto ADSI e uma extensão como um objeto integrado.
  • Os componentes existentes podem ser integrados ao ADSI, o que permite que as extensões aproveitem os investimentos existentes e criem sinergia entre os componentes.

As extensões ADSI foram projetadas com os seguintes objetivos:

  • Fácil de implementar. Com as tecnologias atuais existentes da Microsoft, o sistema de desenvolvimento Microsoft Visual C++ e a Active Template Library, uma extensão pode ser criada rapidamente.
  • Os clientes visualizam um IDispatch. Da perspectiva dos gravadores de script e automação, os métodos e propriedades de extensão são misturados de forma transparente em um objeto ADSI.
  • Independente. Os gravadores de extensão podem estender ADSI de forma independente sem conhecimento prévio das extensões existentes.

Considere este cenário: um desenvolvedor corporativo ou um ISV precisa desenvolver um programa de backup. Esse aplicativo de backup permite que um administrador faça backup de todos os computadores em uma unidade organizacional. Com uma extensão ADSI, o seguinte script é possível.

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 é uma propriedade e BackUpNow é um método que o gravador de extensão fornece. O código mostra os benefícios tanto para os consumidores de extensão quanto para os provedores. O gravador de extensão não precisa criar uma nova maneira de filtrar, pesquisar e acessar o diretório. O consumidor extensionista não precisa reaprender um novo paradigma de programação. Novos métodos e propriedades que o gravador de extensão fornece são vistos como parte do ADSI.