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