Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
A Chamada de Procedimento Remoto Assíncrono (RPC) é uma extensão da Microsoft que aborda várias limitações do modelo RPC tradicional, conforme definido pela Open Software Foundation–Distributed Computing Environment (OSF-DCE). O RPC assíncrono separa uma chamada de procedimento remoto de seu valor de retorno, o que resolve as seguintes limitações do RPC tradicional e síncrono:
- Várias chamadas pendentes de um cliente de thread único. No modelo RPC tradicional, um cliente é bloqueado em uma chamada de procedimento remoto até que a chamada retorne. Isso impede que um cliente tenha várias chamadas pendentes, enquanto ainda tem seu thread disponível para fazer outro trabalho.
- Clientes lentos ou atrasados. Um cliente que é lento para produzir dados pode querer fazer uma chamada de procedimento remoto com dados iniciais e, em seguida, fornecer dados adicionais à medida que são produzidos. Isso não é possível com RPC convencional (síncrono).
- Servidores lentos ou atrasados. Uma chamada de procedimento remoto que leva muito tempo para ser concluída amarrará o thread de despacho durante a tarefa. Com RPC assíncrono, o servidor pode iniciar uma operação separada (assíncrona) para processar a solicitação e enviar de volta a resposta quando estiver disponível. O servidor também pode enviar a resposta incrementalmente à medida que os resultados ficam disponíveis sem ter que amarrar um thread de despacho durante a chamada remota. Ao tornar o aplicativo cliente assíncrono, você pode impedir que um servidor lento vincule desnecessariamente um aplicativo cliente.
- Transferência de grandes quantidades de dados. A transferência de grandes quantidades de dados entre o cliente e o servidor, especialmente em links lentos, vincula o thread do cliente e o thread do gerenciador do servidor durante a transferência. Com RPC e pipes assíncronos, a transferência de dados pode ocorrer de forma incremental e sem bloquear a execução de outras tarefas pelo cliente ou servidor.
Você aproveita os mecanismos de RPC assíncronos declarando funções com o atributo [async]. Como você faz essa declaração em um arquivo de configuração de atributo (ACF), não é necessário fazer alterações no arquivo IDL (Interface Definition Language); RPC assíncrono não tem efeito sobre o protocolo de fio (como os dados são transmitidos entre cliente e servidor). Isso significa que clientes síncronos e assíncronos podem se comunicar com um aplicativo de servidor assíncrono.
Esta seção apresenta uma visão geral de como desenvolver aplicativos distribuídos usando RPC assíncrono. A visão geral é apresentada nas seguintes seções:
- Declarando funções assíncronas
- RPC assíncrono do lado do cliente
- RPC assíncrona do lado do servidor
- Ordenação Causal de Chamadas Assíncronas
- Tratamento de erros
- RPC assíncrono sobre o protocolo de pipe nomeado
- Usando RPC assíncrono com tubos DCE
- DCOM assíncrono