Remote Method Invocation (RMI) Sistemas Distribuídos.

Slides:



Advertisements
Apresentações semelhantes
Java RMI Alcides Calsavara. Objetivos Permitir que um método de uma classe Java em execução em uma máquina virtual JVM chame um método de um objeto (instância.
Advertisements

Comunicação Distribuída
1 Arquitetura CORBA Repositório de Implementação Repositório de Interface cliente programa cliente proxy ORB Core ou invocação dinâmica servidor ORB Core.
Comunicação Entre Objetos Distribuídos
Comunicação Inter-Processos
PROGRAMAÇÃO DISTRIBUÍDA EM JAVA Verão/2001
Introdução à Programação Distribuída em Java
Middleware e Sistemas Distribuídos
Arquitetura CORBA e Objetos Distribuídos
Sistemas Distribuídos Carlos A. G. Ferraz DI/UFPE Aula 07.
Remote Method Invocation RMI
Concorrência e Java RMI
Administração e Integração de Redes em Sistemas Distribuídos
T. D. S. I. PARA WEB Prof. Emmanuel Nolêto. Java RMI.
Tecgraf PUC-Rio maio de 2011 Principais conceitos de CORBA.
Java RMI João Gabriel (jggxm).
RMI - JAVA.
RPC and Web Service André Pereira.
Objetos Distribuídos para WEB Prof. Paulo Fernando da Silva FURB – Universidade Regional de Blumenau Pós-Graduação em Desenvolvimento WEB.
RMI Objetos Distribuídos Luiz C. D´oleron SCJP
Java – Remote Method Invocation (RMI)
RMI Remote Method Invocation
Versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 Principais conceitos de CORBA.
Sistemas Distribuídos Prof. Marcus Rodrigues
1 SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA SENAC PELOTAS Rafael Nunes Folha Trabalho de Conclusão de Curso Orientador: Eduardo.
Fundamentos de Sistemas Operacionais Aula 2 Princípios de Programação Prof. Belarmino.
Acesso Remoto Rede de Comunicação de Dados Prof. Cristiano José Cecanho.
Tecnologias para Internet Thyago Maia Tavares de Farias Aula 19.
1 Sistemas Distribuídos – Capítulo 4 - Aula 5 Aula de hoje Chamada de Procedimento Remoto - RPC Aula Passada Clusters de Servidores Migração de Código.
Programação em Java RMI - Remote Method Invocation Prof. Luiz Antonio Rodrigues Prof. Luiz Antonio Unioeste - Cascavel Jpanel e Diagramadores.
Programação em Java Threads Prof. Luiz Antonio Rodrigues Prof. Luiz Antonio Unioeste - Cascavel Jpanel e Diagramadores.
Disciplina: Gerenciamento e Desenvolvimento em Banco de Dados Professora: Chaiene Minella, MSc
UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICA Sistemas Distribuídos Ciência da Computação 2o. Semestre / 2006 Prof. Fábio M. Costa
INTEROPERABILIDADE DE C2
INTRODUÇÃO Ligações inter- redes.
TECNOLOGIA ATUAIS DE REDES
Bruno Adolfo Luis Henrique Natanael de Carvalho Lucas Fernandes
Prof. Msc. Diovani Milhorim
Administração e serviços de redes
Sistemas Distribuídos
Introdução OO.
INSTITUTO FEDERAL DO CEARÁ Mauro Oliveira
SISTEMAS UBÍQUOS E PERVASIVOS
Administração de Gerência de servidores
PROGRAMAÇÃO ORIENTADA A OBJETO - JAVA
3.1 Classes e Objetos Em um programa orientado a objetos normalmente existem vários objetos de um mesmo tipo. Por exemplo, um programa de controle de.
Redes: Camada de Aplicação, pt. I Prof. Rafael Vieira
Módulo I Capítulo 1: Introdução ao curso
VIRTUALIZAÇÃO 2º Ano – Redes de Computadores
Redes de Computadores 5º Semestre Aula 07 Prof
Invocação de Métodos Remotos (RMI) en Java
Níveis de Abstrações TANENBAUM:

Orientador: Fernando Mattioli
Desenvolvimento em Camadas
JHONE, TIAGO, ERIK E WANDERSON
Programação Estruturada Aula 1 Prof. Jorge Barreto Julho 2018.
Remote Method Invocation
Linguagem de Programação
Sistemas Operacionais Aula 3
Estrutura do Sistema Operacional
Soluções Inteligentes para ONGs Esportivas
Sistemas Distribuídos
Curso básico de PHP. 1 Vantagens: Gratuito Multiplataforma Estável Rapidez Comunicação.
MODELO DE REFERÊNCIA OSI
Professor: Rogério Benedito de Andrade
SISTEMAS DISTRIBUIDOS
SISTEMAS DISTRIBUIDOS
SISTEMAS DISTRIBUIDOS
Instrutor: Joel Raitz Antunes Projeto: Comunidade Digital Curso: Informática Básica/Noturno/UAB CETAM 2019/MAUÉS/AM.
Transcrição da apresentação:

Remote Method Invocation (RMI) Sistemas Distribuídos

Equipe Antônia Verlane Arilson Fernando Gabriel Arruda João Victor Jorge Carneiro Luís Eduardo

Sistemas Distribuídos e Comunicação Em aplicações distribuídas, é comum organizar os processos em processo servidor e processo cliente, de forma que os processos possam estar localizados em plataformas diferentes, em computadores diferentes.

Problemática:  Implementação do modelo de comunicação entre tais processos pode ser difícil devido à complexidade natural.  A complexidade aumenta quando é necessário acessar ou enviar objetos pela internet, pois os mesmos apresentam atributos e métodos que precisam ser convertidos para a forma binária para serem enviados.

Solução: Middleware  Middleware: aplica a uma camada de software que fornece uma abstração de programação, assim como o mascaramento da heterogeneidade das redes, do hardware, dos sistemas operacionais e das linguagens de programação subjacentes. (Coulouris et al, 2013)

 Alguns middleware, suportam apenas uma linguagem de programação.  A IDL é uma linguagem orientada aos objectos tipicamente baseada em C++, Java, ou C#.  Os modelos possíveis incluem a invocação remota de objetos, a notificação remota de eventos, o acesso remoto a banco de dados e o processamento de transação distribuído. (Coulouris et al, 2013)

Facilitando a Implementação: A fim de facilitar a implementação de aplicações distribuídas entre diversas plataformas de sistemas operacionais ou hardware, foi criado o padrão CORBA (Common Object Request Architecture), disponibilizado nas linguagens mais adotadas.

Chamada remota de métodos

Arquiteturas para chamada remota  RPC ( Remote Procedure Call)  CORBA ( Common Object Request Broker Architeture)  JAVA RMI ( Remote Method Invocation )

RPC(Remote Procedure Call )  Consiste em chamadas remotas a procedimentos como se fossem locais.  Torna mais fácil a implementação de aplicações distribuídas, pois abstrai o código referente à parte de comunicação

RPC(Remote Procedure Call )  Estes procedimentos, normalmente, envolvem serviços disponibilizados em redes.  RPC é muito utilizado em sistemas operacionais distribuídos para chamada remota de procedimentos.

RPC(Remote Procedure Call )  RPC não precisa, necessariamente, envolver estruturação em termos de objetos.  Tanto o cliente quanto o servidor necessitam de um Runtime para processamento da RPC.  Existe a necessidade de se trabalhar com interfaces remotas denominadas STUBS.

RMI (Remote Method Invocation)  Permite a chamada de métodos em objetos que estão em outra máquina virtual (geralmente em outro host) com a mesma sintaxe da invocação local.   É exclusivo para aplicações em Java.  É tipicamente cliente-servidor.

RMI (Remote Method Invocation) - OBJETIVOS  Permitir que um método de uma classe Java em execução em uma máquina virtual JVM chame um método de um objeto (instância de uma classe Java) situado em outra máquina virtual JVM, usando a mesma sintaxe e com a mesma facilidade de se chamar um método local.  Transparência de acesso e de localização.

RMI (Remote Method Invocation) - eM oUTRAS pALAVRAS Na realidade, o RMI é uma interface que permite a intercomunicação entre objetos Java localizados em diferentes hosts.

RMI - CONCEITOS  Objeto Remoto: É um objeto que pode receber invocações remotas.  Referência a objeto remoto: Para que um objeto possa invocar métodos de um objeto remoto, ele deve ter acesso à referência do mesmo.

RMI - CONCEITOS  Interface Remota: Todo objeto remoto possui uma interface que especifica quais dos métodos podem ser invocados remotamente.  Exceções: Podem ocorrer por problemas decorrentes da distribuição ou na execução do método.

RMI - Considerações  As chamadas remotas têm um tempo de resposta maior do que as chamadas locais.  As chamadas remotas são mais vulneráveis e possuem falhas mais complexas.

RMI (Remote Method Invocation) - ARQUITETURA  Cada objeto remoto implementa uma interface remota que especifica quais de seus métodos podem ser invocados remotamente pelos clientes.  Os clientes invocam tais métodos exatamente como invocam métodos locais.

RMI (Remote Method Invocation) - ARQUITETURA

O que é.: :. Stubs e Skeletons (visão GERAL): O cliente, quando invoca remotamente um método, não conversa diretamente com o objeto remoto, mas com uma implementação da interface remota chamada stub, que é enviada ao cliente.

RMI (Remote Method Invocation) - ARQUITETURA O que é.: :. Stubs e Skeletons (visão GERAL): O stub, por sua vez, passa a invocação para a camada de referência remota. Esta invocação é passada para um skeleton (esqueleto), que se comunica com o programa servidor.

RMI (Remote Method Invocation) - ARQUITETURA Stub (toco):  É uma classe gerada pelo compilador rmic no lado do cliente e implementa a mesma interface remota do lado do servidor.  Não implementa os métodos diretamente e sim traduz a invocação dos métodos para o servidor.

RMI (Remote Method Invocation) - ARQUITETURA Stub (toco):  Inicia a conexão com a JVM remota.  Serializa os parâmetros para a JVM remota (Marshaling).  Desserializa os resultados ou exceções de retorno.  Entrega ao cliente o resultado ou exceção.

RMI (Remote Method Invocation) - ARQUITETURA Skeleton (esqueleto):  É gerado pelo compilador rmic e fica do lado do servidor.  Implementa a interface remota.  Desserializa(Unmarshaling) os parâmetros para o método remoto.  Invoca o método no objeto remoto.  Serializa o valor de retorno ou exceção e envia para o cliente.

RMI (Remote Method Invocation) - ARQUITETURA Skeleton (esqueleto):  É gerado pelo compilador rmic e fica do lado do servidor.  Implementa a interface remota.  Desserializa(Unmarshaling) os parâmetros para o método remoto.  Invoca o método no objeto remoto.  Serializa o valor de retorno ou exceção e envia para o cliente.

RMI (Remote Method Invocation) - ARQUITETURA Registry (registro):  Seria impraticável se para cada invocação de método remoto fosse necessário incluir a máquina e a porta de destino.  O RMI oferece um serviço de nomes (RMI Registry) que fornece informações sobre a localização de objetos remotos.

RMI (Remote Method Invocation) - ARQUITETURA Registry (registro):  Seria impraticável se para cada invocação de método remoto fosse necessário incluir a máquina e a porta de destino.  O RMI oferece um serviço de nomes (RMI Registry) que fornece informações sobre a localização de objetos remotos.

RMI (Remote Method Invocation) - ARQUITETURA Registry (registro):  Seria impraticável se para cada invocação de método remoto fosse necessário incluir a máquina e a porta de destino.  O RMI oferece um serviço de nomes (RMI Registry) que fornece informações sobre a localização de objetos remotos.

RMI - VANTAGENS  Modelagem fácil e natural de sistemas distribuídos, abstraindo a parte de rede.  Sintaxe da chamada de método local é igual à sintaxe da chamada de método remoto.  Rápida difusão com a plataforma Java.

RMI - CONCORRÊNCIA  Es SD pode haver caso que dois clientes estejam acessando o mesmo objeto [vamo usar como exemplo: o objeto Produto], se um resolver alterar seu preço enquanto outro remove o mesmo poderá haver uma inconsistência.  Como resolver?

RMI - CONCORRÊNCIA  Basta colocarmos o modificador synchronized em cada método da classe do objeto remoto onde pode haver a geração de inconsistência.  Esse modificador faz com que um objeto que está sendo acessado só possa ser acessado novamente quando a tarefa que está sendo realizada sobre ele seja concluída.

RMI - DESVANTAGENS  Para cada máquina onde estão os objetos remotos deve haver um servidor de nomes para os mesmos serem registrados.  Como RMI usa comunicação síncrona, o cliente não pode fazer outra tarefa enquanto espera a resposta do servidor.  São necessárias configurações adicionais no firewall, causando restrições de acesso e desempenho.

RMI - DESVANTAGENS  Para cada máquina onde estão os objetos remotos deve haver um servidor de nomes para os mesmos serem registrados.  Como RMI usa comunicação síncrona, o cliente não pode fazer outra tarefa enquanto espera a resposta do servidor.  São necessárias configurações adicionais no firewall, causando restrições de acesso e desempenho.

RMI - SEGURANÇA  RMISecurityManager: Sem ele não seria possível para os objetos locais baixarem código ou utilizarem métodos remotos.

RMI - RMI x CORBA (Vantagens)  RMI é similar a CORBA, porém mais simples pois não precisa lidar com diferentes linguagens de programação.  Como tudo é implementado em Java, não necessita de IDL, pois as interfaces são definidas usando as próprias interfaces de Java.

RMI - RMI x CORBA (Vantagens)  RMI permite que objetos possam ser passados por valor facilmente.  Com RMI objetos podem ser transferidos de servidores remotos para o cliente em tempo de execução de forma segura.

RMI -RMI x CORBA (Desvantagens)  RMI é limitado a Java.  Muitas vezes é necessário implementar partes do sistema em C++ por questões de eficiência e a integração com java não é simples.

RMI -RMI x CORBA (Desvantagens)  Desempenho de RMI é menor em alguns casos.  A arquitetura de CORBA como um todo é mais abrangente.

RMI -RMI x CORBA (Desvantagens)  Desempenho de RMI é menor em alguns casos.  A arquitetura de CORBA como um todo é mais abrangente.

RMI - Estrutura Básica de Arquivos  Hello.java: A interface remota.  HelloClient.java: A aplicação cliente no sistema RMI.  HelloS.java: A interface do servidor.  HelloServer.java: O aplicativo de servidor no sistema RMI. Quando todos os arquivos são compilados, executando o seguinte comando irá criar o stub e o skeleton: RMIc HelloServer

RMI - MSN - Estrutura - implementação

RMI - MSN - Funcionamento - cliente

Yoooooooooooooooooouuuuuuu!