Recomendado, 2024

Escolha Do Editor

Diferença entre RPC e RMI

RPC e RMI são os mecanismos que permitem que um cliente invoque o procedimento ou método do servidor, estabelecendo a comunicação entre o cliente e o servidor. A diferença comum entre RPC e RMI é que o RPC suporta apenas programação procedural, enquanto o RMI suporta programação orientada a objetos .

Outra grande diferença entre os dois é que os parâmetros passados ​​para a chamada de procedimentos remotos consistem em estruturas de dados comuns . Por outro lado, os parâmetros passados ​​para o método remoto consistem em objetos .

Gráfico de comparação

Base para comparaçãoRPCRMI
SuportaProgramação processual
Programação orientada a objetos
ParâmetrosEstruturas de dados comuns são passadas para procedimentos remotos.Objetos são passados ​​para métodos remotos.
EficiênciaMenor que RMIMais do que o RPC e suportado pela moderna abordagem de programação (ou seja, paradigmas orientados a objetos)
Despesas geraisMais
Menos comparativamente
Parâmetros de entrada e saída são obrigatórios.simNão necessariamente
Provisão de facilidade de programação
Alto
baixo

Definição de RPC

O Remote Procedure Call (RPC) é um recurso de linguagem de programação desenvolvido para a computação distribuída e baseado na semântica de chamadas de procedimento local . São as formas mais comuns de serviço remoto e foram projetadas como uma forma de abstrair o mecanismo de chamada de procedimento a ser usado entre sistemas conectados por meio de uma rede. É semelhante ao mecanismo IPC, no qual o sistema operacional permite que os processos gerenciem dados compartilhados e lidem com um ambiente em que diferentes processos estejam sendo executados em sistemas separados e, necessariamente, exijam comunicação baseada em mensagens.

Vamos entender como o RPC é implementado pelas etapas fornecidas:

  • O processo do cliente chama o stub do cliente com parâmetros e sua execução é suspensa até que a chamada seja concluída.
  • Os parâmetros são então traduzidos para o formato independente de máquina, através do comando stub do cliente. Em seguida, a mensagem é preparada contendo a representação dos parâmetros.
  • Para localizar a identidade do site, o stub do cliente intercomunique-se com o servidor de nomes no qual o procedimento remoto existe.
  • Usando o protocolo de bloqueio, o stub do cliente envia a mensagem ao site onde existe a chamada de procedimento remoto. Esta etapa interrompe o stub do cliente até receber uma resposta.
  • O site do servidor recebe a mensagem enviada do lado do cliente e a converte em formato específico da máquina.
  • Agora o stub do servidor executa uma chamada no procedimento do servidor junto com os parâmetros, e o stub do servidor é descontinuado até que o procedimento seja concluído.
  • O procedimento do servidor retorna os resultados gerados ao stub do servidor e os resultados são convertidos em formato independente de máquina no stub do servidor e criam uma mensagem contendo os resultados.
  • A mensagem de resultado é enviada para o stub do cliente, que é convertido novamente no formato específico da máquina, adequado para o stub do cliente.
  • No último cliente, stub retorna os resultados para o processo do cliente.

Definição de RMI

O Remote Method Invocation (RMI) é semelhante ao RPC, mas é específico da linguagem e é um recurso do Java. Um thread tem permissão para chamar o método em um objeto remoto. Para manter a transparência no lado do cliente e do servidor, ele implementa objetos remotos usando stubs e esqueletos. O stub reside no cliente e, para o objeto remoto, ele se comporta como um proxy.

Quando um cliente chama um método remoto, o stub do método remoto é chamado. O stub do cliente é responsável por criar e enviar o pacote contendo o nome de um método e os parâmetros empacotados, e o esqueleto é responsável por receber o pacote.

O esqueleto unmarshals parâmetros e invoca o método desejado no servidor. O esqueleto empacota o valor dado (ou exceções) com o pacote e o envia ao stub do cliente. O stub remonta o pacote de retorno e o envia para o cliente.

Em Java, os parâmetros são passados ​​para métodos e retornados na forma de referência. Isso pode ser problemático para o serviço RMI, pois nem todos os objetos são possivelmente métodos remotos. Então, deve determinar qual poderia ser passado como referência e o que não poderia.

Java usa o processo nomeado como serialização, onde os objetos são passados ​​como valor. O objeto remoto é localizado por passagem por valor. Ele também pode passar um objeto por referência passando uma referência remota ao objeto juntamente com a URL da classe stub. Passar por referência restringe um stub para o objeto remoto.

Principais diferenças entre RPC e RMI

  1. O RPC suporta paradigmas de programação processual, portanto, é baseado em C, enquanto o RMI suporta paradigmas de programação orientada a objetos e é baseado em java.
  2. Os parâmetros passados ​​para procedimentos remotos no RPC são as estruturas de dados comuns. Pelo contrário, o RMI transmite objetos como um parâmetro para o método remoto.
  3. O RPC pode ser considerado como a versão mais antiga do RMI, e é usado nas linguagens de programação que suportam programação processual, e só pode usar o método pass by value. Em contrapartida, a facilidade RMI é concebida com base na abordagem de programação moderna, que poderia usar passagem por valor ou referência. Outra vantagem do RMI é que os parâmetros passados ​​por referência podem ser alterados.
  4. O protocolo RPC gera mais overheads do que o RMI.
  5. Os parâmetros transmitidos no RPC devem ser “ in-out ”, o que significa que o valor passado ao procedimento e o valor de saída devem ter os mesmos tipos de dados. Em contraste, não há compulsão de passar parâmetros “ in-out ” no RMI.
  6. No RPC, as referências não poderiam ser prováveis ​​porque os dois processos possuem o espaço de endereço distinto, mas é possível no caso do RMI.

Conclusão

Tanto o RPC quanto o RMI têm o mesmo propósito, mas são usados ​​em linguagens que suportam diferentes paradigmas de programação e, portanto, possuem recursos distintos.

Top