Upload
adriano-teixeira-de-souza
View
2.770
Download
2
Embed Size (px)
Citation preview
Comunicação Distribuída – CORBA
Prof. Adriano Teixeira de Souza
Estratégias diferentes que permitem a comunicação entre aplicações distribuídas.
Tipos distintos de comunicação em um sistema distribuído:
◦ Sockets
◦ RPC – Remote Procedure Call
◦ RMI - Remote Method Invocation
◦ CORBA – Commom Object Request Broker Architecture ◦ EJB – Enterprise Java Bean
◦ Web Services
Prof. Adriano Teixeira de Souza
Motivação: ◦ Socket
Desenvolvimento lento
◦ RPC Procedural
Dependente de linguagem
◦ RMI O.O
Dependente de Linguagem
◦ Suporte a diversas linguagens, possibilitando a
comunicação entre módulos escritos em linguagens distintas
Prof. Adriano Teixeira de Souza
Objetivo ◦ Tornar fácil a implementação de aplicações distribuídas
◦ Para sistemas Orientado a Objetos e procedurais
◦ Independentes de:
plataforma
sistema operacional
linguagem de programação
protocolo de comunicação
◦ Permitindo chamadas de procedimento remoto como se fossem locais
Prof. Adriano Teixeira de Souza
História ◦ OMG
A arquitetura CORBA é desenvolvida pela OMG (Object Management Group). www.omg.org
A OMG foi fundada em 1989 por oito membros fundadores (3Com, American Airlines, Canon, Data General, HP, Philips, Sun e Unisys).
No ano 2000 tinha mais de 800 membros, incluindo IBM e Microsoft (apenas como observadora).
Prof. Adriano Teixeira de Souza
CORBA - Common Object Request Broker Architecture,
Especificação que permite aos objetos de sistemas distribuídos comunicarem-se entre si de forma transparente
Componentes principais da OMA - Object Management Architecture ◦ Objetos da aplicação ◦ Facilidades CORBA ◦ Serviços de Objeto ◦ ORB
Prof. Adriano Teixeira de Souza
Conceito de ORB (Object Request Broker) ◦ componente que auxilia o cliente a invocar um
método em um objeto de forma transparente
(transparência de acesso)
localização do objeto
ativação do objeto se necessário
comunicar ao objeto sobre a requisição do cliente
Prof. Adriano Teixeira de Souza
Chamada através de um ORB
Prof. Adriano Teixeira de Souza
Objetivo: possibilitar que clientes invoquem métodos a
objetos remotos (objetos CORBA), e que ambos possam
ser implementados em linguagens distintas
A linguagem de implementação do cliente não precisa ser
necessariamente orientada a objetos
Funcionalidades
◦ invocações estáticas
interface remota do objeto CORBA é conhecida em tempo de
compilação (utilização dos stubs e skeletons)
◦ invocações dinâmicas
interface remota do objeto CORBA não é conhecida em
tempo de compilação
Prof. Adriano Teixeira de Souza
Estrutura de um ORB
Prof. Adriano Teixeira de Souza
Semântica de invocação ◦ semântica at-most-once (default)
◦ semântica OneWay
métodos sem resultados ou callbacks, o cliente não bloqueia na espera de uma resposta
◦ Semântica at-most-once
O cliente continua imediatamente e pode mais tarde bloquear-se à espera da resposta
Objeto CORBA: objeto remoto ◦ implementa uma interface IDL
◦ possui uma referência de objeto remoto
◦ capaz de responder a invocações aos métodos de sua interface
Prof. Adriano Teixeira de Souza
client server
proxy
or dynamic invocation
implementation
repository object adapter
ORB ORB
skeleton
or dynamic skeleton
client program
interface
repository
Request
Reply core core for A
Servant
A
Prof. Adriano Teixeira de Souza
Adaptador de objeto (Object Adapter) ◦ interliga os objetos CORBA e as classes do
servidor
◦ cria as referências a objetos remotos para os
objetos CORBA
◦ despacha cada RMI através de um skeleton
para o servidor apropriado
◦ ativa objetos (se necessário)
◦ CORBA 2.2: POA (Portable Object Adapter)
permite que aplicações e servidores sejam executados
em ORBs produzidos por desenvolvedores diferentes
Prof. Adriano Teixeira de Souza
Skeleton (servidor) ◦ geradas na linguagem do servidor por um compilador
IDL
◦ RMIs são despachadas através do skeleton apropriado a
um servidor
◦ marshaling e unmarshaling
Stubs/proxies (cliente)
◦ geradas na linguagem do cliente por um compilador IDL
◦ proxy (linguagens orientadas a objeto)
◦ stub (linguagens procedurais)
◦ marshaling e unmarshaling
Prof. Adriano Teixeira de Souza
Repositório de implementação
◦ ativa por demanda os servidores registrados, e localiza
os servidores em execução
◦ armazena tabela com o mapeamento dos nomes dos
adaptadores de objetos para suas implementações
◦ na ativação de objeto remoto, o hostname e o número
da porta no servidor são adicionados na tabela
◦ possibilita armazenar outras informações sobre os
servidores (e.g. controle de acesso)
◦ permite replicação
aumento de disponibilidade e tolerância a falhas
Prof. Adriano Teixeira de Souza
Repositório de interface
◦ provê informações sobre interfaces IDL registradas (e.g. métodos, argumentos, exceções)
◦ cliente sem proxy de objeto pode obter informações necessárias (métodos e argumentos)
◦ necessário para invocações dinâmicas
◦ nem todos os ORBs provêm um repositório de interfaces
Prof. Adriano Teixeira de Souza
Interface de invocação dinâmica
◦ permite que clientes façam invocações dinâmicas a objetos CORBA desconhecidos
◦ cliente obtém informações necessárias sobre um objeto CORBA a partir do repositório de interfaces, e utiliza esta informação para construir uma invocação e enviá-la ao servidor
Prof. Adriano Teixeira de Souza
Passo para uma Inovação Dinâmica 1. Identificar o objeto que queremos invocar
(provavelmente através do Trader Service do CORBAservices);
2. Recuperar sua interface (buscá-la no Repositório de Interfaces);
3. Construir a invocação;
4. Invocar a requisição, e receber os resultados.
Prof. Adriano Teixeira de Souza
Interface skeleton dinâmica
◦ permite um objeto CORBA aceitar invocações em uma interface sem skeleton
interface não era conhecida em tempo de compilação
◦ skeleton dinâmico
recebe a invocação
inspeciona o conteúdo da requisição para descobrir o objeto destino, o método para ser invocado e os argumentos
invoca o destino
Prof. Adriano Teixeira de Souza
Prof. Adriano Teixeira de Souza
Facilidades para definir módulos, interfaces, tipos, atributos e métodos
sintaxe similar a C++ incluindo mais algumas palavras-chaves
Módulos IDL
◦ permite agrupar interfaces e outros tipos IDL em unidades lógicas
◦ módulo define um nome de escopo (evita conflito entre nomes)
Interfaces IDL
◦ descrevem os métodos e atributos que são disponíveis por objetos CORBA que implementam a interface
Prof. Adriano Teixeira de Souza
Transparência de localização ◦ Tratamento igual para Função local
Deficiências de projeto e processo
Problemas com implementações
Firewalls
Prof. Adriano Teixeira de Souza