Partilhar via


Proxy

Um proxy reside no espaço de endereço do processo de chamada e atua como um substituto para o objeto remoto. Da perspectiva do objeto chamador, o proxy é o objeto. Normalmente, a função do proxy é empacotar os parâmetros de interface para chamadas a métodos em suas interfaces de objeto. O proxy empacota os parâmetros em um buffer de mensagens e passa o buffer para o canal, que manipula o transporte entre processos. O proxy é implementado como um objeto agregado ou composto. Ele contém uma parte do gerenciador fornecida pelo sistema chamada gerenciador de proxy e um ou mais componentes específicos da interface chamados proxies de interface. O número de proxies de interface é igual ao número de interfaces de objeto que foram expostas a esse cliente específico. Para o cliente que está em conformidade com o modelo de objeto componente, o proxy parece ser o objeto real.

Observação

Com o empacotamento personalizado, o proxy pode ser implementado de forma semelhante ou pode se comunicar diretamente com o objeto sem usar um stub.

 

Cada proxy de interface é um objeto de componente que implementa o código de empacotamento para uma das interfaces do objeto. O proxy representa o objeto para o qual ele fornece código de empacotamento. Cada proxy também implementa a interface IRpcProxyBuffer. Embora a interface de objeto representada pelo proxy seja pública, a implementação IRpcProxyBuffer é privada e é usada internamente no proxy. O gerenciador de proxy mantém o controle dos proxies de interface e também contém a implementação pública da interface IUnknown de controle para a agregação. Cada proxy de interface pode existir em uma DLL separada que é carregada quando a interface que ele oferece suporte é materializada para o cliente.

Estrutura da Procuração

O diagrama a seguir mostra a estrutura de um proxy que suporta o empacotamento padrão de parâmetros pertencentes a duas interfaces: IA1 e IA2. Cada proxy de interface implementa IRpcProxyBuffer para comunicação interna entre as partes agregadas. Quando o proxy está pronto para passar seus parâmetros empacotados através do limite do processo, ele chama métodos na interface IRpcChannelBuffer , que é implementada pelo canal. O canal, por sua vez, encaminha a chamada para a biblioteca de tempo de execução RPC para que ela possa alcançar seu destino no objeto.

Diagram that shows the structure of the proxy.

Channel

Comunicação entre Objetos

Detalhes do marshaling

Microsoft RPC

Stub