Differenza tra RPC e RMI | RPC vs RMI

Anonim

RPC vs RMI < la differenza tra RPC e RMI è che RPC è un meccanismo che consente la chiamata di una procedura su un computer remoto mentre RMI è l'implementazione di RPC in java. RPC è linguaggio neutro ma supporta solo i tipi di dati primitivi da passare. D'altro canto, RMI è limitato a Java ma consente di passare gli oggetti. RPC segue tradizionali costrutti della lingua procedurale mentre RMI supporta il design orientato agli oggetti.

Che cos'è RPC?

RPC, che sta per Remote Procedure Call, è un tipo di comunicazione interprocessa. 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 nota implementazione è stata vista in Unix.

RPC comporta diversi passaggi. Il cliente effettua una chiamata di procedura sul computer locale come al solito. Il modulo chiamato stub del client raccoglie gli argomenti e crea un messaggio e passa al sistema operativo, il sistema operativo effettua una chiamata di sistema e invia questo messaggio al computer remoto. Il sistema operativo nel server raccoglie il messaggio e passa al modulo sul server denominato server stub. Quindi lo stub server richiama la procedura sul server. Infine, i risultati vengono inviati al cliente.

Il vantaggio di utilizzare 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 rende la programmazione più semplice e consente al RPC di lavorare in qualsiasi rete, nonostante le differenze fisiche e di protocollo. Le implementazioni di RPC sono presenti in tutti i sistemi operativi principali come Unix, Linux, Windows e OS X. RPC è generalmente neutrale, quindi limita i tipi di dati ai più primitivi poiché devono essere comuni a tutte le lingue. L'approccio in RPC non è orientato agli oggetti, ma è un meccanismo procedurale tradizionale come in C.

Che cosa è RMI?

RMI, che sta per Remote Invocation Metodo, è un'API (Application Programming Interface) che implementa RPC in java per supportare la natura orientata agli oggetti. Ciò consente di chiamare i metodi Java in un'altra macchina virtuale Java che risiede nello stesso computer o in un altro remoto. La limitazione di RMI è che solo i metodi Java possono essere richiamati, ma questo presenta il vantaggio che gli oggetti possono essere passati come argomenti e valori di ritorno. Quando le prestazioni sono considerate RMI è più lento di RPC a causa del coinvolgimento del bytecode sulla macchina Java Virtual, ma RMI è molto amichevole per il programmatore ed è molto facile da usare.

RMI utilizza meccanismi di protezione incorporati in Java e fornisce anche una fabbrica di socket che consente l'utilizzo di protocolli a livello di trasporto personalizzato non TCP. Inoltre, RMI fornisce metodi per bypassare i firewall. I passaggi che si verificano in RMI sono simili a quelli RPC. L'implementazione di RMI cura i dettagli della rete interna in cui il programmatore non deve preoccuparsi di loro.

Qual è la differenza tra RPC e RMI?

• RPC è un linguaggio neutro 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 agli oggetti di essere passati come argomenti e valori di ritorno. Quando si utilizza RPC, il programmatore deve dividere tutti gli oggetti composti su tipi di dati primitivi.

• RMI è facile programmare tale RPC.

• RMI è più lento di RPC poiché RMI prevede l'esecuzione di bytecode java.

• RMI consente l'utilizzo di modelli di design dovuti alla natura orientata agli oggetti mentre RPC non dispone di questa funzionalità.

Riepilogo:

RPC vs RMI

RPC è un meccanismo neutro di lingua che consente la chiamata di una procedura su un computer remoto. Tuttavia, la funzione di linguaggio neutro limita i tipi di dati che vengono passati come argomenti e restituisce i valori a tipi primitivi. RMI è l'implementazione di RPC in Java e supporta anche l'oggetto che passa, rendendo più facile la vita del programmatore. Il vantaggio di RMI è il supporto di progettazione orientato agli oggetti, ma la limitazione a Java è uno svantaggio.

Cortesia di immagini:

RPC sincrono o asincrono da CAPS entreprise (CC BY-SA 3. 0)