Objetos Distribuídos - Programação Distribuída Orientado a Objetos Luiz Affonso Guedes.

Slides:



Advertisements
Apresentações semelhantes
Sistemas Operacionais II N Aula prática Java Sockets, RPC e RMI Eduardo Bezerra.
Advertisements

Novas Tecnologias Microsoft.
Invocação Remota de Procedimentos (RPC) Alexandre Bragança 2001 DEI / ISEP.
Sistemas Distribuídos
Projeto de Sistemas de Software Luana Lachtermacher
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.
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.
1 Java: Tratamento de Exceções Alcides Calsavara.
VHDL Very High Speed Integrated Circuit Hardware Description Language Prof. Eduardo Todt 2008.
Comunicação Distribuída
1 Estruturas de Controle Márcia J. N. Rodrigues Lucena Especialização em Técnicas e Ferramentas de Apoio à Decisão Departamento.
Ronaldo Celso Messias Correia
Invocação de Métodos Remotos RMI
Técnicas e Projeto de Sistemas André Mesquita Rincon Processo de Software Técnico Subsequente – Módulo III.
Técnicas e Projeto de Sistemas
FORTRAN 90 Denise Yumi Takamura.
INTRODUÇÃO À COMPUTAÇÃO PARALELA
SQL Procedural Junho/2006.
Container Managed Persistent Bean Kellyton Brito Projeto Compose
Universidade Federal da Bahia – Centro de Processamento de Dados – Preview Computadores 1 Uma Ferramenta Orientada a Modelos para Geração de Aplicações.
Slide 1 Rede Nacional de Ensino e Pesquisa Serviços do Middleware Treinamento em GRADEp – junho de 2005 GT GRADEp Middleware GRADEp Serviços.
Slide 1 Rede Nacional de Ensino e Pesquisa Treinamento em Gradep - junho 2005 Serviço ContextManager Treinamento no GRADEp Framework Master-Worker.
Slide 1 Rede Nacional de Ensino e Pesquisa Treinamento em Gradep - julho 2005 Serviço Worb Treinamento no GRADEp Serviço Worb WorbDemo.
Slide 1 Rede Nacional de Ensino e Pesquisa Treinamento em Gradep - junho 2005 Serviço Collector Treinamento no GRADEp Serviço Collector CollectorDemo e.
Servidores e Programação Web Redes de Computadores.
O Fluxo de Testes © Alexandre Vasconcelos
Disciplina: Paradigmas e Ferramentas de Desenvolvimento de Software
Templates e Questões de Design Programas são geralmente construídos segundo um design que é relativamente bem mapeado nos mecanismos oferecidos pela linguagem.
CT-300 – Seminário de Tese 1/25 Um Framework Padrão para Simulação de Modelos de Robôs Móveis de Robôs Móveis Juliano A. Pereira Prof. Carlos H. C. Ribeiro.
CSC E-CNS CE-235 Sistemas Embarcados de Tempo Real 2° Semestre de 2006 Componente de Software de Computador de Comunicação, Navegação, Vigilância CSC E-CNS.
ITA - Instituto Tecnológico de Aeronáutica
CE-262 Ontologia e Web Semântica Prof. José M Parente de Oliveira Sala 120 – Prédio da Computação Lógica de Descrições.
PROGRAMAÇÃO DISTRIBUÍDA EM JAVA Verão/2001
PROGRAMAÇÃO DISTRIBUÍDA EM JAVA Verão/2001
Implementação Do JXTA Como Protocolo De Transporte Do JacORB
Implementação Do JXTA Como Protocolo De Transporte Do JacORB
Business Process Management e Workflow - jBPM Aluno: Filipe Ferraz Salgado Orientador: Francisco Reverbel Novembro 2006.
Professor (a): Oscar Luiz Monteiro de Farias Aluno (a): Andressa da Silva Siqueira Matricula: Universidade do Estado do Rio de Janeiro.
Tecnologia para Web JavaScript Enrique Pimentel Leite de Oliveira
Elaine Harada Teixeira de Oliveira – DCC – ICE - UFAM
Orientação a Objetos Uma Introdução à Programação Orientada a Objetos
Entendendo as definições de classe
Unified Modeling Language
LINGUAGENS DE PROGRAMAÇÃO
Capítulo 2: Introdução às Redes de Computadores
Sistemas Operacionais e Windows XP Aula 04 – DCA0302.
Programação Concorrente com Thread Java
Introdução Ciência da Computação estudo de algoritmos –ÊNFASE ao estudo de DADOS armazenamento manipulação refinamento (a partir de dados cru) estrutura.
Professor: Hyggo Almeida
Threads, Gerenciamento de Threads Pool de Threads, Grupo de Threads Variáveis Locais à Threads.
JAVA MULTITHREADING TECHNIQUES
Anália Lima (alc5) Bruno Gentilini (bgda) Eduardo Souza (efs) Ivan França (ilfn) Infra-Estrutura de comunicação Aula Prática Programação de Sockets TCP.
Infra-Estrutura de Comunicação (IF678) Aula Prática 02 – CIn/UFPE Davi Duarte Cynthia Raphaella Ivan França Jéssica Barbalho Larissa Paz Paulo Fernando.
Java em Redes de Computadores
Arquitetura CORBA e Objetos Distribuídos
Chamada Remota de Procedimentos
AspectJ — Programação orientada a aspectos em Java Sérgio Soares e Paulo Borba Centro de Informática Universidade Federal de Pernambuco.
Desenvolvimento de Aplicações CORBA
Infra-Estrutura de Comunicação (IF678) Aula Prática 02 Programação de Sockets TCP e UDP Professor: Paulo Gonçalves CIn/UFPE.
Mapeamento de CSP para JCSP Patrícia Muniz (pmf) Rafael Duarte (rmd)
ArrayList e Genéricos Profs. PROG2 - UNISINOS.
Tipos Especiais de Listas
Alisson Rafael Appio SOP aplicado em um jogo tipo de corrida usando a arquitetura cliente e servidor Alisson Rafael Appio
T. D. S. I. PARA WEB Prof. Emmanuel Nolêto. Java RMI.
Tecgraf PUC-Rio maio de 2011 Principais conceitos de CORBA.
RMI (Remote Method Invocation) Bruno Edson Plínio Tadeu
RMI Objetos Distribuídos Luiz C. D´oleron SCJP
Programação em Java RMI - Remote Method Invocation Prof. Luiz Antonio Rodrigues Prof. Luiz Antonio Unioeste - Cascavel Jpanel e Diagramadores.
Remote Method Invocation
Remote Method Invocation (RMI) Sistemas Distribuídos.
Transcrição da apresentação:

