32
Objetos Distribuídos para W Prof. Paulo Fernando da Silva FURB – Universidade Regional de Blumen Pós-Graduação em Desenvolvimento WEB

Objetos Distribuídos para WEB Prof. Paulo Fernando da Silva FURB – Universidade Regional de Blumenau Pós-Graduação em Desenvolvimento WEB

Embed Size (px)

Citation preview

Page 1: Objetos Distribuídos para WEB Prof. Paulo Fernando da Silva FURB – Universidade Regional de Blumenau Pós-Graduação em Desenvolvimento WEB

Objetos Distribuídos para WEB

Prof. Paulo Fernando da Silva

FURB – Universidade Regional de BlumenauPós-Graduação em Desenvolvimento WEB

Page 2: Objetos Distribuídos para WEB Prof. Paulo Fernando da Silva FURB – Universidade Regional de Blumenau Pós-Graduação em Desenvolvimento WEB

Organização

• Módulo 1:– Conceitos de Sistemas Distrubídos;

• Módulo 2:– Remote Procedure Call;

• Módulo 3:– Java RMI;

• Módulo 4:– CORBA;

Page 3: Objetos Distribuídos para WEB Prof. Paulo Fernando da Silva FURB – Universidade Regional de Blumenau Pós-Graduação em Desenvolvimento WEB

Módulo 4 - Sumário

• CORBA – Common Object Request Broker Arquitecture– Introdução;– Arquitetura CORBA;– Estudo de Caso;– Atividade;

Page 4: Objetos Distribuídos para WEB Prof. Paulo Fernando da Silva FURB – Universidade Regional de Blumenau Pós-Graduação em Desenvolvimento WEB

CORBAIntrodução

• CORBA começou a ser desenvolvido em 1989, quando um grupo de empresas reuniu-se em uma organização, denominada OMG;

• É um padrão para interoperabilidade entre objetos distribuídos:– permitem que objetos escritos em diferentes linguagens

e, compilados por diferentes compiladores comuniquem-se;

– comunicação através de protocolos padronizados de forma transparente;

Page 5: Objetos Distribuídos para WEB Prof. Paulo Fernando da Silva FURB – Universidade Regional de Blumenau Pós-Graduação em Desenvolvimento WEB

CORBAIntrodução

• Padrão CORBA é uma especificação aberta, independente de linguagem e fabricante;

• Assegura a possibilidade de se desenvolver sistemas baseados em interação, que incorporam componentes de múltiplas origens;

Page 6: Objetos Distribuídos para WEB Prof. Paulo Fernando da Silva FURB – Universidade Regional de Blumenau Pós-Graduação em Desenvolvimento WEB

CORBAArquitetura

• OMA:Object Manegement Architecture;

• A OMA agrupa um conjunto de objetos CORBA em serviços e facilidades;

• Object Request Broker (ORB) habilita clientes e objetos a se comunicarem em um ambiente distribuído;

Page 7: Objetos Distribuídos para WEB Prof. Paulo Fernando da Silva FURB – Universidade Regional de Blumenau Pós-Graduação em Desenvolvimento WEB

CORBAArquitetura

• Há quatro categorias de interfaces:– Objetos de Serviços (Object Services) são interfaces

para serviços gerais;

– Facilidades Comuns (Common Facilities) são interfaces para facilidades horizontais orientadas para usuário;

– Interfaces de Domínio (Domain Interfaces) são interfaces de aplicações de um domínio específico;

– Interfaces de Aplicação (Application Interfaces) são interfaces não padronizadas para aplicações específicas.

Page 8: Objetos Distribuídos para WEB Prof. Paulo Fernando da Silva FURB – Universidade Regional de Blumenau Pós-Graduação em Desenvolvimento WEB

CORBAArquitetura

Page 9: Objetos Distribuídos para WEB Prof. Paulo Fernando da Silva FURB – Universidade Regional de Blumenau Pós-Graduação em Desenvolvimento WEB

CORBAArquitetura - ORB

• É um mecanismo pelo qual objetos fazem ou recebem requisições de outros objetos;

• O cliente não precisa estar ciente:– do mecanismo usado para comunicar ou ativar

um objeto;– de como o objeto é implementado;– onde o objeto está localizado;

• Permite interoperabilidade;

Page 10: Objetos Distribuídos para WEB Prof. Paulo Fernando da Silva FURB – Universidade Regional de Blumenau Pós-Graduação em Desenvolvimento WEB

CORBAArquitetura - ORB

Page 11: Objetos Distribuídos para WEB Prof. Paulo Fernando da Silva FURB – Universidade Regional de Blumenau Pós-Graduação em Desenvolvimento WEB

CORBAArquitetura – ORB Parte Cliente

• Client IDL Stubs:– Prove interfaces estáticas para o acesso aos

