Visão geral da arquitetura RMI

Na arquitetura de aplicativos distribuídos, é sempre necessária a comunicação entre dois aplicativos diferentes. Em aplicativos baseados em Java, um aplicativo se comunica com outro aplicativo remoto / diferente em execução em outro lugar usando um mecanismo chamado arquitetura RMI.

RMI significa Invocação de método remoto. É uma API fornecida por java que permite que um objeto residente em uma JVM (Java Virtual Machine) acesse ou chame um objeto em execução em outra JVM. A outra JVM pode estar na mesma máquina ou máquina remota. Esse é um recurso interessante porque, em aplicativos em tempo real, torna-se muito fácil para aplicativos Java se comunicar diretamente entre si, sem nenhum mecanismo de comunicação externo. Além disso, é sempre necessária a comunicação segura entre aplicativos com base na arquitetura de aplicativos distribuídos.

RMI Design

Antes de entrarmos na arquitetura detalhada, entenderemos o design básico da arquitetura RMI.

  • A API RMI é fornecida no pacote java.rmi. Vamos introduzir dois termos para o entendimento da arquitetura de design do RMI. Primeiro é o cliente; a JVM que chamará o objeto remoto e o segundo será o servidor; a JVM que contém o objeto remoto. Portanto, o cliente chamará o servidor, neste caso, no objeto para chamada de método.
  • O servidor retornará a referência do objeto ao cliente. O problema aqui é que os dois objetos, isto é, local e remoto, aparecerão como um objeto local no servidor. Não haverá diferenciação entre os dois. A sintaxe dos métodos de ambos os objetos também é a mesma. Portanto, a JVM do servidor age como a JVM normal sem conhecer nenhum objeto, seja local ou remoto.
  • O mesmo objeto pode ser um servidor e um cliente. A referência a objetos remotos é obtida e é usada como se fosse um objeto local. A infraestrutura RMI é responsável por encontrar o objeto remoto, interceptar a chamada do método e processar remotamente a solicitação remota. O cliente chama métodos no objeto somente após obter uma referência a um objeto remoto.

Arquitetura RMI

Abaixo está o diagrama da arquitetura RMI de uma maneira simples. Na internet, você encontrará várias formas da mesma arquitetura, mas temos uma simples que ajudará a explicá-la melhor.

Vamos começar conectando pontos de uma perspectiva de design com um diagrama de arquitetura.

O aplicativo cliente e o servidor são as JVMs respectivas da máquina cliente e da máquina servidor. Na aplicação RMI, escrevemos dois programas, respectivamente; o programa cliente que reside no programa cliente e servidor que reside na máquina do servidor.

Camada de aplicação:

Essa camada é o sistema atual, isto é, cliente e servidor, envolvidos na comunicação. O programa java no lado do cliente se comunica com o programa java no lado do servidor.

Esboço:

Desde a introdução do design, temos objetos clientes; Na arquitetura RMI, é conhecido como Stub. É um objeto que reside na máquina cliente e atua como um proxy para o objeto remoto. É como um gateway para o programa cliente.

O stub tem os mesmos métodos que um objeto remoto. Quando o cliente chama o objeto de stub, ele envia essa solicitação para um objeto remoto (Skeleton) por meio da infraestrutura RMI, que é então executada no servidor.

Stub Executa os seguintes eventos: -

  1. Inicia a conexão com a JVM remota,
  2. Grava e transmite parâmetros (Marshals) para JVM remota,
  3. Aguarda o resultado,
  4. Lê (Desmarca) o resultado retornado,
  5. Passe o resultado recebido para o chamador.

Esqueleto:

O objeto de servidor que reside em uma máquina servidor é conhecido como Esqueleto. O Stub se comunica com o aplicativo do servidor com a ajuda de um objeto Skeleton intermediário.

A responsabilidade do objeto esqueleto é enviar parâmetros para a implementação do método e enviar os valores retornados ao cliente.

Esqueleto Executa os seguintes eventos: -

  1. Lê o parâmetro passado pelo cliente,
  2. Invoca o método no objeto Remoto real,
  3. Transmitir / passar o resultado para o chamador.

Camada de esboço / esqueleto:

  • A camada Stub / Skeleton é responsável por interceptar as chamadas feitas pelo cliente e redirecionar essas chamadas para o objeto remoto. Essa camada também é chamada de camada proxy. Stub e Skeleton são os proxies para cliente e servidor. Os objetos Stub e Skeleton são como uma interface entre um aplicativo e o restante do sistema RMI.
  • O objetivo desta camada é transferir dados para a Camada de referência remota por serialização de objetos. Esse processo de conversão de dados / objeto em fluxo de bytes é conhecido como Marshalling e o inverso é conhecido como Unmarshalling. O empacotamento é realizado ao solicitar o objeto do servidor e o desempacotamento é realizado quando a referência de dados / objetos é recebida do servidor.

Camada de referência remota:

  • A camada proxy está conectada ao mecanismo RMI através da Camada de Referência Remota. Essa camada é responsável pela comunicação e transferência de objetos entre cliente e servidor. A semântica de chamada da conexão RMI é definida e suportada por essa camada.
  • A Camada de Referência Remota é responsável por manter a sessão durante a chamada do método. isto é, gerencia as referências feitas pelo cliente ao objeto do servidor remoto. Essa camada também é responsável por manipular objetos duplicados.

Camada de transporte:

A camada de transporte é responsável pela configuração da comunicação entre as duas máquinas. Essa camada usa o protocolo TCP / IP padrão para conexão. O transporte real dos dados é realizado através dessa camada. Essa camada faz parte da camada de referência remota.

Conclusão

  • A RMI (Remote Method Invocation) é uma API muito útil fornecida em JAVA que ajuda na comunicação entre duas JVMs diferentes. Permite que um objeto invoque um método em um objeto que reside em outro espaço de endereço.
  • Ele fornece uma maneira segura de os aplicativos se comunicarem. Ele atinge essa funcionalidade por meio dos conceitos Stub (objeto de chamada do cliente) e Skeleton (objeto remoto residente no servidor).
  • O RMI é usado para criar aplicativos distribuídos. Preserva o tipo de segurança. A arquitetura RMI minimiza a complexidade do aplicativo em uma arquitetura distribuída.

Artigos recomendados

Este foi um guia para a arquitetura RMI. Aqui discutimos o projeto RMI e a arquitetura em detalhes com um diagrama de blocos apropriado. Você também pode consultar nossos outros artigos sugeridos para saber mais -

  1. Arquitetura de Data Warehouse
  2. O que é o protocolo TCP?
  3. O que é software de mesa?
  4. Perguntas da entrevista do CCNA