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.
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.
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.