objetos remotos;– Agem como um proxy para o objeto remoto do

servidor– Gerados a partir de uma IDL;– Fazem marshalling;

Page 12: Objetos Distribuídos para WEB Prof. Paulo Fernando da Silva FURB – Universidade Regional de Blumenau Pós-Graduação em Desenvolvimento WEB

CORBAArquitetura – ORB Parte Cliente

• Dynamic Invocation Interface (DII):– Permite descobrir métodos de servidores

remotos em tempo de execução;– CORBA define APIs para a localização de

meta-dados que definem as interfaces dos servidores:

• para a geração dos parâmetros,

• para invocação remota, e • para o retorno dos dados;

Page 13: Objetos Distribuídos para WEB Prof. Paulo Fernando da Silva FURB – Universidade Regional de Blumenau Pós-Graduação em Desenvolvimento WEB

CORBAArquitetura – ORB Parte Cliente

• Interface Repository APIs (IR): – Permitem obter a descrição de todas as

interfaces dos componentes registrados, os métodos que eles suportam, e os parâmetros que eles utilizam;

– É uma base de dados distribuída que contém as definições das interfaces no formato da IDL;

Page 14: Objetos Distribuídos para WEB Prof. Paulo Fernando da Silva FURB – Universidade Regional de Blumenau Pós-Graduação em Desenvolvimento WEB

CORBAArquitetura – ORB Parte Servidor

• Server IDL Stubs: – fornecem interfaces estáticas para cada serviço

exportado pelo servidor;– Também são criados pelo compilador IDL;– Fazem unMarshalling;

Page 15: Objetos Distribuídos para WEB Prof. Paulo Fernando da Silva FURB – Universidade Regional de Blumenau Pós-Graduação em Desenvolvimento WEB

CORBAArquitetura – ORB Parte Servidor

• Dynamic Skeleton Interface (DSI): – fornece mecanismos de ligação (binding) em

tempo de execução;– para servidores que necessitam manipular

requisições de objetos que não possuem stubs nem skeletons compilados;

– O DSI do servidor é equivalente ao DII do cliente;

Page 16: Objetos Distribuídos para WEB Prof. Paulo Fernando da Silva FURB – Universidade Regional de Blumenau Pós-Graduação em Desenvolvimento WEB

CORBAArquitetura – ORB Parte Servidor

• Object Adapter:– localiza-se no topo dos serviços de

comunicação do ORB;– recebe as requisições dos serviços antes dos

objetos do servidor;

• Provê um ambiente de execução:– para a instanciação dos objetos dos servidores;– para a passagem das requisições;

Page 17: Objetos Distribuídos para WEB Prof. Paulo Fernando da Silva FURB – Universidade Regional de Blumenau Pós-Graduação em Desenvolvimento WEB

CORBAArquitetura – ORB Parte Servidor

• Implementation Repository (IR): – fornece um repositório de informações sobre as

classes que um objeto suporta e os objetos que estão instanciados;

– Utilizado para armazenar informações adicionais associadas com as implementações de cada ORB, entre elas segurança e dados administrativos;

Page 18: Objetos Distribuídos para WEB Prof. Paulo Fernando da Silva FURB – Universidade Regional de Blumenau Pós-Graduação em Desenvolvimento WEB

CORBAArquitetura - Comunicação

client server

proxy

or dynamic invocation

implementation repository object

adapter

ORBORB

skeleton

or dynamic skeleton

client program

interface repository

Request

Replycorecore for A

Servant A

Page 19: Objetos Distribuídos para WEB Prof. Paulo Fernando da Silva FURB – Universidade Regional de Blumenau Pós-Graduação em Desenvolvimento WEB

CORBAServiços CORBA (CORBAservices)

• Serviço de Nomeação (Naming Service):– Provê capacidade para ligar um nome a um

objeto;– Resolver um nome é determinar o objeto

associado a um determinado nome;

Page 20: Objetos Distribuídos para WEB Prof. Paulo Fernando da Silva FURB – Universidade Regional de Blumenau Pós-Graduação em Desenvolvimento WEB

CORBAServiços CORBA (CORBAservices)

• Serviço de Evento (Event Service):– Suporta eventos assíncronos (desacoplamento

do produtor e consumidor);– Através de implementações apropriadas de

canais de eventos oferece uma entrega confiável dos eventos;

Page 21: Objetos Distribuídos para WEB Prof. Paulo Fernando da Silva FURB – Universidade Regional de Blumenau Pós-Graduação em Desenvolvimento WEB

CORBAServiços CORBA (CORBAservices)

• Serviço de Persistência;

• Serviço de Controle de Concorrência;

• Serviço de Consulta;

• Serviço de Segurança;

• Serviço de Tempo;

• ...

