Diferença entre RPC e RMI | RPC vs RMI

Anonim

RPC vs RMI

O básico A diferença 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 no java. O RPC é neutro em idioma, mas apenas suporta tipos de dados primitivos a serem aprovados. Por outro lado, o RMI é limitado a Java, mas permite a passagem de objetos. O RPC segue as construções de linguagem processual tradicionais enquanto o RMI oferece suporte ao 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 executado no computador local ou em um computador remoto. Esse conceito surgiu há muito tempo em 1980, mas a primeira implementação famosa foi vista no Unix.

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 coleciona os argumentos e cria uma mensagem e passa para o sistema operacional, o sistema operacional faz uma chamada do sistema e envia esta 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 para o cliente.

A vantagem de usar o RPC é que é independente nos detalhes da rede. O programador só precisa especificar de forma abstrata, enquanto o sistema operacional irá cuidar dos detalhes internos da rede. 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 do RPC estão presentes em todos os sistemas operacionais convencionais, como Unix, Linux, Windows e OS X. O RPC geralmente é neutro do idioma, portanto limita os tipos de dados aos mais primitivos, pois eles devem ser comuns a todas as linguagens. 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 o RPC no java para suportar a natureza orientada a objetos. Isso permite chamar métodos Java em outra máquina Virtual Java que reside no mesmo computador ou em um remoto. A limitação do RMI é que apenas os métodos Java podem ser invocados, mas isso vem com a vantagem de os objetos serem passados ​​como argumentos e valores de retorno. Quando o desempenho é considerado, o RMI é mais lento do que o RPC devido ao envolvimento do bytecode na máquina Java Virtual, mas o RMI é muito programável e é muito fácil de usar.

O RMI usa mecanismos de segurança incorporados 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 os 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?

• O RPC é o idioma neutro, enquanto o RMI é limitado a Java.

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

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

• O RMI é fácil de programar aquele RPC.

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

• O RMI permite o uso de padrões de design devido à natureza orientada a objetos enquanto o RPC não possui essa capacidade.

Resumo:

RPC vs RMI

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

Imagens Cortesia:

  1. RPC síncrono versus assíncrono pela CAPS entreprise (CC BY-SA 3. 0)