Condividi tramite


RPC asincrono

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

  • Più chiamate in sospeso da un client a thread singolo. Nel modello RPC tradizionale, un client viene bloccato in una chiamata di procedura 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 lenti o ritardati. Un client lento a produrre dati potrebbe voler effettuare una chiamata di procedura remota con i dati iniziali e quindi fornire dati aggiuntivi durante la produzione. Questo non è possibile con RPC convenzionale (sincrono).
  • Server lenti o ritardati. Una chiamata di procedura remota che richiede molto tempo per completare collega 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 di nuovo la risposta quando è disponibile. Il server può anche inviare la risposta in modo incrementale man mano che 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. Il trasferimento di grandi quantità di dati tra il client e il server, soprattutto tramite collegamenti lenti, collega sia il thread client che il thread di gestione server per la durata del trasferimento. Con RPC e pipe asincrone, il trasferimento dei dati può essere eseguito in modo incrementale e senza impedire al client o al server di eseguire altre attività.

È possibile sfruttare 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 alcuna modifica al file IDL (Interface Definition Language); RPC asincrono non ha alcun effetto sul protocollo di collegamento (modalità di trasmissione dei dati tra client e server). Ciò significa che i client sincroni e asincroni possono comunicare con un'applicazione server asincrona.

Questa sezione presenta una panoramica dello sviluppo di applicazioni distribuite tramite RPC asincrona. La panoramica è presentata nelle sezioni seguenti: