Como funciona a RPC
As ferramentas RPC fazem com que ele apareça para os usuários como se um cliente chamasse diretamente um procedimento localizado em um programa de servidor remoto. Cada cliente e servidor têm seus próprios espaços de endereço; ou seja, cada um tem seu próprio recurso de memória alocado aos dados usados pelo procedimento. A figura a seguir ilustra a arquitetura RPC.
Como a ilustração mostra, o aplicativo cliente chama um procedimento stub local em vez do código real que implementa o procedimento. Os stubs são compilados e vinculados ao aplicativo cliente. Em vez de conter o código real que implementa o procedimento remoto, o código stub do cliente:
- Recupera os parâmetros necessários do espaço de endereço do cliente.
- Converte os parâmetros conforme necessário em um formato NDR padrão para transmissão pela rede.
- Chama funções na biblioteca de tempo de execução do cliente RPC para enviar a solicitação e seus parâmetros para o servidor.
O servidor executa as etapas a seguir para chamar o procedimento remoto.
- As funções de biblioteca de tempo de execução RPC do servidor aceitam a solicitação e chamam o procedimento stub do servidor.
- O stub do servidor recupera os parâmetros do buffer de rede e os converte do formato de transmissão de rede para o formato de que o servidor precisa.
- O stub do servidor chama o procedimento real no servidor.
Em seguida, o procedimento remoto é executado, possivelmente gerando parâmetros de saída e um valor retornado. Quando o procedimento remoto é concluído, uma sequência semelhante de etapas retorna os dados para o cliente.
- O procedimento remoto retorna seus dados para o stub do servidor.
- O stub do servidor converte parâmetros de saída para o formato necessário para transmissão pela rede e os retorna para as funções de biblioteca de tempo de execução RPC.
- As funções de biblioteca de tempo de execução RPC do servidor transmitem os dados na rede para o computador cliente.
O cliente conclui o processo aceitando os dados pela rede e retornando-os para a função de chamada.
- A biblioteca de tempo de execução RPC do cliente recebe os valores retornados de procedimento remoto e os retorna para o stub do cliente.
- O stub do cliente converte os dados de sua NDR para o formato usado pelo computador cliente. O stub grava dados na memória do cliente e retorna o resultado para o programa de chamada no cliente.
- O procedimento de chamada continua como se o procedimento tivesse sido chamado no mesmo computador.
As bibliotecas em tempo de execução são fornecidas em duas partes: uma biblioteca de importação, que está vinculada ao aplicativo e à biblioteca de tempo de execução RPC, que é implementada como uma DLL (biblioteca de vínculo dinâmico).
O aplicativo de servidor contém chamadas para as funções de biblioteca em tempo de execução do servidor que registram a interface do servidor e permitem que o servidor aceite chamadas de procedimento remoto. O aplicativo de servidor também contém os procedimentos remotos específicos do aplicativo que são chamados pelos aplicativos cliente.