Pipes (RPC)
O construtor de tipo de pipe é um mecanismo altamente eficiente para passar grandes quantidades de dados ou qualquer quantidade de dados que não esteja disponível na memória ao mesmo tempo. Usando um pipe, o tempo de execução de RPC manipula a transferência de dados real, eliminando a sobrecarga associada a chamadas de procedimento remoto repetidas.
Depois que um cliente invoca um procedimento remoto que tem um parâmetro pipe, o cliente e o servidor inserem loops para transferir dados. Os dados podem ser produzidos no cliente ou no servidor. De qualquer forma, a quantidade de dados (em bytes) não precisa ser conhecida com antecedência. Os dados podem ser produzidos ou consumidos incrementalmente. Enquanto estiver no loop de transferência de dados, o servidor chama rotinas stub que carregam ou descarregam um buffer de dados. O cliente chama procedimentos definidos pelo programador para alocar buffers, carregar dados e descarregar dados dos buffers.
Esta seção fornece uma visão geral do uso de pipes para chamadas de procedimento remoto. Ele apresenta a visão geral nos seguintes tópicos:
- Terminologia de pipe essencial
- O estado do pipe
- Definindo pipes em arquivos IDL
- Implementação de pipe do lado do cliente
- Implementação de pipe do lado do servidor
- Regras para vários pipes
- Combinando parâmetros de pipe e não pipe
Para obter mais informações sobre sintaxe de pipe e restrições, consulte pipe na Referência de linguagem MIDL. O programa de exemplo PIPES no diretório platform software development kit (SDK) samples\rpc demonstra como usar pipes [in,out] para transferir dados entre um cliente e um servidor.