RPC vs RMI
A diferença básica entre RPC e RMI é que RPC é um mecanismo que permite a chamada de um procedimento em um computador remoto, enquanto RMI é a implementação de RPC em java. O RPC é neutro em termos de linguagem, mas só oferece suporte a tipos de dados primitivos a serem transmitidos. Por outro lado, o RMI é limitado a Java, mas permite a passagem de objetos. RPC segue construções tradicionais de linguagem procedural, enquanto RMI suporta design orientado a objetos.
O que é RPC?
RPC, que significa Remote Procedure Call, é 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 de sistema e envia essa mensagem para o computador remoto. O sistema operacional no servidor coleta a mensagem e a passa para o módulo no servidor chamado stub do servidor. Em seguida, o stub do servidor chama o procedimento no servidor. Por fim, os resultados são enviados de volta ao cliente.
A vantagem de usar o RPC é que ele é independente dos detalhes da rede. O programador apenas precisa especificar de forma abstrata, enquanto o sistema operacional cuidará dos detalhes da rede interna. Portanto, isso torna a programação mais fácil 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 principais sistemas operacionais, como Unix, Linux, Windows e OS X. O RPC é geralmente neutro em termos de linguagem, portanto, limita os tipos de dados aos mais primitivos, uma vez que devem ser comuns a todas as línguas. A abordagem em RPC não é orientada a objetos, mas é um mecanismo procedural tradicional como em C.
O que é RMI?
RMI, que significa Remote Method Invocation, é uma API (Application Programming Interface) que implementa RPC em java para suportar a natureza orientada a objetos. Isso permite a chamada de métodos Java em outra máquina virtual Java residente no mesmo computador ou em um remoto. A limitação do RMI é que apenas os métodos Java podem ser chamados, mas isso vem com a vantagem de que os objetos podem ser passados 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 virtual Java, mas o RMI é muito amigável para o programador e é muito fácil de usar.
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 contornar 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 tem linguagem neutra, enquanto RMI é limitado a Java.
• RPC é procedural como em C, mas RMI é orientado a objetos.
• RPC oferece suporte apenas a tipos de dados primitivos, enquanto RMI permite que objetos sejam passados como argumentos e valores de retorno. Ao usar RPC, o programador deve dividir todos os objetos compostos em tipos de dados primitivos.
• RMI é fácil de programar esse RPC.
• O RMI é mais lento do que o RPC, pois o RMI envolve a execução de bytecode java.
• O RMI permite o uso de padrões de projeto devido à natureza orientada a objetos, enquanto o RPC não tem esse recurso.
Resumo:
RPC vs RMI
RPC é um mecanismo de linguagem neutra que permite chamar um procedimento em um computador remoto. No entanto, o recurso de neutralidade de linguagem limita os tipos de dados que são passados como argumentos e valores de retorno para tipos primitivos. 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 do Java é uma desvantagem.
Cortesia de imagens: