Aula_10

Propaganda
UNIVERSIDADE
Sistemas Distribuídos
Ciência da Computação
Aula 19-20: Arquitetura CORBA (continuação)
Exemplo de cliente e servidor em CORBA
●
Interfaces IDL Shape e ShapeList
Exemplo de cliente e servidor em CORBA
●
●
●
Em Java o primeiro é compilar o arquivo IDL através do
compilador idlj
Este compilador vai gerar um conjunto de arquivos em Java
descritos a seguir
ShapeList.java e ShapeListOperations.java que definem
os métodos apresentados na IDL para linguagem Java
Exemplo de cliente e servidor em CORBA
●
●
●
Skeletons para cada interface IDL. Os nomes dos skeletons
terminam em POA, como por exemplo ShapeListPOA.java
e ShapePOA.java
Stubs (proxy) para cada interface IDL. Os nomes dos proxys
terminam em Stub, como por exemplo
_ShapeListStub.java e _ShapePOAStub.java
Cada struct definido num arquivo IDL corresponde a uma
classe Java, como por exemplo Rectangle.java e
GraphicalObject.java
Exemplo de cliente e servidor em CORBA
●
Classes Helper que através do método narrow converte um
objeto CORBA para o tipo definido na interface IDL.

●
Ex.: ShapeHelper.java, ShapeListHelper.java
Classes Holder que lidam com argumentos in e inout que
não podem ser mapeados diretamente para Java.

Ex.: ShapeHolder.java, ShapeListHolder.java
Programa Servidor
●
●
●
Contém um ou mais objetos remotos definidos na linguagem
de implementação do servidor
Quando um objeto remoto é criado, o servidor deve registrálo através do POA
O POA por sua vez o transforma em um objeto CORBA e
retorna a referência remota deste objeto
Programa Servidor
Programa Servidor
●
●
●
Na linha 1, ORB é inicializado
Linhas 2 e 3 servem para obter uma referência e ativar o
POA chamado aqui de POAManager
Na linha 4 é criado uma instância da classe servente
(ShapeListServant) e passa para esta instância uma
referência do POA
Programa Servidor
●
Na linha 5, esta instância é transformada num objeto
CORBA através do método servant_to_reference()

●
Isto é necessário pois somente um objeto CORBA pode
ser registrado no serviço de nomes e acessado por
clientes
As demais linhas (6 a 9) servem para registrar o objeto
CORBA no serviço de nomes sendo que o registro de fato é
feito através do método rebind()
Classe servante do objeto remoto
●
●
Objeto servente
utilizado pelo
servidor que serve
para cadastrar
objetos geométricos
Herda de
ShapeListPOA que
representa o
skeleton
Programa cliente
Programa cliente
●
●
●
●
No programa cliente, o ORB também é criado e inicializado
(linha 1)
Em seguida obtém uma referência remota do objeto remoto
CORBA ShapeList através do método resolve do serviço
de nomes (linha 2)
Depois o método allShapes() é executado que então retorna
referências remotas dos objetos Shapes cadastrados no
servidor (linha 3)
Um destes objetos Shapes tem suas informações
visualizadas através do método getAllState() (linha 4)
Referências de objeto remoto CORBA
●
●
Em CORBA, são chamadas de IOR (referência
interoperável de objeto)
Pode ser utilizada para ativar um objeto remoto que
esteja em um repositório de implementação
Referências de objeto remoto CORBA
●
●
●
O primeiro campo serve para identificar uma interface
IDL em um repositório de interface caso seja
necessário realizar uma invocação dinâmica
O segundo campo serve para definir o protocolo de
transporte utilizado. O IIOP utiliza TCP e consiste de
host e uma porta
O terceiro campo serve para identificar o objeto
CORBA de maneira única. É formado pelo nome do
objeto e do adaptador de objeto
Referências de objeto remoto CORBA
●
●
●
Existem dois tipos de IOR
IOR transiente que dura apenas enquanto o processo
servidor existir e é usado para acessar um objeto CORBA
no servidor
IOR persistente que existe entre as ativações de objetos
CORBA e é usaodo para acessar um objeto CORBA num
repositório de implementação
Serviços CORBA
●
●
Serviço de nomes: Define uma forma mais
amigável de referenciar objetos CORBA, através de
nomes simbólicos.
Ciclo de vida do objeto: Define como os objetos
CORBA são criados, removidos, movidos e
copiados.
Serviços CORBA
●
●
●
Controle de Concorrência: Assegura que a
consistência de um objeto não seja comprometida
por invocações concorrentes.
Serviço de Consultas: Suporta consultas em
coleções de objetos CORBA.
Persistência: Possibilita aos clientes localizar o
objeto servidor armazenado e invocá-lo somente na
hora em que for necessário.
Serviços CORBA
●
●
Serviço de Negociação: Provê a busca de objetos
CORBA baseada nas propriedades que descrevem
o serviço oferecido pelo respectivo objeto.
Serviço de eventos: Oferece um método
assíncrono de comunicação (callback) entre
objetos, com o uso de objetos fornecedores e
consumidores, que comunicam-se através de um
canal de eventos.
Serviço de Nomes
●
●
É um exemplo sofisticado de binder
Permite que nomes sejam associados a referências
de objetos remotas

Fornece meios para registrar um objeto (bind)

Para obter uma referência (resolve)

Nomes podem ser estruturados de forma hierárquica
Serviços de Nomes
Serviço de segurança
●
●
●
Identificação e autenticação de usuários
(humanos ou objetos) para verificar se são quem
eles dizem ser.
Autorização e controle de acesso de usuários,
decidindo quais deles devem acessar determinado
objeto através de sua identificação ou de seus
privilégios
Direitos de acessos podem ser definidos através
de listas de controle de acesso (ACL)
Serviço de segurança
●
●
●
Segurança de comunicação entre objetos que estejam
executando sobre camadas de comunicação inseguras.
Prova a ocorrencia de uma ação através de serviços de
não-repudiação que provê a geração de uma evidência de
ações e a verificação posterior desta evidência.
CORBA permite escolher se mecanismos de segurança
devem ser utilizados ou não
Serviço de notificação e eventos CORBA
●
Objetos de interesse são chamados de suppliers
●
Assinantes são chamados de consumers
●
As funções de um observador são definidas através
de event channels e filtros
Serviço de notificação e eventos CORBA
●
Notificações podem ser :


●
●
“empurradas” pelo supplier para o consumer ou
“puxadas” pelo consumer do supplier
Notificações são comunicadas através de
invocação de método remota síncronas
Para se comunicar de assíncrona é necessário o
uso de event channels
Serviço de notificação e eventos CORBA
●
Suppliers “empurram” notificações para consumers
Serviço de notificação e eventos CORBA
●
Consumers “puxam” notificações dos suppliers
Download