Risposte:
RPC è basato su C e come tale ha strutturato la semantica di programmazione, dall'altro lato, RMI è una tecnologia basata su Java ed è orientata agli oggetti.
Con RPC puoi semplicemente chiamare le funzioni remote esportate in un server, in RMI puoi avere riferimenti a oggetti remoti e invocare i loro metodi, oltre a passare e restituire più riferimenti a oggetti remoti che possono essere distribuiti tra molte istanze JVM, quindi è molto più potente .
RMI si distingue quando emerge la necessità di sviluppare qualcosa di più complesso di una pura architettura client-server. È molto facile distribuire oggetti su una rete consentendo a tutti i client di comunicare senza dover stabilire esplicitamente connessioni individuali.
La differenza principale tra RPC e RMI è che RMI coinvolge oggetti . Invece di chiamare le procedure in remoto utilizzando una funzione proxy , utilizziamo invece un oggetto proxy .
Vi è una maggiore trasparenza con l'RMI, in particolare grazie allo sfruttamento di oggetti, riferimenti, eredità, polimorfismo ed eccezioni quando la tecnologia è integrata nel linguaggio.
RMI è anche più avanzato di RPC, consentendo l' invocazione dinamica , in cui le interfacce possono cambiare in fase di esecuzione e l' adattamento degli oggetti , che fornisce un ulteriore livello di astrazione.
1. Approccio:
RMI utilizza un paradigma orientato agli oggetti in cui l'utente deve conoscere l'oggetto e il metodo dell'oggetto che deve invocare.
RPC non tratta gli oggetti. Piuttosto, chiama subroutine specifiche già stabilite.
2. Funzionando:
Con RPC, si ottiene una chiamata di procedura che assomiglia molto a una chiamata locale. RPC gestisce le complessità legate al passaggio della chiamata dal computer locale al computer remoto.
RMI fa la stessa cosa, ma RMI passa un riferimento all'oggetto e al metodo che viene chiamato.
RMI = RPC + Orientamento all'oggetto
3. Meglio uno:
RMI è un approccio migliore rispetto a RPC, soprattutto con programmi più grandi in quanto fornisce un codice più pulito che è più facile da identificare se qualcosa va storto.
4. Esempi di sistema:
Sistemi RPC: SUN RPC, DCE RPC
Sistemi RMI: Java RMI, CORBA, Microsoft DCOM / COM +, SOAP (Simple Object Access Protocol)
Remote Procedure Call (RPC) è una comunicazione tra processi che consente di chiamare una funzione in un altro processo residente in macchina locale o remota.
La chiamata a metodo remoto (RMI) è un'API che implementa RPC in java con il supporto di paradigmi orientati agli oggetti.
Puoi pensare di invocare RPC è come chiamare una procedura C. RPC supporta tipi di dati primitivi in cui come metodo di supporto RMI parametri / tipi restituiti come oggetti java.
RMI è facile da programmare a differenza di RPC. Puoi pensare alla tua logica aziendale in termini di oggetti anziché in una sequenza di tipi di dati primitivi.
RPC è neutro rispetto al linguaggio a differenza di RMI, che è limitato a Java
RMI è un po 'più lento di RPC
Dai un'occhiata a questo articolo per l'implementazione di RPC in C
RMI o Remote Method Invokation è molto simile alla chiamata RPC o Remote Procedure in quanto entrambi i client inviano oggetti proxy (o stub) al server, tuttavia la sottile differenza è che RPC lato client invoca FUNZIONI attraverso la funzione proxy e RMI invoca METODI tramite funzione proxy. RMI è considerato leggermente superiore in quanto è una versione orientata agli oggetti di RPC.
Da qui .
Per ulteriori informazioni ed esempi, dai un'occhiata qui .
La differenza tra RMI e RPC è che:
method
e a function
? In Java non ci sono funzioni ... ma in OOP, per quanto posso ricordare, sono sinonimi, e così sono invocation
e call
.
RPC è un vecchio protocollo basato su C. Può invocare una procedura remota e farlo sembrare una chiamata locale. RPC gestisce la complessità di passare quella chiamata remota al server e ottenere il risultato al client.
Anche Java RMI ottiene la stessa cosa ma in modo leggermente diverso. Utilizza riferimenti a oggetti remoti . Quindi, ciò che fa è che invia un riferimento all'oggetto remoto insieme al nome del metodo da invocare. È meglio perché risulta più pulito il codice nel caso di programmi di grandi dimensioni e anche la distribuzione di oggetti sulla rete consente a più client di invocare metodi nel server invece di stabilire ogni connessione individualmente.
RMI
in Java sia qualcosa di similegRPC
a .Net ...