Differenza tra RPC e RMI

Autore: Laura McKinney
Data Della Creazione: 1 Aprile 2021
Data Di Aggiornamento: 15 Maggio 2024
Anonim
Difference Between API and Web Services
Video: Difference Between API and Web Services

Contenuto


RPC e RMI sono i meccanismi che consentono a un client di invocare la procedura o il metodo dal server stabilendo la comunicazione tra client e server. La differenza comune tra RPC e RMI è che RPC supporta solo programmazione procedurale mentre RMI supporta programmazione orientata agli oggetti.

Un'altra grande differenza tra i due è che consistono nei parametri passati alla chiamata di procedure remote strutture dati ordinarie. D'altra parte, i parametri passati al metodo remoto sono costituiti da oggetti.

  1. Tabella di comparazione
  2. Definizione
  3. Differenze chiave
  4. Conclusione

Tabella di comparazione

Base per il confrontoRPCRMI
supportiProgrammazione procedurale
Programmazione orientata agli oggetti
parametriLe strutture di dati ordinarie vengono passate a procedure remote.Gli oggetti vengono passati a metodi remoti.
EfficienzaInferiore a RMIPiù che RPC e supportato dal moderno approccio di programmazione (ovvero paradigmi orientati agli oggetti)
Spese generaliDi Più
Meno comparativamente
I parametri in-out sono obbligatori.Non necessariamente
Facilità di programmazione
alto
Basso


Definizione di RPC

Chiamata di procedura remota (RPC) è una funzione del linguaggio di programmazione ideata per il calcolo distribuito e basata sulla semantica di procedura locale chiamate. Si tratta delle forme più comuni di servizio remoto ed è stato progettato come un modo per astrarre il meccanismo di chiamata di procedura da utilizzare tra i sistemi collegati attraverso una rete. È simile al meccanismo IPC in cui il sistema operativo consente ai processi di gestire i dati condivisi e gestire un ambiente in cui processi diversi vengono eseguiti su sistemi separati e richiedono necessariamente una comunicazione basata.

Comprendiamo come viene implementato RPC attraverso i passaggi indicati:

  • Il processo client chiama lo stub client con parametri e la sua esecuzione viene sospesa fino al completamento della chiamata.
  • I parametri vengono quindi tradotti in forma indipendente dalla macchina eseguendo il marshalling tramite lo stub client. Quindi viene preparato il contenuto che contiene la rappresentazione dei parametri.
  • Per trovare l'identità del sito lo stub client interagisce con il server dei nomi in cui esiste la procedura remota.
  • Utilizzando il protocollo di blocco, il client stub al sito in cui esiste una chiamata di procedura remota. Questo passaggio interrompe lo stub del client fino a quando non riceve una risposta.


  • Il sito del server riceve l'invio dal lato client e lo converte in un formato specifico per la macchina.
  • Ora lo stub del server esegue una chiamata sulla procedura del server insieme ai parametri e lo stub del server viene interrotto fino al completamento della procedura.
  • La procedura del server restituisce i risultati generati allo stub del server e i risultati vengono convertiti in formato indipendente dalla macchina nello stub del server e creano un contenente i risultati.
  • Il risultato viene inviato allo stub client che viene riconvertito nel formato specifico della macchina adatto allo stub client.
  • All'ultimo client, stub restituisce i risultati al processo client.

Definizione di RMI

Invocazione metodo remoto (RMI) è simile a RPC ma è specifico della lingua e una funzionalità di Java. Un thread è autorizzato a chiamare il metodo su un oggetto remoto. Per mantenere la trasparenza sul lato client e server, implementa l'oggetto remoto usando stub e scheletri. Lo stub risiede con il client e per l'oggetto remoto si comporta come un proxy.

Quando un client chiama un metodo remoto, viene chiamato lo stub per il metodo remoto. Lo stub client è responsabile della creazione e dell'ingaggio del pacco contenente il nome di un metodo e i parametri smistati, e lo scheletro è responsabile della ricezione del pacco.

Lo scheletro annulla i parametri e richiama il metodo desiderato sul server. Lo scheletro esegue il marshalling del valore (o delle eccezioni) specificato con il pacco e lo invia al troncone del cliente. Lo stub riassembla il pacco di reso e lo invia al cliente.

In Java, i parametri vengono passati ai metodi e restituiti sotto forma di riferimento. Ciò potrebbe essere problematico per il servizio RMI poiché non tutti gli oggetti sono probabilmente metodi remoti. Quindi, deve determinare quali potrebbero essere passati come riferimento e quali no.

Java utilizza il processo denominato come serializzazione dove gli oggetti vengono passati come valore. L'oggetto remoto è localizzato per valore di passaggio. Può anche passare un oggetto per riferimento passando un riferimento remoto all'oggetto insieme all'URL della classe stub. Passa per riferimento limita uno stub per l'oggetto remoto.

  1. RPC supporta i paradigmi di programmazione procedurale quindi è basato su C, mentre RMI supporta i paradigmi di programmazione orientata agli oggetti ed è basato su Java.
  2. I parametri passati alle procedure remote in RPC sono le normali strutture di dati. Al contrario, RMI trasmette gli oggetti come parametro al metodo remoto.
  3. L'RPC può essere considerato come la versione precedente di RMI ed è utilizzato nei linguaggi di programmazione che supportano la programmazione procedurale e può utilizzare solo il metodo pass by value. Al contrario, la struttura RMI è concepita in base al moderno approccio di programmazione, che potrebbe utilizzare il passaggio per valore o riferimento. Un altro vantaggio di RMI è che i parametri passati per riferimento possono essere modificati.
  4. Il protocollo RPC genera più overhead di RMI.
  5. I parametri passati in RPC devono essere "dentro fuori", Il che significa che il valore passato alla procedura e il valore di output devono avere gli stessi tipi di dati. Al contrario, non vi è alcuna costrizione a passare "dentro fuori"Parametri in RMI.
  6. In RPC, i riferimenti potrebbero non essere probabili perché i due processi hanno lo spazio di indirizzi distinto, ma è possibile in caso di RMI.

Conclusione

Sia RPC che RMI hanno lo stesso scopo, ma sono usati in linguaggi che supportano paradigmi di programmazione diversi, quindi hanno caratteristiche distinte.