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ção | RPC | RMI |
---|---|---|
Suporta | Programação processual | Programação orientada a objetos |
Parâmetros | Estruturas de dados comuns são passadas para procedimentos remotos. | Objetos são passados para métodos remotos. |
Eficiência | Menor que RMI | Mais do que o RPC e suportado pela moderna abordagem de programação (ou seja, paradigmas orientados a objetos) |
Despesas gerais | Mais | Menos comparativamente |
Parâmetros de entrada e saída são obrigatórios. | sim | Nã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.
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
- 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.
- 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.
- 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.
- O protocolo RPC gera mais overheads do que o RMI.
- 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.
- 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.