A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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

Apresentações semelhantes


Apresentação em tema: "Objetos Distribuídos - Programação Distribuída Orientado a Objetos Luiz Affonso Guedes."— Transcrição da apresentação:

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

2 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

3 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

4 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

5 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

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

7 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

8 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

9 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

10 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.

11 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

12 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)

13 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

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

15 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

16 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

17 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

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

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

20 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

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

22 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

23 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

24 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; }

25 // 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

26 // 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

27 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

28 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) {... } }


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

Apresentações semelhantes


Anúncios Google