Objetos Distribuídos - Programação Distribuída Orientado a Objetos Luiz Affonso Guedes

Introdução Conceitos básicos –programação distribuída + programação orientada a objetos = Objetos distribuídos –Motivação Associar as vantagens advindas da programação orientada a objetos no desenvolvimento de aplicações distribuídas –PD- Programação Distribuída –POO - Programação Orientada a Objetos –POOD- Programação Orientada a Objetos Distribuída

Breve Histórico de Programação Distribuída Programação distribuída –Programação de sistemas que executam sobre redes de computadores. Conceito de redes de computadores Conceito de processos Modelo cliente-servidor Conceito de troca de mensagens Chamada de procedimento remoto Invocação de métodos de objetos remotos Sistemas baseados em agentes

Conceito de Redes de Computadores Modelo em camadas Camada Física Camada de Enlace Camada de Rede Camada de Transporte Camada de Aplicação Camada Física Camada de Enlace Camada de Rede Camada de Transporte Camada de Aplicação Aplicação Comunicação

Conceito de Middleware Necessidade de agrupar funcionalidades comuns às várias aplicações distribuídas –Conceito de abstração da programação distribuída Tentar tornar a programação distribuída, em termos de facilidade de programação, o mais próximo possível da programação centralizada. Camada Física Camada de Enlace Camada de Rede Camada de Transporte Middleware S.O. + Hardware Software O middleware deve ser independente do SO e do hardware

Evolução do Conceito de Middleware Troca de Mensagens (Sockets) Chamada de Procedimento Remoto (RPC) Objetos Distribuídos (RMI, CORBA) Agentes

Paradigma de Troca de Mensagem Tarefa 1Tarefa 2 send(M1)receive(M1) send(M2)receive(M2) Tarefa 1 Tarefa 2 send(M1) receive(M1) send(M2) receive(M2) bloqueio processando

Troca de Mensagem - Implementação Via Socket - síncrono ou assíncrono IP TCP ou UDP LAN ou WAN IP TCP ou UDP API Socket API Socket Interface de programação buffer portSistema Operacional

Troca de Mensagens - Características de Programação Baixo nível de abstração na programação Necessidade de se conhecer aspectos de redes de computadores e sistemas operacionais –ports e número IP Leva a programas poucos estruturados

Chamada de Procedimento Remoto - RPC Remote Procedure Call (RPC) –baseada no conceito de chamada de procedimento das linguagens estruturadas A idéia é fazer a invocação de um procedimento remoto o mais similar possível como se faz a chamada de um procedimento local.

RPC - Modelo de Programação Cliente Servidor P1 P2 P3 Call P2(a1,a2) retorno Cliente Servidor call P2(a1,a2) receive(M1) retorno do resultado de P2 bloqueio processando P2

RPC - Implementação Cliente Servidor... x = call P2(a1,a2);.... empacota parâmetros desempacota parâmetros empacota parâmetros desempacota parâmetros P1 P2 P3 despachante API (socket) API (socket) P2a1a2 resultado P2(a1,a2)

