objetos distribuídos para web prof. paulo fernando da silva furb – universidade regional de...
TRANSCRIPT
Objetos Distribuídos para WEB
Prof. Paulo Fernando da Silva
FURB – Universidade Regional de BlumenauPó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;
Módulo 4 - Sumário
• CORBA – Common Object Request Broker Arquitecture– Introdução;– Arquitetura CORBA;– Estudo de Caso;– Atividade;
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;
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;
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;
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.
CORBAArquitetura
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;
CORBAArquitetura - ORB
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;
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;
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;
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;
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;
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;
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;
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
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;
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;
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;
• ...
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;
CORBAIDL e Mapeamento
interface Printer {void print ( );
};
interface ColorPrinter: Printer {enum ColorMode {BackAndWhite,
FullColor};void set-color (in ColorMode mode);long numero( );
};
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;
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;
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
CORBAEstudo de Caso
• Compilar Servidor:– javac BoasVindas\servidor.java;
• Compilar Cliente:– javac cliente.java;
CORBAEstudo de Caso
• Executar ORB:– orbd –ORBInitialPort 2000;
• Executar Servidor:– java BoasVindas.servidor –ORBInitialPort
2000;
• Executar Cliente:– java cliente –ORBInitialPort 2000 –
ORBInitialHost localhost;
CORBAAtividade
• Testar estudo de caso em diferentes computadores;
• Passar e retornar parâmetro na mensagem;– Alterar interface;– Alterar servidor;– Alterar cliente;
CORBAAtividade – Calculadora Remota
• Interface Calculadora.idl;• Desenvolver:
– cliente;– servidor;– calc_numericaImpl.java
• Executar:– Gerar Stubs;– Compilar Servidor / Cliente;– Executar ORB;– Executar Servidor / Cliente;
CORBAAtividade
• Alterar exemplo da calculadora;• Adicionar dois métodos na interface:
– sendClientName;– getServerName;
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;