Condividi tramite


Funzionamento di RPC

Gli strumenti RPC lo rendono visualizzato agli utenti come se un client chiami direttamente una procedura che si trova in un programma server remoto. Il client e il server hanno ognuno i propri spazi indirizzi; ovvero ogni risorsa di memoria è allocata ai dati usati dalla procedura. Nella figura seguente viene illustrata l'architettura RPC.

Architettura rpc

Come illustrato nella figura, l'applicazione client chiama una routine stub locale anziché il codice effettivo che implementa la procedura. Gli stub vengono compilati e collegati all'applicazione client. Anziché contenere il codice effettivo che implementa la procedura remota, il codice stub del client:

  • Recupera i parametri necessari dallo spazio indirizzi client.
  • Converte i parametri in base alle esigenze in un formato NDR standard per la trasmissione in rete.
  • Chiama le funzioni nella libreria di runtime del client RPC per inviare la richiesta e i relativi parametri al server.

Il server esegue i passaggi seguenti per chiamare la procedura remota.

  1. Le funzioni della libreria di runtime RPC del server accettano la richiesta e chiamano la routine stub del server.
  2. Lo stub del server recupera i parametri dal buffer di rete e li converte dal formato di trasmissione di rete al formato necessario per il server.
  3. Lo stub del server chiama la routine effettiva nel server.

La procedura remota viene quindi eseguita, generando eventualmente parametri di output e un valore restituito. Al termine della procedura remota, una sequenza di passaggi simile restituisce i dati al client.

  1. La routine remota restituisce i dati allo stub del server.
  2. Lo stub del server converte i parametri di output nel formato necessario per la trasmissione in rete e li restituisce alle funzioni della libreria di runtime RPC.
  3. Le funzioni della libreria di runtime RPC del server trasmettono i dati nella rete al computer client.

Il client completa il processo accettando i dati in rete e restituendoli alla funzione chiamante.

  1. La libreria di runtime RPC client riceve i valori restituiti della routine remota e li restituisce allo stub del client.
  2. Lo stub client converte i dati dal rapporto di mancato recapito nel formato utilizzato dal computer client. Lo stub scrive i dati nella memoria client e restituisce il risultato al programma chiamante nel client.
  3. La routine chiamante continua come se la routine fosse stata chiamata nello stesso computer.

Le librerie di runtime vengono fornite in due parti: una libreria di importazione, collegata all'applicazione e alla libreria di runtime RPC, implementata come libreria di collegamento dinamico (DLL).

L'applicazione server contiene chiamate alle funzioni della libreria di runtime del server che registrano l'interfaccia del server e consentono al server di accettare chiamate di procedura remota. L'applicazione server contiene anche le procedure remote specifiche dell'applicazione chiamate dalle applicazioni client.