Objetos Distribuídos Surgiu da necessidade de se atender aos requisitos de software mais exigentes, oriundos de sistemas mais complexos. –Reusabilidade –Modularidade –Flexibilidade Objetos Distribuídos = Programação Orientada a Objetos + Programação Distribuída

Constituição dos Objetos Estados: Atributos método 1 método n método 2 interface

Constituição de Objetos Toda interação com um objeto se dá através da invocação de seus métodos declarados com públicos Métodos declarados como privados só podem ser invocados pelos demais métodos do objeto Os atributos são variáveis manipuladas pelos métodos do objeto

Conceitos Básicos de Objetos Classificação –Objetos são organizados em classes. Uma classe define o comportamento dos objetos dela derivados. –Relacionamento entre classes herança: relação tipo é-um ou é-uma composição: relação tipo é-parte-de colaboração: relações tipo usa, delega e autoriza

Conceitos Inerentes dos Objetos Instanciação –objetos são criado a partir do modelo de sua classe Encapsulamento –detalhes de implementação não são visíveis fora do objetos Identidade –objetos possuem identidade única Polimorfismo –métodos com o mesmo nome podem apresentar comportamento diferente

OD - Modelo de programação ORB- Object Request Broker Servidor Cliente requisição resposta

ORBs Object Request Broker –Middleware para suporte de serviço de distribuição. –RMI – Remote Method Invocation (Java) –Corba – Common ORB Architecture (OMG)

Estrutura de um Orb LAN ou WAN Cliente Servidor IP Camada de Transporte Camada de Referência Remota Stub IP Camada de Transporte Camada de Referência Remota Skeleton

Estrutura de um Orb Cliente Stub Skeleton ORB Servidor Skeleton Stub Service Registry port

Procedimento de Programação 1.Escrever Interface 2.Implementar a Interface 3.Implementar Servidor que contém a implementação da interface 4.Gerar Stub e Skeleton da Interface 5.Registrar Servidor e Disparar Servidor 6.Escrever Cliente que utiliza métodos da Interface

RMI e Corba RMI –a Interface é escrita em Java –Só opera com objeto remotos Java Corba –a Interface é escrita em IDL (Interface Descrition Language – like C++) –Multi-linguagem –Há várias implementações do padrão

Exemplo em RMI Passo 1 – Especificação da Interface // Interface remota para implementação de método da séria de Fibinacci import java.rmi.*; import java.math.BigInteger; public interface Fibonacci extends Remote { public BigInteger getFibonacci (int n) throws RemoteException; public BigInteger getFibonacci (BigInteger n) throws RemoteException; }

// Implementação da interface Fibonacci.java import java.rmi.*; import java.rmi.server.UnicastRemoteObject; import java.math.BigInteger; public class FibonacciImpl implements Fibonacci { public FibonacciImpl( ) throws RemoteException { UnicastRemoteObject.exportObject(this); } public BigInteger getFibonacci (int n) throws RemoteException {... return (retorno); } public BigInteger getFibonacci (BigInteger n) throws RemoteException {... return (retorno); } Exemplo em RMI Passo 2 – Implementar a Interface

// Servidor que conterá o objeto da classe FibonacciImpl.java import java.net.*; import java.rmi.*; public class FibonacciServer { public static void main(String[] args) { try { FibonacciImpl f = new FibonacciImpl(); // instanciação do objeto remoto Naming.rebind("fibonacci", f); // registro do servidor System.out.println("Servidor Fibonacci pronto."); } catch (RemoteException re) { System.out.println(" Exception in FibonacciImpl.main: " + re); } catch (MalformedURLException e) { System.out.println(" URL mal formada" + e); } Exemplo em RMI Passo 3 – Implementar o Servidor

Exemplo em RMI Passo 4 – Gerar Stub e Skeleton da Interface rmic FibonacciImpl Criação automática de FibonacciImpl_Skel.java e FibonacciImpl_Stub.java Passo 5 – Registrar e Disparar Servidor rmiregistry (linux) start rmiregistry (windows) // porta default = 1099 java FiboncciServer

Exemplo em RMI Passo 6 – Implementar Cliente / Programa cliente da interface remota Fibonacci.java import java.rmi.*; import java.net.*; import java.math.BigInteger; public class FibonacciClient2 { public static void main(String args[]) { try { Object o = Naming.lookup("rmi://localhost/fibonacci"); // ligação com o servidor remoto Fibonacci calculator = (Fibonacci) o; // conversão de tipo BigInteger index = new BigInteger("3"); // número da série BigInteger f = calculator.getFibonacci(index); // chamada de método em interface remota System.out.println(" O " + index + "-ésimo termo da série de Fibonacci é " + f); } catch(MalformedURLException e) {... } catch(RemoteException re) {... } catch(NotBoundException e) {... } }