Condividi tramite


RPC asincrono

Chiamata di procedura remota asincrona (RPC) è un'estensione Microsoft che risolve diverse limitazioni del modello RPC tradizionale, come definito dall'ambiente di calcolo Open Software Foundation-Distributed Computing (OSF-DCE). RPC asincrono separa una chiamata di routine remota dal relativo valore restituito, che risolve le limitazioni seguenti di RPC tradizionale e sincrona:

  • Più chiamate in sospeso da un client a thread singolo. Nel modello RPC tradizionale un client viene bloccato in una chiamata di routine remota fino a quando la chiamata non viene restituita. Ciò impedisce a un client di avere più chiamate in sospeso, pur avendo il thread disponibile per eseguire altre operazioni.
  • Client lente o ritardati. Un client lento a produrre dati potrebbe voler effettuare una chiamata di routine remota con dati iniziali e quindi fornire dati aggiuntivi durante la produzione. Questo non è possibile con RPC convenzionale (sincrono).
  • Server lente o ritardati. Una chiamata di procedura remota che richiede molto tempo per completare consentirà di collegare il thread di invio per la durata dell'attività. Con RPC asincrono, il server può avviare un'operazione separata (asincrona) per elaborare la richiesta e inviare nuovamente la risposta quando è disponibile. Il server può anche inviare la risposta in modo incrementale quando i risultati diventano disponibili senza dover collegare un thread di invio per la durata della chiamata remota. Rendendo asincrona l'applicazione client, è possibile impedire a un server lento di legare inutilmente un'applicazione client.
  • Trasferimento di grandi quantità di dati. Trasferimento di grandi quantità di dati tra il client e il server, in particolare sui collegamenti lenti, associa sia il thread client che il thread di gestione server per la durata del trasferimento. Con RPC e pipe asincroni, il trasferimento dei dati può essere eseguito in modo incrementale e senza impedire al client o al server di eseguire altre attività.

Si sfruttano i meccanismi RPC asincroni dichiarando le funzioni con l'attributo [asincrono]. Poiché si apporta questa dichiarazione in un file di configurazione dell'attributo (ACF), non è necessario apportare modifiche al file IDL (Interface Definition Language); RPC asincrono non ha alcun effetto sul protocollo di fili (come i dati vengono trasmessi tra client e server). Ciò significa che sia i client sincroni che asincroni possono comunicare con un'applicazione server asincrona.

Questa sezione presenta una panoramica di come sviluppare applicazioni distribuite usando RPC asincrona. La panoramica viene presentata nelle sezioni seguenti: