Respostas:
O RPC é baseado em C e, como tal, possui semântica de programação estruturada, por outro lado, o RMI é uma tecnologia baseada em Java e orientada a objetos.
Com o RPC, você pode simplesmente chamar funções remotas exportadas para um servidor; no RMI, você pode ter referências a objetos remotos e chamar seus métodos, além de transmitir e retornar mais referências a objetos remotos que podem ser distribuídos entre muitas instâncias da JVM, por isso é muito mais poderoso .
O RMI se destaca quando surge a necessidade de desenvolver algo mais complexo do que uma arquitetura pura de cliente-servidor. É muito fácil espalhar objetos em uma rede, permitindo que todos os clientes se comuniquem sem ter que estabelecer conexões individuais explicitamente.
A principal diferença entre RPC e RMI é que o RMI envolve objetos . Em vez de chamar procedimentos remotamente usando uma função de proxy , usamos um objeto proxy .
Há maior transparência com o RMI, principalmente devido à exploração de objetos, referências, herança, polimorfismo e exceções, à medida que a tecnologia é integrada à linguagem.
O RMI também é mais avançado que o RPC, permitindo a chamada dinâmica , na qual as interfaces podem mudar no tempo de execução, e a adaptação do objeto , que fornece uma camada adicional de abstração.
1. Abordagem:
O RMI usa um paradigma orientado a objetos em que o usuário precisa conhecer o objeto e o método do objeto que ele precisa chamar.
O RPC não lida com objetos. Em vez disso, chama sub-rotinas específicas que já estão estabelecidas.
2. Trabalhando:
Com o RPC, você recebe uma chamada de procedimento que se parece muito com uma chamada local. O RPC lida com as complexidades envolvidas na passagem da chamada do local para o computador remoto.
O RMI faz a mesma coisa, mas o RMI transmite uma referência ao objeto e ao método que está sendo chamado.
RMI = RPC + orientação a objeto
3. Melhor:
O RMI é uma abordagem melhor em comparação com o RPC, especialmente em programas maiores, pois fornece um código mais limpo, mais fácil de identificar se algo der errado.
4. Exemplos de sistemas:
Sistemas RPC: SUN RPC, DCE RPC
Sistemas RMI: Java RMI, CORBA, Microsoft DCOM / COM +, SOAP (Simple Object Access Protocol)
A Chamada de Procedimento Remoto (RPC) é uma comunicação entre processos que permite chamar uma função em outro processo que reside na máquina local ou remota.
A chamada de método remoto (RMI) é uma API, que implementa RPC em java com suporte a paradigmas orientados a objetos.
Você pode invocar o RPC é como chamar um procedimento C. O RPC suporta tipos de dados primitivos, nos quais o RMI suporta parâmetros / tipos de retorno de método como objetos java.
O RMI é fácil de programar, diferentemente do RPC. Você pode pensar em sua lógica de negócios em termos de objetos, em vez de uma sequência de tipos de dados primitivos.
O RPC é neutro em termos de idioma, diferentemente do RMI, limitado a java
RMI é um pouco mais lento para RPC
Dê uma olhada neste artigo para implementação de RPC em C
A RMI ou Remote Method Invokation é muito semelhante à chamada RPC ou Remote Procedure, pois o cliente envia objetos de proxy (ou stubs) ao servidor; no entanto, a sutil diferença é que o RPC do lado do cliente chama FUNCTIONS através da função proxy e o RMI chama METHODS através do função de proxy. O RMI é considerado um pouco superior, pois é uma versão orientada a objeto do RPC.
A partir daqui .
Para mais informações e exemplos, dê uma olhada aqui .
A diferença entre RMI e RPC é que:
method
e a function
? Em Java não há funções ... mas em OOP, tanto quanto me lembro, são sinônimos, e também são invocation
e call
.
O RPC é um protocolo antigo baseado em C.Pode invocar um procedimento remoto e parecer uma chamada local.O RPC lida com as complexidades de passar essa chamada remota para o servidor e obter o resultado para o cliente.
O Java RMI também consegue a mesma coisa, mas de maneira um pouco diferente . Ele usa referências a objetos remotos . Então, o que faz é que ele envia uma referência ao objeto remoto junto com o nome do método a ser chamado. É melhor porque resulta em limpeza O código no caso de programas grandes e também a distribuição de objetos pela rede permite que vários clientes invoquem métodos no servidor em vez de estabelecer cada conexão individualmente.
RMI
em Java é algo comogRPC
em .Net ...