Page 22: Objetos Distribuídos para WEB Prof. Paulo Fernando da Silva FURB – Universidade Regional de Blumenau Pós-Graduação em Desenvolvimento WEB

CORBAIDL e Mapeamento

• linguagem independente;

• OMG IDL é derivada do C++;

• suporta tipos como:– inteiro com ou sem sinal;– tipos enumerados, estruturas, uniões,

seqüências;– exceções;

Page 23: Objetos Distribuídos para WEB Prof. Paulo Fernando da Silva FURB – Universidade Regional de Blumenau Pós-Graduação em Desenvolvimento WEB

CORBAIDL e Mapeamento

interface Printer {void print ( );

};

interface ColorPrinter: Printer {enum ColorMode {BackAndWhite,

FullColor};void set-color (in ColorMode mode);long numero( );

};

Page 24: Objetos Distribuídos para WEB Prof. Paulo Fernando da Silva FURB – Universidade Regional de Blumenau Pós-Graduação em Desenvolvimento WEB

CORBAIDL e Mapeamento

• Mapeamento especifica como a IDL pode ser traduzida para outra linguagem;– Em C++ as interfaces IDL são mapeadas para

classes e as operações são mapeadas para funções dessas classes;

• Mapeamentos OMG IDL padronizados:– C, C++, Smalltalk, Cobol, Ada e Java;

Page 25: Objetos Distribuídos para WEB Prof. Paulo Fernando da Silva FURB – Universidade Regional de Blumenau Pós-Graduação em Desenvolvimento WEB

CORBAEstudo de Caso

• Boas Vindas ao CORBA;

• Código da interface:– BoasVindas.idl;

• Implementação objeto remoto:– Msg_Boas_VindasImpl.java;

• Servidor: servidor.java;

• Cliente: cliente.java;

Page 26: Objetos Distribuídos para WEB Prof. Paulo Fernando da Silva FURB – Universidade Regional de Blumenau Pós-Graduação em Desenvolvimento WEB

CORBAEstudo de Caso

• Gerar stubs: idlj –fall BoasVindas.idl;– _Msg_Boas_VindasStub - Proxy– Msg_Boas_Vindas - Interface CORBA– Msg_Boas_VindasOperations – Operacoes– Msg_Boas_VindasHelper - Auxiliar– Msg_Boas_VindasHolder - Auxiliar– Msg_Boas_VindasPOA- Skeleton

Page 27: Objetos Distribuídos para WEB Prof. Paulo Fernando da Silva FURB – Universidade Regional de Blumenau Pós-Graduação em Desenvolvimento WEB

CORBAEstudo de Caso

• Compilar Servidor:– javac BoasVindas\servidor.java;

• Compilar Cliente:– javac cliente.java;

Page 28: Objetos Distribuídos para WEB Prof. Paulo Fernando da Silva FURB – Universidade Regional de Blumenau Pós-Graduação em Desenvolvimento WEB

CORBAEstudo de Caso

• Executar ORB:– orbd –ORBInitialPort 2000;

• Executar Servidor:– java BoasVindas.servidor –ORBInitialPort

2000;

• Executar Cliente:– java cliente –ORBInitialPort 2000 –

ORBInitialHost localhost;

Page 29: Objetos Distribuídos para WEB Prof. Paulo Fernando da Silva FURB – Universidade Regional de Blumenau Pós-Graduação em Desenvolvimento WEB

CORBAAtividade

• Testar estudo de caso em diferentes computadores;

• Passar e retornar parâmetro na mensagem;– Alterar interface;– Alterar servidor;– Alterar cliente;

Page 30: Objetos Distribuídos para WEB Prof. Paulo Fernando da Silva FURB – Universidade Regional de Blumenau Pós-Graduação em Desenvolvimento WEB

CORBAAtividade – Calculadora Remota

• Interface Calculadora.idl;• Desenvolver:

– cliente;– servidor;– calc_numericaImpl.java

• Executar:– Gerar Stubs;– Compilar Servidor / Cliente;– Executar ORB;– Executar Servidor / Cliente;

Page 31: Objetos Distribuídos para WEB Prof. Paulo Fernando da Silva FURB – Universidade Regional de Blumenau Pós-Graduação em Desenvolvimento WEB

CORBAAtividade

• Alterar exemplo da calculadora;• Adicionar dois métodos na interface:

– sendClientName;– getServerName;

Page 32: Objetos Distribuídos para WEB Prof. Paulo Fernando da Silva FURB – Universidade Regional de Blumenau Pós-Graduação em Desenvolvimento WEB

CORBAAtividade - Extra

• Definir um tema;• Se organizar em duplas de máquinas;• Um lado desenvolve o cliente;• Outro lado desenvolve o servidor;• Estabelecer a comunicação;