RPC vs RMI
La differenza fondamentale tra RPC e RMI è che RPC è un meccanismo che consente di chiamare una procedura su un computer remoto mentre RMI è l'implementazione di RPC in java. RPC è indipendente dal linguaggio ma supporta solo il passaggio di tipi di dati primitivi. D' altra parte, RMI è limitato a Java ma consente il passaggio di oggetti. RPC segue i tradizionali costrutti del linguaggio procedurale mentre RMI supporta la progettazione orientata agli oggetti.
Cos'è RPC?
RPC, che sta per Remote Procedure Call, è un tipo di comunicazione tra processi. Ciò consente di chiamare una funzione in un altro processo in esecuzione sul computer locale o su un computer remoto. Questo concetto è emerso molto tempo fa nel 1980, ma la prima famosa implementazione è stata vista in Unix.
RPC prevede diversi passaggi. Il client esegue una chiamata di procedura sul computer locale come di consueto. Il modulo chiamato client stub raccoglie gli argomenti e crea un messaggio e lo passa al sistema operativo, il sistema operativo esegue una chiamata di sistema e invia questo messaggio al computer remoto. Il sistema operativo nel server raccoglie il messaggio e lo passa al modulo sul server chiamato server stub. Quindi lo stub del server chiama la procedura sul server. Infine, i risultati vengono rispediti al cliente.
Il vantaggio dell'utilizzo di RPC è che è indipendente dai dettagli della rete. Il programmatore deve solo specificare in modo astratto mentre il sistema operativo si occuperà dei dettagli della rete interna. Quindi questo semplifica la programmazione e consente a RPC di funzionare su qualsiasi rete nonostante le differenze fisiche e di protocollo. Le implementazioni RPC sono presenti in tutti i principali sistemi operativi come Unix, Linux, Windows e OS X. RPC è generalmente neutrale rispetto al linguaggio, quindi limita i tipi di dati a quelli più primitivi poiché devono essere comuni a tutti i linguaggi. L'approccio in RPC non è orientato agli oggetti, ma è un meccanismo procedurale tradizionale come in C.
Cos'è RMI?
RMI, che sta per Remote Method Invocation, è un'API (Application Programming Interface) che implementa RPC in Java per supportare la natura orientata agli oggetti. Ciò consente di chiamare metodi Java su un' altra macchina virtuale Java che risiede sullo stesso computer o su una remota. La limitazione di RMI è che possono essere invocati solo metodi Java, ma ciò ha il vantaggio che gli oggetti possono essere passati come argomenti e restituire valori. Quando si considerano le prestazioni, RMI è più lento di RPC a causa del coinvolgimento del bytecode sulla macchina virtuale Java, ma RMI è molto intuitivo per i programmatori ed è molto facile da usare.
RMI utilizza meccanismi di sicurezza integrati in Java e fornisce anche una fabbrica di socket che consente l'utilizzo di protocolli di livello di trasporto personalizzati non TCP. Inoltre, RMI fornisce metodi per aggirare i firewall. I passaggi che si verificano in RMI sono simili a RPC. L'implementazione di RMI si occupa dei dettagli della rete interna di cui il programmatore non deve preoccuparsi.
Qual è la differenza tra RPC e RMI?
• RPC è neutrale rispetto alla lingua mentre RMI è limitato a Java.
• RPC è procedurale come in C, ma RMI è orientato agli oggetti.
• RPC supporta solo tipi di dati primitivi mentre RMI consente di passare oggetti come argomenti e restituire valori. Quando si utilizza RPC, il programmatore deve dividere qualsiasi oggetto composto in tipi di dati primitivi.
• RMI è facile da programmare che RPC.
• RMI è più lento di RPC poiché RMI implica l'esecuzione di java bytecode.
• RMI consente l'utilizzo di modelli di progettazione a causa della natura orientata agli oggetti mentre RPC non ha questa capacità.
Riepilogo:
RPC vs RMI
RPC è un meccanismo indipendente dal linguaggio che consente di chiamare una procedura su un computer remoto. Tuttavia, la funzione di neutralità del linguaggio limita i tipi di dati che vengono passati come argomenti e restituiscono valori ai tipi primitivi. RMI è l'implementazione di RPC in Java e supporta anche il passaggio di oggetti, semplificando la vita del programmatore. Il vantaggio di RMI è il supporto per la progettazione orientata agli oggetti, ma la limitazione a Java è uno svantaggio.