Partilhar via


Arquitetura de extensão ADSI

As extensões ADSI são baseadas no modelo de agregação COM com vários aprimoramentos. As extensões devem respeitar todas as regras COM. Para obter mais informações, consulte a especificação COM.

Aqui está uma revisão do modelo de agregação COM.

modelo de agregação com

Um agregado, também conhecido como um objeto interno, é um objeto que um agregador cria. Seu objeto de extensão é uma agregação.

Um agregador, também conhecido como objeto externo, é um objeto que cria uma agregação. ADSI é um agregador.

O objeto interno delega seu IUnknown ao IUnknown do agregador.

As extensões ADSI adicionam os seguintes aprimoramentos à agregação COM para atender aos seus requisitos:

  • Permite que cada gravador de extensão estenda objetos ADSI. Um gravador de extensão pode registrar sua extensão com ADSI e não ser afetado pela existência de outras extensões. No modelo de agregação COM, o agregador deve ter o CLSID do agregado. ADSI relaxa este requisito, fazendo-se agir como o agregador para todas as extensões. Portanto, em vez de formar uma camada de componentes aninhados, as extensões estão no mesmo nível.
  • Permite um objeto, um IDispatch. O suporte à automação é uma das características mais importantes do ADSI. O suporte à automação é obtido porque o ADSI suporta a interfaceIDispatch. Os criadores de extensões são incentivados a suportar a interface IDispatch. No entanto, deve haver apenas um IDispatch interface em um determinado objeto. O ADSI integra e coleta as muitas interfaces IDispatch de diferentes extensões e as apresenta como uma IDispatch consistente para o controlador de automação. Cada extensão, quando agregada, deve redirecionar suas IDispatch chamadas para o IDispatch fornecido pela ADSI.

Todas essas soluções são possíveis devido aos serviços que o ADSI Object Manager fornece, que residem em cada provedor ADSI.

A figura a seguir mostra a arquitetura do modelo de extensão ADSI.

arquitetura do modelo de extensão ADSI

ADSI suporta dois níveis de extensão:

  • Suporte de vinculação antecipada. Este é o primeiro nível de extensão. Uma extensão deve suportar o registo e implementar novas interfaces. Os consumidores de extensão devem usar ferramentas ou hosts de script que oferecem suporte à vinculação antecipada, por exemplo, Visual C++ , Visual Basic.
  • Suporte de vinculação tardia. Isso acontece quando uma extensão satisfaz todos os requisitos de vinculação iniciais e implementa uma interface adicional, IADsExtension. Os implementadores de extensão podem usar qualquer ferramenta que opere como um controlador de automação, como o Windows Script Host, Ative Server Pages ou HTML com VBScript.