Diferença entre RPC e RMI

RPC vs RMI
 

A diferença básica entre RPC e RMI é que o RPC é um mecanismo que permite a chamada de um procedimento em um computador remoto enquanto o RMI é a implementação do RPC em java. O RPC é neutro no idioma, mas suporta apenas tipos de dados primitivos a serem passados. Por outro lado, o RMI é limitado ao Java, mas permite a passagem de objetos. O RPC segue construções tradicionais da linguagem processual, enquanto o RMI suporta o design orientado a objetos.

O que é RPC?

RPC, que significa Chamada de procedimento remoto, é um tipo de comunicação entre processos. Isso permite chamar uma função em outro processo em execução no computador local ou em um computador remoto. Este conceito surgiu há muito tempo em 1980, mas a primeira implementação famosa foi vista no Unix.

O RPC envolve várias etapas. O cliente faz uma chamada de procedimento no computador local, como de costume. O módulo chamado stub do cliente coleta os argumentos e cria uma mensagem e passa para o sistema operacional. O sistema operacional faz uma chamada do sistema e envia essa mensagem para o computador remoto. O sistema operacional no servidor coleta a mensagem e passa para o módulo no servidor chamado stub do servidor. Em seguida, o stub do servidor chama o procedimento no servidor. Finalmente, os resultados são enviados de volta ao cliente.

A vantagem de usar o RPC é que ele é independente nos detalhes da rede. O programador apenas precisa especificar de uma maneira abstrata, enquanto o sistema operacional cuidará dos detalhes da rede interna. Portanto, isso facilita a programação e permite que o RPC funcione em qualquer rede, apesar das diferenças físicas e de protocolo. As implementações de RPC estão presentes em todos os sistemas operacionais convencionais, como Unix, Linux, Windows e OS X. RPC é geralmente neutro em termos de idioma, portanto, limita os tipos de dados aos mais primitivos, pois devem ser comuns a todos os idiomas. A abordagem no RPC não é orientada a objetos, mas é um mecanismo processual tradicional como em C.

O que é RMI?

RMI, que significa Remote Method Invocation, é uma API (Application Programming Interface) que implementa RPC em java para oferecer suporte à natureza orientada a objetos. Isso permite a chamada de métodos Java em outra máquina Java Virtual que reside no mesmo computador ou em um computador remoto. A limitação do RMI é que apenas os métodos Java podem ser chamados, mas isso traz a vantagem de que os objetos podem ser transmitidos como argumentos e valores de retorno. Quando o desempenho é considerado, o RMI é mais lento que o RPC devido ao envolvimento do bytecode na máquina Java Virtual, mas o RMI é muito amigável ao programador e é muito fácil de usar..

O RMI usa mecanismos de segurança embutidos em Java e também fornece uma fábrica de soquetes que permite o uso de protocolos de camada de transporte personalizados não TCP. Além disso, o RMI fornece métodos para ignorar firewalls. As etapas que ocorrem no RMI são semelhantes ao RPC. A implementação do RMI cuida dos detalhes da rede interna, onde o programador não precisa se preocupar com eles.

Qual é a diferença entre RPC e RMI?

• RPC é neutro em linguagem, enquanto RMI é limitado a Java.

• RPC é processual como em C, mas RMI é orientado a objetos.

• O RPC suporta apenas tipos de dados primitivos, enquanto o RMI permite que objetos sejam transmitidos como argumentos e retornem valores. Ao usar o RPC, o programador deve dividir qualquer objeto composto em tipos de dados primitivos.

• RMI é fácil de programar que RPC.

• O RMI é mais lento que o RPC, pois o RMI envolve a execução do bytecode java.

• RMI permite o uso de padrões de design devido à natureza orientada a objetos, enquanto o RPC não possui esse recurso.

Resumo:

RPC vs RMI

RPC é um mecanismo de linguagem neutra que permite a chamada de um procedimento em um computador remoto. No entanto, o recurso de neutralidade de idioma limita os tipos de dados que são passados ​​como argumentos e retornam valores aos tipos primitivos. O RMI é a implementação do RPC em Java e também suporta a passagem de objetos, facilitando a vida do programador. A vantagem do RMI é o suporte ao design orientado a objetos, mas a limitação ao Java é uma desvantagem.

Cortesia de imagens:

  1. RPC síncrono versus assíncrono pela empresa CAPS (CC BY-SA 3.0)