Você está na página 1de 34

Conteúdo

Parte I Parte II
n Conceitos Básicos n Comunicação por Sockets
Sistemas Distribuídos n
n
Segurança de Funcion.
Funcion.
Tolerância a Faltas
n
n
n
Comunicação em Sist
Sist.. Distribuídos
APIs de Comunicação
A API Socket
Parte II n Comunicação de Grupo n Sockets Datagrama
n Sincronização de Relógios n Sockets Multicast
n Sockets Stream
n Oordenação de Eventos n Detecção de Erros
Prof. Frank A. Siqueira,
Siqueira, Ph.D. n Algoritmos Distribuídos n Objetos Distribuídos
INE - UFSC n Transações Distribuídas n Cham. Remota de Procedimento
Cham.
n Memória Compartilhada n DCOM
n CORBA
n Sist.
Sist. de Arquivo Distrib.
Distrib. n Serviços CORBA
E-Mail: frank@inf.ufsc.br n Segurança n Facilidades CORBA
Web Page:
Page: http://www.inf
http://www.inf.ufsc.
.ufsc.br/~frank/unileste
br/~frank/unileste// n Java RMI n CORBA IDL
n Desenvolvimento de Aplicações
2

Comunicação em Sist.
Sist. Distribuídos

n As diversas partes integrantes de um


sistema distribuído interagem para
Comunicação por Sockets trabalhar conjuntamente
n Trocam dados / mensagens
n Comunicação em Sistemas Distribuídos
n APIs de Comunicação n Utilizamserviços fornecidos por terceiros
n A API Socket n Empregam os serviços de comunicação
n Sockets Datagrama fornecidos pelo S.O.
n Sockets Multicast n Seguem protocolos de comunicação para que
n Sockets Stream possam entender uns aos outros
n Detecção de Erros
3 4

Comunicação em Sist.
Sist. Distribuídos Comunicação em Sist.
Sist. Distribuídos

n Protocolos de Comunicação n Protocolos


n Estabelecem caminhos virtuais de Com licença… Pede conexão
comunicação entre duas máquinas Pois não… Aceita conexão
n Devem usar os mesmos protocolos para trocar
informações Que horas são? Envia mensagem

São 8 horas. Confirma recepção

Protocolo X Camada X
Camada X Obrigado! Fecha conexão
Protocolo Y Camada Y
Camada Y
Protocolo Z De nada. Libera conexão
Camada Z Camada Z
tempo
Meio de Transmissão
5 6

PDF created with pdfFactory Pro trial version www.pdffactory.com


Comunicação em Sist.
Sist. Distribuídos Comunicação em Sist.
Sist. Distribuídos

n Classificação dos Serviços de Comunicação n Classificação pelo No de participantes


n Serviço sem Conexão:
Conexão: cada unidade de dados n Unicast:
Unicast:1à1
é enviada independentemente das demais n Multicast:
Multicast:1 à N ou M à N
n Broadcast: 1 à Todos
+
n Classificação pelo tamanho
tamanho das mensagens
n Serviço com Conexão:
Conexão: dados são enviados n Fixo ou variá
variável
através de um canal de comunicação n Limitado ou não
n Classificação pelo Sincronismo
2 Canal de Comunicação 2 n Síncrono, Assí
Assíncrono ou Semi-
Semi-síncrono
7 8

APIs de Comunicação APIs de Comunicação


n APIs de comunicação permitem que as n Exemplos de APIs de comunicação:
comunicação:
aplicações enviem e recebam dados n Sockets: portas de comunicação locais ou de
n Fornecem primitivas de comunicação que rede (versão segura:
segura: SSL)
podem ser chamadas a partir do código n Suportes de RPC (Remote
(Remote Procedure Call):
Call):
n Provêem acesso aos serviços de comunicação,
comunicação, permitem chamar procedimentos/métodos
que podem assim ser usados pelas aplicações remotamente (ex.: Java RMI, Sun RPC, ...)
n Canais de eventos:
eventos: permitem notificar threads
Programa
e processos dos eventos ocorridos no sistema
API (Ex.: JMS, CORBA Notification Service, …)
S.O. n…
9 10

A API Socket A API Socket


n Sockets n Tipos de Socket
n Abstrações que representam uma porta de n Sockets Datagrama:
Datagrama: serviço sem conexão
comunicação associada a uma aplicação n Sockets Multicast: envio para um grupo sem
n Originário do UNIX; portado para vários S.O. estabelecimento de conexão
n Identificados por um inteiro de 16 bits n Sockets Stream: serviço com conexão,
conexão,
n Valores de 0 a 1024: alocados para baseado no paradigma cliente-
cliente-servidor
serviços padronizados pela rede n ...
n Valores acima de 1024: podem ser usados
livremente pelos desenvolvedores

11 12

PDF created with pdfFactory Pro trial version www.pdffactory.com


Sockets Datagrama Sockets Datagrama
n Sockets Datagrama enviam mensagens – n Sockets Datagrama empregam o protocolo
os datagramas – sem estabelecer conexão UDP (User
(User Datagram Protocol )
n Datagramas são enviados (ou seja, segmentos n Permite o envio de datagramas com tamanho
de memória são copiados) de um processo limitado a 64Kb
para outro n Protocolo não confiável:
confiável: pode ocorrer perda ou
n Processos podem rodar em máqs diferentes troca da ordem dos datagramas
n Ideal para aplicações que trocam poucos
dados (ex.: indicação de um evento;
evento; consulta
P1 P2 ao DNS) e para a aplicações que toleram perda
de dados (ex.: transmissão de áudio e vídeo)
vídeo)
13 14

Sockets Datagrama Sockets Datagrama


n O Datagrama UDP n Funcionamento do UDP – Envio
32 bits n O emissor monta o datagrama
Porta de Origem Porta de Destino n Identifica a aplicação (porta)
porta) de origem
Tamanho Soma de Verificação n Identifica a aplicação (porta)
porta) de destino
n Calcula o tamanho dos dados a enviar
Dados n Calcula a soma de verificação
(tamanho variável)
n Adiciona os dados ao final do datagrama

n Envia o datagrama através da rede utilizando


o protocolo IP
15 16

Sockets Datagrama Sockets Datagrama

n Funcionamento do UDP – Recepção n Usando Sockets Datagrama em Java


n O receptor verifica se a mensagem chegou n Criar um socket datagrama:
datagrama:
DatagramSocket s = new DatagramSocket(porta);
DatagramSocket(porta);
intacta utilizando a soma de verificação
n Criar pacotes de dados para envio:
envio:
n Se a mensagem possuir erros,
erros, a descarta DatagramPacket pack = new DatagramPacket(msg,
DatagramPacket(msg,
n Caso contrário,
contrário, o receptor obtém os dados, tamanho,
tamanho, destino,
destino, porta);
porta);
cujo tamanho é especificado no cabeçalho,
cabeçalho, e n Enviar dados: s.send(pack);
s.send(pack);
os entrega para a aplicação cuja porta é n Criar pacotes de dados para recepção:
recepção:
especificada como destino DatagramPacket pack = new DatagramPacket(msg,tam);
DatagramPacket(msg,tam);
n Receber dados: s.receive(pack);
s.receive(pack);
n Ler dados do pacote:
pacote: pack.getData()
pack.getData()
17 18

PDF created with pdfFactory Pro trial version www.pdffactory.com


Sockets Multicast Sockets Multicast
n Multicast n Protocolo IP Multicast
n Enviosimultâneo de uma mensagem a um n Garante que quando um datagrama for
grupo de destinatários enviado para o endereço multicast, todas as
máquinas do grupo o receberão
n Não recupera erros no envio
Grupo
Multicast n Só pode ser usado através do UDP, pois o
multicast é um serviço sem conexão
Emissor

19 20

Sockets Multicast Sockets Multicast


n IP Multicast – Endereçamento n IP Multicast – Funcionamento
n Correspondem à Classe D, estando na faixa n Emissor não precisa fazer parte do grupo para
entre 223.1.1.xx e 239.254.254.xx enviar mensagens ao grupo,
grupo, e nem precisa
n Endereços na faixa de 224.0.0.1 a 224.0.0.255 saber quem são os seus membros;
membros; basta
são permanentes,
permanentes, alocados pelo NIC; os conhecer o endereço IP do grupo
demais são temporários e podem ser usados n Vários emissores podem mandar mensagens
livremente para o grupo (ou seja,
seja, mensagens vão de
X → Y máquinas)
máquinas)
n O receptor entra em um grupo (se torna um
membro do grupo) e passa a receber as
21
mensagens destinadas ao grupo 22

Sockets Multicast Sockets Multicast


n IP Multicast – Roteamento n Envio de Multicast em Java
n Roteadores são responsáveis por entregar o try {
datagrama aos membros do grupo,
grupo, criando DatagramSocket socket = new DatagramSocket();
DatagramSocket();
cópias ao longo do caminho quando preciso InetAddress grupo = InetAddress.
InetAddress.getByName(
getByName(
n Roteadores devem conhecer a lista de “230.1.2.3”);
membros de um grupo para fazer a entrega byte[] dados = new byte[100];
int porta = 1234;
n Roteadores antigos não suportam multicast
DatagramPacket pacote = new DatagramPacket(
DatagramPacket(
n É possível limitar a área na qual um pacote dados, dados.length
dados.length,, grupo, porta);
multicast é distribuído (ou seja,
seja, por quantos socket.
socket.send(pacote);
send(pacote);
roteadores ele passa)
passa) usando o campo TTL } catch (SocketException
(SocketException e) {
(tempo de vida)
vida) do datagrama IP } catch (IOException
(IOException e) { }
23 24

PDF created with pdfFactory Pro trial version www.pdffactory.com


Sockets Multicast Sockets Stream
n Recepção de Multicast em Java n Sockets Stream
try { n Estabelecem canais de comunicação entre
int porta = 1234; aplicações,
aplicações, permitindo troca de dados pela rede
MulticastSocket msocket = new MulticastSocket(porta);
MulticastSocket(porta);
n Adotam o paradigma cliente-
cliente-servidor
InetAddress grupo = InetAddress.
InetAddress.getByName(
getByName(
“230.1.2.3”); n Cliente:
Cliente: solicita ao servidor que execute um
msocket.
msocket.joinGroup(grupo);
joinGroup(grupo); determinado serviço
byte[] dados = new byte[100]; n Servidor:
Servidor: atende solicitações dos clientes
DatagramPacket pacote = new DatagramPacket(
DatagramPacket(
dados, dados.length
dados.length);
);
msocket.
msocket.receive(pacote);
receive(pacote); Cliente Servidor
} catch (SocketException
(SocketException e) {
} catch (IOException
(IOException e) { }
25 26

Sockets Stream Sockets Stream


n Sockets Stream utilizam o protocolo TCP n TCP – Formato do Segmento de Dados
(Transmission Control Protocol)
Protocol) 32 bits
n Protocolo confiável de transmissão de dados Porta de Origem Porta de Destino
n Projetado para corrigir os erros causados por Número de Seqüência
uma sub-
sub-rede não confiável (sujeita a erros)
erros) Reconhecimento por Carona
n Totalmente orientado a conexão TC Flags Tamanho da Janela
n Permite o envio de dados sem limitação de Soma de Verificação Ponteiro Urgente
tamanho Opções (tamanho variável)
n Ideal para aplicações que não toleram erros
e que trocam grandes volumes de dados Dados
(tamanho variável)
(ex.: e-
e-mail, transmissão de arquivos)
arquivos)
27 28

Sockets Stream Sockets Stream


n TCP – Campos do Segmento de Dados n TCP – Segmentação
n TC: tamanho do cabeçalho (TC*32 bits) n Dados enviados através do TCP são divididos
n Flags: 6 bits - ponteiro urgente em uso;
uso; em segmentos de tamanho limitado
reconhecimento em uso;uso; fim dos dados; n Devem ser criados segmentos de tamanho
abortar / abrir / fechar conexão apropriado para a rota utilizada,
utilizada, evitando que
n Janela:
Janela: tamanho da janela deslizante (bytes) ocorra fragmentação ao longo do caminho
n Ponteiro Urgente:
Urgente: indica a localização de n MSS (Maximum
(Maximum Segment Size) Size)
dados urgentes contidos no segmento Valores típicos:
típicos: 576 ou 512 bytes em WANs;
n Opções:
1,5Kb em LANs Ethernet
Opções: campo usado para negociar o
tamanho do segmento,
segmento, associar marcas de n Difícil definir o tamanho de segmento ideal,
tempo (timestamps
(timestamps)) às mensagens etc. pois a rota pode mudar dinamicamente
29 30

PDF created with pdfFactory Pro trial version www.pdffactory.com


Sockets Stream Sockets Stream
n TCP – Segmentação n TCP – Segmentação
n Segmentos são identificados por números de n Os dados enviados com TCP são colocados em
seqüência (32 bits), que definem a posição do um buffer criado ao estabelecer a conexão
primeiro byte de dados do segmento na n TCP decide quando enviar os dados do buffer

mensagem original (completa) n Dados muito pequenos são agrupados e

n Exemplo:
transmitidos de uma só vez
SEQ: 0000000000 n Na maioria dos casos esta estratégia melhora o
From: frank@inf.ufsc.br
From: frank@inf.ufsc.br
To: fula desempenho,
desempenho, mas pode causar problemas
To: fulano@empresa.com
Subject: testando n O armazenamento pode ser evitado fazendo
SEQ: 0000000032
... no@empresa.com um flush na porta ou usando a opção da porta
Subject: testando TCP_NO_DELAY
(supondo segmentos de 32 bytes)
31 32

Sockets Stream Sockets Stream


n TCP – Segmentação n Gerenciamento de Conexões
n Envio dos Segmentos TCP n Conexões são identificadas por seus endpoints
n Cada segmento deve ser enviado como um n Endpoint:
Endpoint: <endereço
<endereço IP, porta>
porta>
datagrama através do protocolo IP n Conexão:
Conexão < : <endpoint
endpoint orig., endpoint dest.>
dest.>
n Remontagem dos Segmentos TCP n Uma mesma porta pode ser usada em mais de
n Como a ordem dos segmentos pode ser uma conexão
trocada pelo IP, cabe ao TCP reordená-
reordená-los e n Cada conexão tem a sua própria fila de
remontar a mensagem original mensagens
n Segmentos podem ser duplicados,
duplicados, devendo n Útil p/ serviços como Web, E-E-mail, FTP etc.
ser descartados pelo TCP
33 34

Sockets Stream Sockets Stream


n Gerenciamento de Conexões n Abertura de Conexão
n TCP deve controlar a abertura e o fechamento nA perda e retransmissão de pedidos de
de conexões para gerenciar a alocação de conexão pode levar à duplicação do pedido,
pedido,
recursos (buffers,
buffers, números de porta,
porta, etc.) prejudicando o funcionamento do TCP
n A abertura e o encerramento de conexões são n Solução:
Solução: utilização do Aperto de Mão Triplo
feitos através de mensagens de controle (Three-
Three-Way Handshake)
Handshake)
trocadas entre as máquinas n 1a Mensagem:
Mensagem: Pedido de Conexão
n O estabelecimento de conexões é feito usando n 2a Mensagem:
Mensagem: Aceitação (ou Rejeição)
Rejeição)
o paradigma cliente-
cliente-servidor n 3a Mensagem:
Mensagem: Confirmação de Conexão
n Servidor:
Servidor: aguarda pedidos de conexão
n Cliente:
Cliente: pede para se conectar ao servidor 35 36

PDF created with pdfFactory Pro trial version www.pdffactory.com


Sockets Stream Sockets Stream
n Abertura de Conexão n Fechamento de Conexão
n Durante a abertura da conexão, os números de nO fechamento da conexão deve ser acordado
seqüência iniciais são definidos aleatoriamente entre as duas partes, de modo a garantir que
n Os números de seqüência iniciais são enviados nenhum dado será perdido
nas mensagens de controle e confirmados n A conexão também pode ser abortada de
pelas partes durante o aperto de mão triplo imediato por iniciativa de uma das partes
Máquina A t Máquina A t
K: o

Co Q :1

Fe
1

o
A C e xã
P e SEQ

10
SE


nf 01

ch
de :1 0

irm A

ne
2 0 on

ar

AC
Co
Q: a C

K
Co 0

a CK

Co

AC
Co :2

K
0
ne

SE c e it

ar
ne
ne 01

ch


A

Fe
o

o
o

Máquina B Máquina B
37 38

Sockets Stream Sockets Stream


n Controle de Fluxo n Sockets Stream apresentam desempenho
n Baseado em Janelas Deslizantes pior que os Sockets Datagrama
n TCP precisa remontar mensagens,
mensagens, controlar
n Permitem que vários segmentos sejam
janelas de transmissão,
transmissão, enviar mensagens de
enviados antes de receber confirmação
reconhecimento,
reconhecimento, gerenciar conexões,
conexões, …
n São usadas 4 janelas por conexão
n Cabeçalho TCP é maior:
maior: precisa enviar mais
n Duas em cada ponta – p/ envio e recepção dados de controle à pior aproveitamento da
n Tamanho da janela capacidade de transmissão
n Definido em bytes, levando em conta o n TCP simplifica o trabalho do desenvolvedor
espaço disponível nos buffers da máquina n Aplicação
UDP deve fazer controle de erros,
erros,
remontagem e reordenação caso necessário
n Limitado para evitar congestionamentos
39 40

Sockets Stream Sockets Stream


n Usando Sockets Stream no Servidor n Usando Sockets Stream no Servidor
n Criando um socket servidor n Enviando dados
ServerSocket s = new ServerSocket(porta,
ServerSocket(porta, maxClientes);
maxClientes); out.write(buffer);
out.write(buffer); // Envia buffer (byte[])
out.writeString(“OK”);
out.writeString(“OK”); // Envia String
n Aguardando conexão out.flush();
out.flush(); // Faz o envio pela rede
Socket c = s.accept();
s.accept(); n Recebendo dados
n Obtendo nome do host conectado int bytesRecebidos = in.read(buffer,0, buffer.length);
buffer.length);
String host = c.getInetAddress().getHostName();
c.getInetAddress().getHostName(); String str = in.readString();
in.readString();
n Fechando a conexão
n Criando fluxos de dados
ObjectInputStream in = new in.close();
in.close();
ObjectInputStream(c.getInputStream());
ObjectInputStream(c.getInputStream()); out.close();
out.close();
ObjectOutputStream out = new c.close();
c.close();
ObjectOutputStream(c.getOutputStream());
ObjectOutputStream(c.getOutputStream()); 41 42

PDF created with pdfFactory Pro trial version www.pdffactory.com


Sockets Stream Detecção de Erros
n Usando Sockets Stream no Cliente n Erros no envio de dados através de
n Criando um socket cliente sockets podem ser detectados e
Socket c = new Socket( corrigidos automaticamente pela rede
InetAddress.getByName(“servidor.com
InetAddress.getByName(“servidor.com ”), porta);
porta);
n Sockets Datagrama e Multicast:
n Criar fluxo,
fluxo, enviar e receber dados, e fechar:
fechar: responsabilidade do enlace da rede,
rede, que
idem ao servidor geralmente faz apenas a detecção e o
n Exceções descarte dos quadros com erro
n SocketException n Sockets Stream: detecção e correção de
n UnknownHostException erros fim-
fim-a-fim na camada de transporte,
transporte,
n IOException indo além do que já é feito no enlace
43 44

Detecção de Erros Detecção de Erros


n Detecção de Erros no Enlace n Detecção de Erros no Enlace
n São usados códigos de detecção de erros e n Código de redundância cíclica (CRC):
estratégias de correção de erros acrescenta bits aos dados de forma que,
que, ao
n Cada enlace de rede pode usar uma técnica ser gerado um polinômio a partir destes bits,
diferente para detectar/corrigir erros,
erros, ou pode este seja divisível por um polinômio gerador
simplesmente ignorá-
ignorá-los usando álgebra XOR
n Bit de paridade par/ímpar
par/ímpar Ex: Pol. gerador: x4 + x + 1
Pol. gerador:
n Escolhido de forma que o número de bits 1 Dados: 1101011011 + CRC de 4 bits
no quadro seja par/ímpar
par/ímpar Pol. gerado: x13+x12+x10+x8+x7+x5+x4+x3+x2+x1
Pol. gerado:
n Detecta erros simples (1 bit) e qualquer Dados + CRC:
CRC: 11010110111110
11010110111110
número ímpar de bits trocados nos dados Quociente: x9+x8+x3+x1
Quociente:
45 46

Detecção de Erros Detecção de Erros


n Detecção de Erros na Internet n Detecção de Erros na Internet
n TCP e UDP usam o mesmo código de detecção nO receptor calcula a soma binária de todas as
de erros: uma soma de verificação de 16 bits palavras de 16 bits das mensagens recebidas,
n O valor da soma de verificação é colocado no incluindo o cabeçalho e a soma de verificação
cabeçalho das mensagens pelo emissor
n Se este valor for 1111111111111111, a
n A soma de verificação é definida como o
mensagem não foi corrompida e é aceita
complemento 1 (o inverso de cada bit) da
soma binária de todas as palavras de 16 bits n Caso contrário, a mensagem é descartada
da mensagem (completar com 0’s se faltar), pelo receptor
incluindo o cabeçalho TCP/UDP (exceto a
soma de verificação) e o cabeçalho IP
47 48

PDF created with pdfFactory Pro trial version www.pdffactory.com


Detecção de Erros Detecção de Erros
n Correção de Erros n Correção de Erros
nA soma de verificação permite apenas detectar n Caso um erro seja detectado,
detectado, é desejável
as mensagens com erro,
erro, que são descartadas em alguns casos que o emissor retransmita
n Para que seja possível corrigir os erros,
erros, o o quadro de dados com erro
receptor precisa informar ao emissor que as n TCP faz correção;
correção; UDP não
mensagens enviadas foram recebidas n Mensagens de reconhecimento indicam o
(reconhecimento positivo)
positivo) recebimento,
recebimento, mas elas também podem ser
n Reconhecimento pode ser enviado em uma perdidas
mensagem independente ou “de carona”
carona” em n Numeração de quadros evita a duplicação
uma mensagem de dados no fluxo contrário no receptor
49 50

Detecção de Erros Detecção de Erros


n Correção de Erros n Correção de Erros
n Mensagens de Reconhecimento (ACK) n Reconhecimento por Carona
Máquina A t Máquina A t

Da Q :3
Da Q :0

A C á!”
Da Q:0

Da Q:1

SE
SE

do A
3
do A
SE

SE

K:
l
do

Q : :”O
do
K:1

: ”T CK
: ”O CK
K:2
:“O

:“K

SE do

ud :4
i!” :0
AC

0
AC

Da

oO

K?
Máquina B Máquina B

t

51 52

Detecção de Erros Detecção de Erros


n Correção de Erros – Retransmissão n Correção de Erros – Exemplos
n Emissor retransmite o segmento se não n Situação normal
receber o reconhecimento durante um tempo envio timeout
t
Máquina A
máximo de espera (timeout)
timeout)
SE

1
K:

n Valor do timeout é calculado com base no


Q
:0

AC

Máquina B
tempo médio de resposta e no desvio:
desvio:
Timeout = TMédio + 4 TDesvio n Erro: perda do segmento
n A cada confirmação o timeout é recalculado:
recalculado: envio timeout
Máquina A t
(1-α) TMédio + α TAtual
TMédio = (1- [α ≅1/8]
SE

(1- α) TDesvio + α |TMédio-TAtual|


TDesvio = (1-
1
SE

K:
Q

Q
:0

AC

Máquina B
:0

53 54

PDF created with pdfFactory Pro trial version www.pdffactory.com


Detecção de Erros Detecção de Erros
n Correção de Erros – Exemplos n Janela Deslizante
n Perda do reconhecimento n Permite que N quadros sejam enviados antes
envio timeout do reconhecimento
Máquina A t
n Timeout indica quando deve haver

1
SE

SE

K:
K:

retransmissão,
retransmissão, que pode ser integral ou
Q

AC
Q
AC

Máquina B
:0

:0
mensagem duplicada
(descartar e confirmar) seletiva (reenvia todos quadros após o
n Atraso na comunicação timeout ou só o quadro perdido)
perdido)
ACK duplicado
envio timeout (ignorar)
Máquina A t
1
SE K: 1
Q: AC
K:
SE

0
AC
Q

Máquina B
:0

mensagem duplicada
(descartar e confirmar) 55 56

Detecção de Erros
n Janela Deslizante
Tamanho das Mensagens: 4 bytes
Tamanho da Janela do Receptor: 8 bytes
Livres: 8..4......0.................4..0..4..0......................4.....8
8..4......0.................4..0..4..0......................4.....8
Objetos Distribuídos
Usados:0..4......8.................4..8..4..8......................4...
Usados:0..4......8.................4..8..4..8......................4.....0
..0

Timeouts
n Chamada Remota de Procedimento
Máquina A n DCOM
t
n CORBA
n Serviços CORBA
:2 2

:2 6
:1 4

SE
SE

SE

:1 8

SE

Facilidades CORBA
Q:1
Q:1

Q:1

ACK
Q:2

ACK
ACK

n
ACK

CORBA IDL
0

n
Máquina B n Desenvolvimento de Aplicações
57 58

Objetos Distribuídos Objetos Distribuídos


n Orientação a Objetos n Orientação a Objetos (cont.)
n Encapsulamento:
Encapsulamento: n Herança: de interfaces e implementações
n Parte interna (privada) dos objetos n Polimorfismo: a mesma interface pode ter
várias implementações
n Implementaç
Implementação: mémétodos
n Interação entre objetos
n Estado: atributos, variáveis, constantes e
n Troca de mensagens (chamadas de métodos)
tipos
n Mensagens podem ser locais ou remotas
n Parte externa (pública) dos objetos
n Mensagens locais: objetos no mesmo
n Interface: conjunto bem definido de espaço de endereçamento
métodos públicos que podem ser n Mensagens remotas: objetos em
acessados externamente máquinas diferentes à distribuí
distribuídos!
59 60

PDF created with pdfFactory Pro trial version www.pdffactory.com


Objetos Distribuídos Objetos Distribuídos
n Orientação a Objetos (cont.) n Objetos Distribuídos
n Referência do objeto à Ponteiro de memória n Interagem através da rede
n O acesso ao estado do objeto é feito através n Colaboram para atingir um objetivo
dos métodos da interface (única parte visível n Fornecem serviços (métodos) uns aos outros
do objeto) n Apenas a interface do objeto é visível
n Implementação independente da interface
n Referência do objeto possui endereço de rede
n Métodos são acessados por outros objetos

Rede

61 62

Objetos Distribuídos Objetos Distribuídos


n Problemas n Problemas (cont.)
n Como compartilhar referências de objetos? n Comunicação não confiável e não-
não-determinista:
n Como gerenciar o ciclo de vida dos objetos? depende da dinâmica do sistema e da rede
n Como gerenciar o acesso concorrente aos n Custo da comunicação: latência e largura de
objetos? banda são fatores críticos em aplicações de
n Como trabalhar num ambiente heterogêneo? tempo real, multimídia, etc.
n Máquinas podem ter arquiteturas diferentes n Comunicação insegura: sem controle de
n Máquinas podem estar em redes diferentes autorização e sem proteção das mensagens
n Máquinas podem rodar S.O.’s diferentes
n Objetos podem ser implementados em
linguagens diferentes 63 64

Objetos Distribuídos Objetos Distribuídos


n Protocolos de Comunicação (cont.) n Protocolo de Comunicação entre Objetos
n Protocolos de alto nível são necessários para n Trata questões não resolvidas pelo TCP/IP
interação entre objetos distribuídos n Formato comum dos dados
n Escolha natural: usar TCP/IP n Localização de objetos
n Cria conexões entre processos para trocar
trocar n Segurança
mensagens n Oferece ao programador abstrações próprias
n Amplamente disponível, confiável e robusto para aplicações orientadas a objetos,
objetos, como o
n Relativamente simples e eficiente RPC (Remote
(Remote Procedure Call)
Call) para invocar
n Não mascara o uso da rede do programador remotamente os métodos de objetos

65 66

PDF created with pdfFactory Pro trial version www.pdffactory.com


Chamada Remota de Procedimento Chamada Remota de Procedimento

n RPC (Remote Procedure Call ) n RPC – Características


n Segue o modelo Cliente/Servidor n Em geral as requisições são ponto-
ponto-a-ponto e
n Muito usado na interação entre objetos síncronas
n Objeto servidor possui interface com métodos n Dados são tipados
que podem ser chamados remotamente n Parâmetros da requisição
n Objetos clientes usam serviços de servidores
n Retorno do procedimento/método

n Exceções
Cliente Servidor
n Um objeto pode ser cliente e servidor em
… + Soma(int y, int z) {
x = Servidor.Soma(y,z); return(y+z); momentos diferentes
… * }

67 68

Chamada Remota de Procedimento Chamada Remota de Procedimento

n RPC – Sincronismo n RPC – Sincronismo (cont.)


n Chamada síncrona: cliente fica bloqueado n Chamadas assíncronas: cliente continua a
aguardando o término da execução do método execução sem aguardar o retorno do método;
Cliente Chamada Retorno
t permitidas em alguns sistemas
t Cliente Chamada Chamada
Servidor Execução t

n Chamadas semi-
semi-síncronas: sincronização é t
retardada; permitidas em alguns sistemas Servidor Execução Execução
Cliente Chamada Sincronização Retorno
t

t
Servidor Execução Envio da Resposta
69 70

Chamada Remota de Procedimento Chamada Remota de Procedimento

n RPC – Funcionamento n RPC – Funcionamento do Cliente


n Chamada é feita pelo cliente como se o n Acessa objeto local gerado automaticamente
método fosse de um objeto local que implementa interface do servidor remoto
n Comunicação é feita transparentemente por Public class HelloServerStub {
código gerado automaticamente pelo public String hello(String nome)
nome) {
compilador (stub, proxy, skeleton, ...)
...) // Envia pela rede o identificador do método e o valor dos ...
n O código gerado faz a serialização e // ... parâmetro(s)
parâmetro(s) da chamada serializados para o servidor
desserialização de dados usando um formato // Recebe do servidor o valor do retorno da chamada pela ...

padrão,
padrão, que compatibiliza o formato de dados // ... rede,
rede, o deserializa e retorna o valor recebido ao cliente

usado por diferentes máquinas,


máquinas, linguagens e
}
// Outros métodos ...
compiladores
}
71 72

PDF created with pdfFactory Pro trial version www.pdffactory.com


Chamada Remota de Procedimento Chamada Remota de Procedimento

n RPC – Funcionamento do Servidor n RPC – Implementação


nO código gerado automaticamente recebe as n Descrição da interface do objeto remoto
chamadas pela rede e as executa n Especificada na própria linguagem de
while (true) {
programação
// Recebe pela rede o identificador do método chamado ...
// ... pelo cliente e os parâmetros da chamada serializados n Especificada usando uma linguagem de
// Desserializa os parâmetros enviados pelo cliente descrição de interface (IDL)
// Chama o método no objeto servidor e aguarda a execução n Implementações de RPC de diferentes
// Serializa o valor do retorno da chamada e envia ao cliente
}
fabricantes (Sun RPC, DCE RPC, Microsoft
RPC, etc.) são geralmente incompatíveis

73 74

Notificação de Eventos Objetos Distribuídos


n Notificação de Eventos – Características n Solução: criar Middleware para objetos
n Envio de eventos é completamente assíncrono distribuídos
n Produtor não precisa aguardar fim do envio
n Localização transparente dos objetos
n Evento é armazenado no canal de eventos
n Invocação de métodos local e remoto idêntica
n Comunicação pode ser feita com envio de
n Criação de objeto local e remoto idêntica
mensagens multiicast,
multiicast, com vários envios
unicast ou usando um suporte de RPC n Migração de objetos transparente
n Os eventos podem ter tamanho fixo ou n Facilidades para ligação (binding
(binding)) de
variável,
variável, e limitado ou ilimitado interfaces
interfaces dinamicamente
n Eventos podem ser tipados ou não n Diversos serviços de suporte:
suporte:
n Nomes, Transação, Tempo, etc.
75 76

Objetos Distribuídos DCOM


n Principais suportes de Middleware para n Distributed Component Object Model
Objetos Distribuídos n Desenvolvido pela Microsoft
n Java RMI (Remote
(Remote Method Invocation),
Invocation), da n Permite a interação entre objetos/
objetos/
Sun Microsystems componentes escritos em várias linguagens
n DCOM (Distributed
(Distributed Component Object Model),
Model), n Evoluiu de uma versão centralizada – o COM –
da Microsoft Corporation para uma versão distribuída – o DCOM
n CORBA (Common
(Common Object Request Broker n Disponível apenas no sistemas operacional
Architecture),
Architecture), da OMG (Object
(Object Management Microsoft Windows (9x/ME/XP e NT/200x)
Group)
Group)

77 78

PDF created with pdfFactory Pro trial version www.pdffactory.com


DCOM DCOM
Processo A Processo B n Proxy
Objeto Stub
Objeto n Equivalente à stub do RMI e do CORBA
Local
COM n Serializa
dados e envia pela rede
n Recebe resposta do servidor
LRPC
Cliente Proxy do
n Pode ser local (LRPC) ou remota (RPC)
Objeto
Local
n Stub
Máquina Remota
COM n Equivalente ao skeleton do RMI e do CORBA
Proxy do RPC Objeto n Recebe a requisição, desserializa os dados e
Objeto Stub
Remoto Remoto faz a invocação no código servidor
DCOM DCOM
n Retorna o resultado serializado ao cliente
79 80

DCOM DCOM
n Interfaces DCOM n Interfaces DCOM
n Microsoft Interface Definition Language (MIDL)
separa a interface da implementação Implementação
das funções
Tabela de funções
n Interfaces possuem um identificador único da interface

n Interfaces são apenas um grupo de funções


*
Ponteiro do Dados
relacionadas objeto user
*
internos
*
n Interfaces não possuem estado
*
n Um objeto/componente pode suportar várias
Ponteiro para
interfaces as funções

n Todos os objetos implementam a interface


Objeto DCOM

IUnknown
81 82

DCOM CORBA
n Características do DCOM n OMG (Object
(Object Management Group):
Group):
n Não suporta herança múltipla n Formada em 1989
n Reuso de código através de agregação n Objetivos:

n Referências remotas são dinâmicas n Promover a teoria e prática de tecnologias


n Interoperabilidade com outras tecnologias O.O. no desenvolvimento de software
n Criar especificações gerais e proveitosas:
n Existem pontes que permitem a comunicação
entre objetos COM/DCOM e objetos CORBA definir interfaces, e não implementações
n Composta por cerca de 800 empresas
interessadas no desenvolvimento de software
usando tecnologia de objetos distribuídos
83 84

PDF created with pdfFactory Pro trial version www.pdffactory.com


CORBA CORBA
n OMA (Object
(Object Management Architecture)
Architecture) n OMA
n Infra-
Infra-estrutura sobre a qual todas Objetos da Aplicação Facilidades Comuns
especificações da OMG estão baseadas
n Define apenas aspectos arquiteturais
n Permite interoperabilidade entre aplicações
baseadas em objetos em sistemas abertos,
distribuídos e heterogêneos Object Request Broker (ORB)
n Diferentes máquinas
n Diferentes sistemas operacionais
n Diferentes linguagens de programação
n Maior portabilidade e reusabilidade
Objetos de Serviço
n Funcionalidade transparente para a aplicação 85 86

CORBA CORBA
n OMA n CORBA (Common
(Common Object Request Broker
n Objetos da Aplicação Architecture)
Architecture)
n Definidos pelos usuários/programadores n Define concretamente as interfaces do ORB,
n Facilidades Comuns especificado de forma abstrata pela
n Grupos de objetos que fornecem serviços Arquitetura OMA
para determinadas áreas de aplicação n Permite a interação entre objetos distribuídos
n Objetos de Serviço
n Fornece um suporte completo para
n Serviços de propósito geral usados por
desenvolver aplicações distribuídas orientadas
objetos distribuídos
a objetos
n Object Request Broker (ORB)
n Canal de comunicação entre objetos
87 88

CORBA CORBA
n Histórico n CORBA proporciona total transparência
nA versão 1.0 do CORBA foi proposta em 1991 para os Objetos Distribuídos
n CORBA começou a se estabelecer a partir de n Transparência de Linguagem
1993, com o surgimento das primeiras n Usa IDL (Interface
(Interface Definition Language)
Language)
implementações de ORBs comerciais n Transparência de S.O. e Hardware
n CORBA 2.0 foi lançado em 1996
n ORB pode ser implementado em várias
n Interoperabilidade entre implementações plataformas: Windows, UNIX, SO’s
n Versão 3.0 foi lançada em 2002
2002 embarcados e de tempo real, ...
n Acrescentou suporte a componentes (CCM), n Transparência de Localização dos Objetos
invocações assíncronas de métodos (AMI), n Objetos são localizados através de suas
mensagens (CORBA Messaging), ... referências, que são resolvidas pelo ORB
89 90

PDF created with pdfFactory Pro trial version www.pdffactory.com


CORBA CORBA
n IDL (Interface
(Interface Definition Language)
Language) n Compilador IDL
n Usada para descrever as interfaces de objetos n Gera todo o código responsável por:
n Linguagem puramente declarativa, sem n Fazer a comunicação entre objetos
nenhuma estrutura algorítmica n Fazer o mapeamento dos tipos de dados
n Sintaxe e tipos de dados baseados em C/C++ definidos em IDL para a linguagem usada
n Define seus próprios tipos de dados, que são na implementação
mapeados nos tipos de dados de cada n Fazer as conversões de dados necessárias
linguagem de programação suportada na comunicação (serialização
(serialização// marshalling
n Mapeada para diversas linguagens dos dados)
n C, C++, Java, Delphi,
Delphi, COBOL, Python,
Python, ADA,
Smalltalk,
Smalltalk, LISP, ... 91 92

CORBA CORBA
n Interação entre objetos no CORBA n Objetos CORBA possuem:
n Segue o modelo Cliente-
Cliente-Servidor n Atributos: dados encapsulados pelo objeto que podem
ser lidos e ter seu valor modificado pelo cliente
n Cliente: faz requisições em objs.
objs. remotos n Operaç
Operações: serviç
serviços que podem ser requisitados pelos
n Implementação de objeto: implementa os clientes de um objeto, que possuem:
serviços descritos na sua interface n Parâmetros: dados passados pelo cliente para a
implementaç
implementação do objeto ao chamar uma operaç
operação
Cliente Implementação
de Objeto n Resultado: dado retornado pela operaç
operação
n Exceç
Exceções: retornadas quando detectada uma
condiç
condição anormal na execuç
execução de uma operaç
operação
n Contextos: carregam informaç
informação capaz de afetar a
Object Request Broker execuç
execução de uma operaç
operação
93 94

CORBA CORBA
n Arquitetura do ORB n Invocaç
Invocação de Operaç
Operações Remotas
Cliente Implementação n Formas de invocaç
invocação:
ão:
de Objeto
n Está
Estática:
tica: atravé
através do có
código gerado com
base na descriç
descrição da interface do
CORBA
servidor em IDL;
IDL; ou
Skeleton Skeleton Adaptador
Invocação Stubs Interface IDL Dinâmico de Objeto n Dinâmica:
inâmica: atravé
através da interface de
Dinâmica IDL do ORB
invocaç
invocação dinâmica do CORBA
Núcleo do ORB
n O servidor não percebe o tipo de
invocaç
invocação utilizado na requisiç
requisição pelo
Repositório Repositório de
de Interface Implementação
cliente
95 96

PDF created with pdfFactory Pro trial version www.pdffactory.com


CORBA CORBA
n Invocação Estática: Stubs e Skeletons IDL n Stubs IDL
Cliente Implementação n Gerada
eradas pelo compilador IDL com base na
de Objeto
descrição da interface do objeto
n Usadas na invocação estática
CORBA
n O cliente conhece a interface, o método e os
Skeleton Skeleton Adaptador
Invocação Stubs Interface IDL Dinâmico de Objeto parâmetros em tempo de compilação
Dinâmica IDL do ORB
n Skeletons IDL
Núcleo do ORB
n Gerada
eradaspelo compilador IDL
Repositório Repositório de n Interface
estática para os serviços (métodos)
de Interface Implementação remotos executados pelo servidor
97 98

CORBA CORBA
n Invocação Dinâmica n Interface de Invocação Dinâmica (DII)
Implementação n Permite que o cliente construa uma invocação
Cliente
de Objeto em tempo de execução
n Elimina a necessidade das Stubs IDL
CORBA
n Com a DII, novos tipos de objetos podem ser
Skeleton Skeleton Adaptador
Invocação Stubs Interface IDL Dinâmico de Objeto adicionados ao sistema em tempo de execução
Dinâmica IDL do ORB
n O cliente especifica o objeto, o método e os
os
Núcleo do ORB parâmetros com uma seqüência de chamadas
n O servidor continua recebendo as requisições
Repositório Repositório de
de Interface Implementação
através de seu skeleton IDL
99 100

CORBA CORBA
n Repositório de Interface n Passos de uma Invocação Dinâmica:
Obtém o nome da interface do servidor
n Contém informações a respeito das interfaces Objetos
Cliente
dos objetos gerenciados pelo ORB
Servidor

Obtém a descrição dos métodos


n Permite que os serviços oferecidos pelo objeto Cliente Repositório

sejam conhecidos dinamicamente por clientes Cria uma requisição


de interface

n Para usar a DII,


DII, a interface do objeto deve ser Cria uma lista de argumentos
armazenada no repositório de interface Adiciona argumentos à lista

“abc” 999 ‘f’ 3.14 true “olá”


Efetua a requisição (modo síncrono, assíncrono ou semi-síncrono)
101 Obtém o resultado da requisição 102

PDF created with pdfFactory Pro trial version www.pdffactory.com


CORBA CORBA
n Skeletons Dinâmicos n Skeletons Dinâmicos
Cliente Implementação n Substituem os Skeletons IDL na ativação do
de Objeto
objeto
n Usados para manipular invocações de
CORBA operações para as quais o servidor não possui
Skeleton Skeleton Adaptador
Invocação Stubs Interface IDL Dinâmico de Objeto Skeletons IDL
Dinâmica IDL do ORB
n Fornece um mecanismo de ligação (binding
(binding))
Núcleo do ORB em tempo de execução
n Uso: implementar pontes entre ORBs
Repositório Repositório de
de Interface Implementação
103 104

CORBA CORBA
n Adaptador de Objetos n Adaptador de Objetos
Cliente Implementação n Interface entre o suporte e os objetos
de Objeto
servidores
n Transforma um objeto escrito em uma
CORBA linguagem qualquer em um objeto CORBA
Skeleton Skeleton Adaptador
Invocação Stubs Interface IDL Dinâmico de Objeto n Usado para geração e interpretação de
Dinâmica IDL do ORB
referências de objetos, invocação dos
Núcleo do ORB Skeletons,
Skeletons, ativação e desativação de
implementações de objetos, etc.
Repositório Repositório de n Existem vá
vários tipos de adaptador de objeto
de Interface Implementação
105 106

CORBA CORBA
n Núcleo do ORB,
ORB, Interface do ORB
n Portable Object Adapter (POA) e Repositório de Implementação
n Adaptador padrão: torna o servidor portável
Implementação
entre implementações diferentes Cliente
de Objeto
n Abstrai a identidade do objeto da sua
implementação
CORBA
n Implementa políticas de gerenciamento de Skeleton Skeleton Adaptador
threads:
threads: Invocação Stubs Interface IDL Dinâmico de Objeto
Dinâmica IDL do ORB
n uma thread por objeto
n uma thread por requisição
Núcleo do ORB
n grupo (pool
(pool)) de threads
Repositório Repositório de
n etc.
etc. de Interface Implementação
107 108

PDF created with pdfFactory Pro trial version www.pdffactory.com


CORBA CORBA
n Núcleo do ORB n Interceptadores
n Implementa os serviços básicos de Cliente Implementação
comunicação de Objeto

n Utilizado pelos demais componentes do ORB I I I I I


CORBA
n Interface do ORB Skeleton Skeleton Adaptador
n Fornece serviços locais de propósito geral Invocação Stubs Interface IDL Dinâmico de Objeto
Dinâmica IDL do ORB
n Usado tanto pelo cliente quanto pelo servidor
Núcleo do ORB
n Repositório de Implementação
n Contém informações para o ORB localizar e Repositório Repositório de
de Interface Implementação
ativar as implementações de objetos 109 110

CORBA CORBA
n Interceptadores n Interoperabilidade
n Dispositivos interpostos no caminho de n CORBA garante a interoperabilidade entre
invocação,
invocação, entre Cliente e Servidor
objetos que usem diferentes implementações
n Permitem executar código adicional para
gerenciamento/controle/segurança,
gerenciamento/controle/segurança, etc. de ORB
n Há cinco pontos possíveis de interceptação n Solução adotada a partir do CORBA 2.0
n Dois pontos de interceptação no cliente:
cliente: ao n Padronizar o protocolo de comunicação e o
enviar a chamada e ao receber a resposta formato das mensagens trocadas
n Dois pontos de interceptação no servidor:
servidor: ao n Foi definido um protocolo geral, que é
receber a chamada e ao enviar a resposta
especializado para vários ambientes
n Um ponto de interceptação no POA: após a
criação da referência do objeto (IOR) específicos
111 112

CORBA Interoperabilidade
n Interoperabilidade (cont.) n Half bridge
n Protocolo Inter-
Inter-ORB Geral (GIOP) Domínio ORB Domínio ORB

n Especifica um conjunto de mensagens e Half


dados para a comunicação entre ORBs Bridge
IIOP DCE - GIOP
n Especializações do GIOP
n Protocolo Inter-
Inter-ORB para Internet (IIOP):
specifica como mensagens GIOP são IIOP

transmitidas numa rede TCP/IP Half


Bridge
n Protocolos
Protocolos Inter-
Inter-ORB para Ambientes
Ambientes Outros
IIOP
Específicos:
Específicos: permit
permitem
em a interoperabilidade protocolos

do ORB com outros ambientes (ex.: DCE,


DCE,
ATM nativo,
nativo, etc.)
etc.) 113 114

PDF created with pdfFactory Pro trial version www.pdffactory.com


Interoperabilidade Interoperabilidade
n Interoperabilidade entre ORBs usando n Interoperabilidade entre ORBs usando
Bridge request-
request-level Bridge In-
In-Line
Cliente Bridge Servidor Cliente Servidor

DII DSI DII


DII

Serviços do ORB Serviços do ORB


Serviços do ORB Serviços do ORB
Núcleo do ORB X Núcleo do ORB Y
Núcleo do ORB X Núcleo do ORB Y

115 116

CORBA CORBA
n Interoperab
Interoperabilidade entre CORBA e Java RMI n Padrões Relacionados
n Une as vantagens das duas tecnologias n CCM: modelo de componentes CORBA
n Applets,
Applets, Servlets e aplicações Java podem ser n CORBA AV streams:
streams: para fluxos de
clientes CORBA usando RMI/IIOP ou ORB Java áudio/vídeo
n Mapeamentos: IDL à Java e Java à IDL n Minimum CORBA: para sistemas embarcados
n Interoperabilidade entre CORBA e DCOM n RT CORBA: para tempo-
tempo-real
n Permite que objetos DCOM acessem serviços n FT CORBA: para tolerância
tolerância a falhas
oferecidos por objetos CORBA e vice-
vice-versa n CORBASec:
CORBASec: serviço de segurança
n Bridges convertem mensagens entre os
n CORBA Messaging: para troca de mensagens
ambientes, integrando o DCOM a plataformas
n AMI: para invocação assíncrona de métodos
nas quais ele não está disponível
117 n Mapeamento
apeamento de UML para IDL 118

CORBA Serviços CORBA


n Padrões Relacionados (cont.) n Serviços CORBA
n Model-
Model-Driven Architecture (MDA) n Coleção de serviços em nível de sistema
n Unified Modeling Language (UML)
(UML) n Oferecem funcionalidades básicas para
n Common Warehouse Metamodel (CWM)
utilizar e implementar os objetos de
n XML Metadata Interchage (XMI)
aplicações distribuídas
n Em fase de padronização:
n Especificam as interfaces e casos de uso,
n Integração de negócios,
negócios, finanças,
finanças, manufatura,
manufatura, …
deixando a implementação de lado
n Integração com Web Services e .NET
n Suporte para agentes móveis n Estendem ou complementam as

n Suporte para redes sem fio funcionalidades do ORB


n ... e dezenas de outras especificações. 119 n Independentes da aplicação 120

PDF created with pdfFactory Pro trial version www.pdffactory.com


Serviços CORBA Serviços CORBA
Aplicações Distribuídas n Serviço de Nomes (Naming
(Naming Service)
Service)
Serviços CORBA n Define as interfaces necessárias para mapear
Nomeação Transação Consulta Segurança Notificação
um nome com uma referência de objeto
n O objeto que implementa o serviço de nomes
Eventos Concorrência Licenciamento Trader Gerenciamento
mantém a base de dados com o mapeamento
Ciclo de vida Relacionamento Propriedade Coleção ........
entre referências e nomes
n Uma referência para este serviço é obtida
Persistente Externalização Tempo Replicação ........
através do método:
resolve_initial_references(“
resolve_initial_references(“NameService
NameService”)
”)
Object Request Broker (ORB)
nA referência do serviço de nomes é mantida
Sistema Operacional e Serviços de Rede pelo ORB ou em um servidor de diretório, http,
ftp, etc.
121 122

Serviços CORBA Serviços CORBA


n Serviço de Nomes – Conceitos n Serviço de Nomes – Exemplo
n Interface:NamingContext
n Referência: IOR (Interoperable
(Interoperable Object 6) ... Objeto 1) Escrever a IOR
Reference)
Reference) Cliente Servidor 2) Pega a referência
n Name binding:
binding: (nome, referência de objeto) 5) resolve
3) Cria o mapeamento
4) get 3) bind
(Banco, refobj1) 4) Pega a referência
2) get
Naming 5) Consulta o Serviço
Context
(Banco1, refobj1) Servidor Naming
HTTP 1) write Context 6) Executa operações
(Conta, refobj2)

123 124

Serviços CORBA Serviços CORBA


n Serviço de Eventos (Event
(Event Service)
Service) n Serviço de Eventos – Abordagem Push
n Define como objetos podem registrar seu Consumidores
Produtores
interesse dinamicamente em eventos enviados de Eventos de Eventos
por outros objetos
n Tipos de clientes do serviço

n Produtores (ou publishers)


publishers) de eventos Canal de
Eventos
n Consumidores (ou subscribers)
subscribers) de eventos
n Canais de eventos (Event
(Event Channels)
Channels) coletam e
distribuem eventos entre objetos da aplicação
n Três abordagens: Push,
Push, Pull e Mista
125 126

PDF created with pdfFactory Pro trial version www.pdffactory.com


Serviços CORBA Serviços CORBA
n Serviço de Eventos – Abordagem Pull n Serviço de Eventos – Abordagem Mista
Produtores Consumidores Produtores Consumidores
de Eventos de Eventos de Eventos de Eventos

Canal de Canal de
Eventos Eventos

127 128

Serviços CORBA Serviços CORBA


n Serviço de Eventos – Vantagens n Serviço de Notificação (Notification
(Notification Service)
Service)
n Desacoplamento da comunicação n Extensão do serviço de eventos que oferece:
n Um produtor não precisa saber quantos ou n Qualidade de serviço: prioridade, prazo de
quem são os consumidores validade dos eventos, ...
n Um consumidor não precisa saber quantos n Persistência: armazena evento em um BD
ou quem são os produtores n Filtragem de eventos: limita os eventos
n Produtores e consumidores podem se conectar recebidos usando um padrão
facilmente a vários canais de eventos n Eventos estruturados: possuem propriedades
e dados para filtragem
n Suporte a Multicast:
Multicast: reduz tráfego na rede
129 130

Serviços CORBA Serviços CORBA


n Serviço de Ciclo de Vida (Life
(Life Cycle Service)
Service) n Serviço de Ciclo de Vida – Exemplo de uso
n Define interfaces e convenções para criar,
remover, copiar e mover objetos
Factory
n FactoryFinder
find_factories()
Finder
n GenericFactory
LifeCycle
n LifeCycleObject
Cliente
copy/move/remove() Object

n Estas operações podem ser realizadas Generic


remotamente pelos objetos da aplicação create_object() Factory

131 132

PDF created with pdfFactory Pro trial version www.pdffactory.com


Serviços CORBA Serviços CORBA
n Serviço de Persistência n Serviço de Persistência – Exemplo de PSDL
(Persistent State Service)
Service) abstract storagetype Person {
n Substituio antigo Persistent Object Service readonly state long social_security_number;
state string full_name;
n Este serviço é acessado através do método state string phone_number;
resolve_initial_references(“PSS”)
resolve_initial_references(“PSS”) };
abstract storagehome PersonHome of Person {
n Define as interface Storage Object,
Object, Storage Person create(in long ssn, in string full_name, in
Home e Datastore string phone);
};
n Define um superset da IDL: a Persistent State catalog People {
Definition Language (PSDL) provides PersonHome person_home;
};

133 134

Serviços CORBA Serviços CORBA


n Serviço de Transação (Transaction
(Transaction Service)
Service) n Serviço de Transação – Efetivação
n Propriedades garantidas pelo serviço: n Efetivação da transação é feita usando o
n Atomicidade: um conjunto de computações protocolo 2PC (two
(two--phase-
phase-commit )
é integralmente realizado ou não realizado n Envio de uma mensagem “prepare
“prepare””
n Consistência: uma transação mantém a n Votos das partes
consistência de estado dos objetos n Decisão sobre o resultado (um voto
n Isolamento: resultados parciais de uma negativo aborta)
transação são invisíveis para transações n Envio de mensagens de conclusão ou o
concorrentes cancelamento
n Durabilidade: resultados de uma transação
são persistentes
135 136

Serviços CORBA Serviços CORBA


n Serviço de Transação – Utilização n Serviço de Segurança (Security
(Security Service)
Service)
nA interface TransactionCurrent oferece as n Fornece serviços de segurança para objetos
operações para o controle de transações de aplicações CORBA
n Define a infraestrutura para garantir
n Método begin()
begin() indica o início da transação
n Identificação e Autenticação
n Método commit()
commit() para tentar concluir
n Autorização e Controle de Acesso
(pode ocorrer uma exceção de sistema)
n Auditoria
n Método rollback()
rollback() para abortar
n Segurança na Comunicação
n Este serviço é acessado através do método
resolve_initial_references(“ n Não Repudiação
resolve_initial_references(“Transaction
Transaction
Current”)
Current”) n Independente da Tecnologia de Segurança

137
usada: SSL, Kerberos, CSI-
CSI-ECMA, etc. 138

PDF created with pdfFactory Pro trial version www.pdffactory.com


Serviços CORBA Serviços CORBA
n Serviço de Segurança – Arquitetura n Serviço de Tempo (Time
(Time Service)
Service)
n Usado para ordenar, gerar ou computar
Cliente Servidor
intervalo entre eventos (temporização e
Requisição Requisição
alarmes) no sistema
n Baseado no padrão UTC (Universal
(Universal
Serviços
Serviços
de
Serviços Time Coordinated):
Coordinated):
do ORB
Segurança
do ORB
fornece uma estimativa Time
do erro de transmissão Service
ORB Core n Pode ser usado para
sincronização de relógios
em ambiente heterogêneo Clientes do Serviço
Tecnologia de segurança
Comunicação e proteção básica
139 140

Serviços CORBA Serviços CORBA


Cliente
n Serviço de Consulta n Real-
Real-Time CORBA
(Query Service)
Service) n Permite que o CORBA seja utilizado para
n Define a interface entre Query construir sistemas com requisitos temporais
BD (relacional, OO ou outros)
Evaluator
n Depende dos mecanismos de tempo real do
e objetos CORBA sistema operacional, do suporte de
n Define operações de Query Query comunicação e da aplicação para que haja
Objeto
consulta para objetos: Evaluator Evaluator
determinismo fim-
fim-a-fim
interface QueryEvaluator n São feitas modificações no suporte de
n Baseado na SQL3 e na OQL Sistema comunicação do CORBA de modo a atender os
Objeto
(Object Query Language)
Language)
Nativo
requisitos de tempo real
141 142

Serviços CORBA Serviços CORBA


n Características do RT-
RT-CORBA n O RT-
RT-CORBA fornece ainda:
n Prioridades globais do RT-
RT-CORBA são n Um Serviço de Escalonamento, que provê
associadas a chamadas remotas de objetos suporte para o escalonamento estático (off
(off--
n Conjuntos (pools
(pools)) de threads podem ser line)
line) ou dinâmico de operações tempo real
criados para executar as chamadas remotas n O RT-
RT-POA, que adiciona funções de tempo
de objetos real ao POA
n Podem ser criadas conexões privadas n Um mapeador de prioridades, que converte
associadas a prioridades para comunicação prioridades do RT-
RT-CORBA em prioridades do
entre objetos sistema operacional (nativas) e vice-
vice-versa
n Um gerenciador do RT-
RT-CORBA
143 144

PDF created with pdfFactory Pro trial version www.pdffactory.com


Serviços CORBA Serviços CORBA
n Fault-
Fault-Tolerant CORBA n Serviços do FT-
FT-CORBA
n Serviço de Gerenciamento de Replicação (SGR):
n Usado no desenvolvimento de aplicações
n Serviço de Gerenciamento de Grupo (SGG)
confiáveis n Serviço de Gerenciamento de Propriedades (SGP)
n Permitir que serviços sejam oferecidos n Serviço de Fábrica de Objetos (SFO)
continuamente mesmo em presença de n Serviço de Gerenciamento de Falhas (SGF):
(SGF):
falhas parciais no sistema n Serviço de Detecção de Falhas (SDF)

n Técnicas de replicação n Serviço de Notificação de Falhas (SNF)


n Serviço de Análise de Falhas (SAF)
n Faz várias cópias (réplicas) de um servidor
n Serviço de Logging e Recuperação (SLR):
n Em caso de falha de um servidor, existem n Registro das requisições
réplicas para atender o cliente n Atualização de estado
145 146

Serviços CORBA
Facilidades CORBA
Gerenciamento de

Admin.
Replicação Notificador
de Falha
DF
Host
n Facilidades CORBA
n Coleções de serviços de propósito geral
geral
Propriedades Grupos

utilizados por aplicações distribuídas


Generic Factory Generic Factory n Facilidades Horizontais
DF DF n São utilizadas por várias aplicações,
Cliente Servidor Servidor independente da área da aplicação
n São divididas segundo quatro categorias
Logging Recuperação Logging Recuperação n Interface do usuário
n Gerenciamento de informação

Sistema de Comunicação de Grupo n Gerenciamento de sistema

147
n Gerenciamento de tarefa 148

Facilidades CORBA
Facilidades CORBA
Aplicações Distribuídas
n Facilidades Verticais
Object Request Broker (ORB)
n São utilizadas em áreas de aplicação
Facilidades CORBA Horizontais
Gerenciamento Gerenciamento de sistema Gerenciamento
específicas
Interface do
usuário
Composição da
de informação
Modelamento Consistência Coleção
de tarefa
n Exemplos:
Agentes

n Processamento de Imagens
apresentação
Armazenamento Customização Política Automação
Gerenciamento e recuperação Coleção de
n Supervias de informação
Lançar Regras
de desktop dados processos
Troca de
Gerenciamento composição Eventos Workflow
n Manufatura integrada por computador
Qualidade de
de rendering Troca de dados serviço
Instância

n Simulação distribuída
Scripting Troca de Escalonamento
informação Instrumentação
Suporte ao Segurança
n Contabilidade
Representação
usuário e encodificação

n ...
Operações de
tempo 149 150

PDF created with pdfFactory Pro trial version www.pdffactory.com


Facilidades CORBA CORBA IDL

Aplicações Distribuídas n IDL (Linguagem


(Linguagem de Definição de Interface)
nterface)
n Usada para descrever as interfaces dos
dos
Object Request Broker (ORB)
objetos CORBA
Facilidades CORBA Verticais n É uma linguagem declarativa, sem estruturas
Contabilidade Medicina Mapeamento Segurança Tempo-real algorítmicas,
algorítmicas, que permite somente descrever
tipos de dados,
dados, constantes e operações de um
Produção e Desenvolvi-
Telecomu-
nicações
Simulação
Distribuída exploração de
Internacio-
nalização mento de objeto CORBA
n Uma interface descrita em IDL (arquivo .idl)
idl)
óleo e gás Aplicações

Manufatura Supervia da
informação
Meta-objetos Replicação ........
especifica as operações providas pelo objeto e
os parâmetros de cada
cada operação
151 152

CORBA IDL CORBA IDL


n IDL (cont.) n Tokens
n De posse da IDL de um objeto,
objeto, o cliente n Literais:1, 2.37, ‘a’, “string”, ...
possui toda a informação necessária para n Operadores: + , - , * , = , ...
utilizar os serviços deste objeto n Separadores
n Interfaces definidas em IDL podem ser
n Espaços
acessadas através de stubs
stubs ou da interface de
n Tabulações
invocação dinâmica (DII)
n Quebras de linha
n As regras léléxicas da IDL são iguais às do C++
n Comentários:
Comentários: // ou /* */
n As regras gramaticais da IDL são um
subconjunto das regras do C++, acrescidas de n Palavras-
Palavras-chave
construç
construções para a declaraç
declaração de operaç
operações n Identificadores
153 154

CORBA IDL CORBA IDL


Escopo
module
Tipos Básicos
any
Tipos Construí
enum
Construídos n Identificadores
interface boolean sequence n São seqü
seqüências de caracteres do alfabeto,
char struct
abstract
local double union dígitos e underscores ‘_’
Definiç
Definição de Tipos fixed switch n O primeiro caractere deve ser uma letra
const float case
exception long default n Todos os caracteres são significativos
Object Dados e Operaç
Operações
n Um identificador deve ser escrito exatamente
native
typedef octet attribute
valuetype short readonly como declarado, atentando para a diferenç
diferença
string oneway
supports unsigned in entre letra maiú
maiúsculas e minú
minúsculas
truncatable ValueBase
factory
out n Identificadores diferenciados apenas pelo
void inout
custom wchar context case,
case, como MyIdent e myident,
myident, causam
private
public
wstring raises erros de compilaç
compilação
155 156

PDF created with pdfFactory Pro trial version www.pdffactory.com


CORBA IDL CORBA IDL
n Elementos de uma especificação IDL n Módulos
n Módulos n Declaração de módulo:
n Interfaces module ident {
n Tipos de dados // lista de definições
n Constantes };
n Exceções n Pode conter declarações de tipos, constantes,
n Atributos exceções, interfaces ou outros módulos
n Operações n O operador de escopo ‘::’ pode ser usado para
n Parâmetros se referir a elementos com um mesmo nome
n Contextos em módulos diferentes
157 158

CORBA IDL CORBA IDL


n Interface n Interfaces Abstratas
n Declaração de interface: n Não podem ser instanciadas,
instanciadas, servindo
interface ident : interfaces_herdadas { somente como base para outras interfaces
// declarações de tipos
tipos abstract interface ident { ... };
// declarações de constantes n Interfaces Locais
// declarações de exceções n Não são acessíveis pela rede,
rede, recebendo
// declarações de atributos somente chamadas locais
// declarações de operações local interface ident { ... };
};
n Pode conter declarações de tipos
tipos, constantes,
constantes,
exceções, atributos e operações 159 160

CORBA IDL CORBA IDL


n Herança de Interfaces n Herança de Interfaces (cont.)
n Os elementos herdados por uma interface n Uma interface pode herdar bases
podem ser acessados como se fossem indiretamente,
indiretamente, pois interfaces herdadas
elementos declarados explicitamente,
explicitamente, a não possuem suas pró próprias relaç
relações de heranç
herança
ser que o identificador seja redefinido ou n Uma interface não pode aparecer mais de
usados em mais de uma interface base uma vez na declaraç
declaração de heranç
herança de uma
n O operador de escopo ‘::’
::’ deve ser utilizado outra interface, mas múltiplas ocorrências
para referir-
referir-se a elementos das interfaces como base indireta
indireta são aceitas
base que foram redefinidos ou que são usados
em mais de uma interface base
161 162

PDF created with pdfFactory Pro trial version www.pdffactory.com


CORBA IDL CORBA IDL
n Exemplo: Servidor de um Banco n Tipos e Constantes
module banco { n Novos nomes podem ser associados a tipos já
// ... existentes com a palavra-
palavra-chave typedef
interface auto_atendimento { typedef tipo ident;
ident;
// ... n Objetos descritos como valuetype podem ser

}; enviados como parâmetros de chamadas


interface caixa_eletronico:
caixa_eletronico: auto_atendimento { valuetype ident { ... };
// ...
};
};
163 164

CORBA IDL CORBA IDL


n Constantes n Tipos Básicos
n Definidas com a seguinte sintaxe: n boolean:
oolean: tipo booleano,
booleano, valor TRUE ou FALSE
const tipo ident = valor; n char:
char: caractere de 8 bits, padrão ISO Latin-
Latin-1
n Operações aritméticas (+, -, *, /, ...) e hort: inteiro curto com sinal; -215 a 215-1
n short:
binárias (|, &, <<, ...) entre literais e ong: inteiro longo com sinal; -231 a 231-1
n long:
constantes podem ser usadas para definir o n unsigned short: inteiro curto sem sinal; 0 a 216-1
short: inteiro
valor de uma constante long: inteiro longo sem sinal; 0 a 232-1
n unsigned long:
n float:
loat: real curto, padrão IEEE 754/1985
n double:
ouble: real longo, padrão IEEE 754/1985
n octet:
ctet: 1 byte, nunca convertido na transmissão
transmissão
165 n any:
ny: corresponde a qualquer tipo IDL 166

CORBA IDL CORBA IDL


n Tipos Básicos (cont.) n Arrays
n Object:
Object: corresponde a um objeto CORBA n Array de tamanho fixo:
fixo:
long: inteiro de 64 bits; –263 a 263-1
n long long: tipo ident[tam
ident[tamanho
anho]];
n unsigned long long:
long: inteiro de 64 bits sem n Array de tamanho variável sem limite de
sinal; 0 a 264-1 tamanho (tamanho efetivo definido em tempo
n long double:
double: real duplo longo padrão IEEE; de execução)
execução)
base com sinal de 64 bits e 15 bits de expoente sequence <tipo> ident;
ident;
n wchar:
wchar: caractere de 2 bytes, para suportar n Array de tamanho variável com tamanho
diversos alfabetos
máximo:
máximo:
n fixed<n,
fixed<n,d>: real de precisão fixa;
fixa; n algarismos sequence <tipo,tamanho
<tipo,tamanho> > ident;
ident;
significativos e d casas decimais
167 168

PDF created with pdfFactory Pro trial version www.pdffactory.com


CORBA IDL CORBA IDL
n Strings n Exemplo: Servidor de um Banco
n Seqüência de caracteres sem limite de module banco {
tamanho:
tamanho: typedef unsigned long conta;
conta;
string ident;
ident; // seqüência de char’s typedef double valor;
wstring ident;
ident; // seqüência de wchar’s const string nome_banco = “UFSC”;
n Seqüência de caracteres com tamanho const string moeda = "R$";
máximo:
máximo: // ...
string <tamanho
<tamanho> > ident;
ident; };
wstring <tamanho>
tamanho> ident;
ident;

169 170

CORBA IDL CORBA IDL


n Tipos Complexos n Tipos Complexos (cont.)
n Estrutura de dados (registro) n União discriminada
n Tipo composto por vários campos n Tipo composto com seleção de campo por
struct ident { cláusula switch/
switch/case;
case; o seletor deve ser tipo
// lista de campos (tipos IDL) IDL inteiro, char,
char, boolean ou enum
}; union ident switch (seletor
(seletor){
){
n Lista enumerada
case valor: tipo ident;
ident;
// mais campos
n Lista com valores de um tipo
default:
default: tipo ident;
ident;
enum ident { /*lista de valores*/ }; };
171 172

CORBA IDL A Linguagem IDL


n Exemplo: Servidor de um Banco n Exceções
module banco { n São estruturas de dados retornadas por uma
// ... operação para indicar que uma situação
enum aplicacao { poupanca,
poupanca, CDB, renda_fixa }; anormal ocorreu durante sua execução
struct transacao { n Cada exceção possui um identificador e uma
unsigned long data; // formato ddmmyyyy lista de membros que informam as
string<12> descricao;
descricao;
valor quantia; condições nas quais a exceção ocorreu
quantia;
}; exception ident {
sequence < transacao > transacoes;
transacoes; // lista de membros
// ... };
}; n Exceções padrão do CORBA: CONCLUDED_YES,
CONCLUDED_YES,
CONCLUDED_NO,
CONCLUDED_NO, CONCLUDED_MAYBE
173 174

PDF created with pdfFactory Pro trial version www.pdffactory.com


CORBA IDL CORBA IDL
n Atributos n Exemplo: Servidor de um Banco
n São dados de um objeto que podem ter seu module banco {
valor lido e/ou modificado remotamente // ...
exception conta_invalida { conta c; };
n Declarados usando a sintaxe: exception saldo_insuficiente { valor saldo;
saldo; };
attribute tipo ident;
ident;
n Caso a palavra-
palavra-chave readonly seja utilizada, interface auto_atendimento {
o valor do atributo pode ser somente lido readonly attribute string boas_vindas;
boas_vindas;
readonly attribute tipo ident;
ident; // ...
};
// ...
};
175 176

CORBA IDL A Linguagem IDL


n Operações n Contextos
n Declaradas em IDL na forma: n São strings que, ao serem passadas para o
tipo ident (/* lista de parâmetros */) servidor em uma chamada, podem interferir
[ raises ( /* lista de exceções */ ) de alguma forma na execução da operação
[ context ( /* lista de contextos */ ) ] ;
n Um asterisco, ao aparecer como o último
n Parâmetros
caractere de um contexto, representa
n Seguem a forma: {in|out|inout}
in|out|inout} tipo ident
qualquer seqüência de zero ou mais
n in:
in: parâmetro de entrada caracteres
n out:
out: parâmetro de saída
n inout:
inout: parâmetro de entrada e saída
n Separados por vírgulas
177 178

CORBA IDL CORBA IDL


n Operações One Way (assíncronas) n Exemplo: Servidor de um Banco
n Declaradas em IDL na forma: interface auto_atendimento {
oneway void ident (/* lista de parâmetros */); readonly attribute string boas_vindas;
boas_vindas;
valor saldo ( in conta c ) raises (conta_invalida
(conta_invalida);
);
n Uma operação oneway é assíncrona, ou seja, void extrato ( in conta c, out transacoes t,
o cliente não aguarda seu término out valor saldo ) raises (conta_invalida
(conta_invalida);
);
n Operações one way não possuem retorno (o
void tranferencia ( in conta origem,
origem,
in conta destino,
destino, in valor v )
tipo retornado é sempre void)
void) e as exceções raises (conta_invalida
(conta_invalida,, saldo_insuficiente);
saldo_insuficiente);
possíveis são somente as padrão void investimento ( in conta c,
in aplicacao apl,
apl, in valor v )
raises (conta_invalida
(conta_invalida,, saldo_insuficiente);
saldo_insuficiente);
179
}; 180

PDF created with pdfFactory Pro trial version www.pdffactory.com


CORBA IDL CORBA IDL
n Exemplo: Servidor de um Banco n Mapeamento IDL para C++
interface caixa_eletronico : auto_atendimento { n Definido no documento OMG/99-
OMG/99-07-07-41,
void saque ( in conta c, in valor v ) disponível em http://www.omg.org
raises ( conta_invalida,
conta_invalida, saldo_insuficiente ); n O mapeamento define a forma como são
}; representados em C++ os tipos, interfaces,
atributos e operações definidos em IDL

181 182

CORBA IDL CORBA IDL


Tipo IDL Equivalente em C++
n Mapeamento de Módulos IDL para C++ boolean CORBA::Boolean
CORBA::Boolean
char CORBA::Char
CORBA::Char
n Módulos são mapeados em namespaces wchar CORBA::WChar
CORBA::WChar
short CORBA::Short
n Seo compilador não suportar namespaces,
namespaces, o long CORBA::Long
CORBA::Long
módulo é mapeado como uma classe long long CORBA::LongLong
CORBA::LongLong
unsigned short CORBA::Ushort
CORBA::Ushort
n Mapeamento de Interfaces IDL para C++ unsigned long CORBA::Ulong
CORBA::Ulong
unsigned long CORBA::ULongLong
CORBA::ULongLong
n Interfaces são mapeadas como classes C++ long
f loat CORBA::Float
CORBA::Float
n Interface_var:
Interface_var: libera a memória double CORBA::Double
CORBA::Double
long double CORBA::LongDouble
CORBA::LongDouble
automaticamente quando sai do escopo octet CORBA::Octet
CORBA::Octet
n Interface_ptr:
Interface_ptr: não a libera memória any CORBA::Any
CORBA::Any (classe)
fixed CORBA::Fixed
CORBA::Fixed (classe)
183
Object CORBA::Object
CORBA::Object (classe) 184

CORBA IDL CORBA IDL


n Mapeamento de Tipos IDL para C++ n Mapeamento de Atributos IDL para C++
n São idênticos em C++ e IDL, e portanto não n Um método com o mesmo nome do atributo
precisam de mapeamento: retorna o seu valor
n Constantes
n Se o atributo não for somente de leitura, um
n Estruturas de dados método de mesmo nome permite modificar o
n Listas enumeradas seu valor
n Arrays
n Mapeamento de Exceções IDL para C++
n Unions IDL são mapeadas como classes C++,
C++,
n São mapeadas como classes C++
pois
pois o tipo union de C++
C++ não possui seletor
n Seqüências são mapeadas em classes C++
n Strings são mapeadas como char * e Wchar *
185 186

PDF created with pdfFactory Pro trial version www.pdffactory.com


CORBA IDL CORBA IDL
n Mapeamento de Operações IDL para C++
n Operações de interfaces IDL são mapeadas
como métodos da classe C++ correspondente
n Contextos são mapeados como um parâmetro
implícito no final da lista de parâmetros
(classe Context_ptr)
n Se o compilador não suportar exceções, outro
parâmetro implícito é criado ao final da lista
de parâmetros (classe Exception)
n Os parâmetros implícitos têm valores default
nulos, permitindo que a operação seja
chamada sem especificar estes parâmetros 187 188

CORBA IDL CORBA IDL


n Mapeamento IDL para Java n Mapeamento de IDL para Java
n Definido pelo documento formal/01-
formal/01-06-
06-06, n Módulos são mapeados em packages Java
disponível em http://www.omg.org/ n Interfaces, Exceções e Arrays e Strings são
n O mapeamento define a forma como são idênticos em Java
representados em Java os tipos, interfaces, n Sequências são mapeadas como Arrays Java
atributos e operações definidos em IDL n Constantes são mapeadas para atributos
estáticos
n Estruturas de dados, Unions e Enums são
mapeadas como classes Java

189 190

CORBA IDL CORBA IDL


Tipo IDL Equivalente em Java
boolean boolean n Mapeamento de Atributos IDL para Java
char char
wchar char n É criado um método com o nome do atributo
short short
long int n Se o atributo não for readonly,
readonly, um método de
long long long mesmo nome permite modificar o seu valor
unsigned short short
unsigned long int n Mapeamento de Operações IDL para Java
unsigned long long long n São criados métodos na interface
float float
double double correspondente, com os mesmos parâmetros
long double (não disponível) e exceções
octet byte
any CORBA.Any
CORBA.Any n Contexto inserido no final da lista de
fixed Math.
Math.BigDecimal parâmetros
Object CORBA.Object
CORBA.Object 191 192

PDF created with pdfFactory Pro trial version www.pdffactory.com


Desenvolvimento de Aplicações Desenvolvimento de Aplicações
n Passos para n Passos para Especificação
do Cliente
Arquivo
IDL
Especificação
do Servidor
desenvolver um desenvolver um
servidor CORBA cliente CORBA Compilador
IDL
n Definir a interface IDL n Compilar a IDL do
do servidor servidor para gerar a Código Stubs Skeletons Código
n Compilar a IDL para stub do Cliente IDL IDL do Servidor

gerar o skeleton n Implementar o código


do cliente
Compilador da Compilador da
n Implementar os Linguagem do Cliente Linguagem do Servidor
métodos do servidor n Compilar
Executável Executável
n Compilar n Executar do Cliente do Servidor
Executar
01010101010101 01010101010101
n 01010101010101 01010101010101
01010101010101 01010101010101
01010101010101 01010101010101
193 194

Desenvolvimento de Aplicações Desenvolvimento de Aplicações


n O código pode ser implementado em n Implementação do Servidor
qualquer linguagem mapeada para IDL nO servidor deve iniciar o ORB e o POA, e
public class AutoAtendimentoImpl
extends AutoAtendimentoPOA {
Java disponibilizar sua referência para os clientes
n Referências podem ser disponibilizadas
public String boas_vindas() {
return “Bem-vindo ao Banco”; através do serviço de nomes, impressas na
}
... tela ou escritas em um arquivo acessado pelos
};
clientes usando o sistema de arquivos
class auto_atendimentoImpl:
auto_atendimentoPOA { ... };
C++
distribuído, um servidor HTTP ou FTP
char* banco_auto_atendimentoImpl::boas_vindas() n Feito isso, o servidor deve ficar ouvindo
throws (CORBA::SystemException) {
return CORBA::string_dup(“Bem-vindo ao Banco”);
requisições e as executando
}
195 196

Desenvolvimento de Aplicações Desenvolvimento de Aplicações


n Implementação do Servidor // Ativa o POA
package banco; POA rootpoa = POAHelper.
POAHelper.narrow(
narrow(
import org.omg
org.omg.*;
.*; orb.
orb.resolve_initial_references("
resolve_initial_references("RootPOA
RootPOA"));
"));
import java.
java.io.*;
io.*; rootpoa.
rootpoa.the_POAManager().
the_POAManager().activate
activate();
();
// Pega a referência do servidor
public class servidor
org.omg
org.omg.CORBA.
.CORBA.Object
Object ref =
{
rootpoa.
rootpoa.servant_to_reference(
servant_to_reference(impl);
impl);
public static void main(String
main(String args[])
args[]) { auto_atendimento href =
try{
try{ auto_atendimentoHelper.
auto_atendimentoHelper.narrow(
narrow(ref);
ref);
// Cria e inicializa o ORB
// Obtém uma referência para o serv. de nomes
ORB orb = ORB.init
ORB.init((args,
args, null);
null); org.omg.CORBA.Object objRef =
// Cria a implementação e registra no
no ORB orb.
orb.resolve_initial_references("
resolve_initial_references("NameService
NameService");
");
NamingContextExt ncRef =
auto_atendimentoImpl impl = new
auto_atendimentoImpl(); NamingContextExtHelper.
NamingContextExtHelper.narrow(
narrow(objRef);
objRef);
auto_atendimentoImpl(); 197 198

PDF created with pdfFactory Pro trial version www.pdffactory.com


Desenvolvimento de Aplicações Desenvolvimento de Aplicações
// Registra o servidor no servico de nomes package banco;
String name = "AutoAtendimento
"AutoAtendimento"; ";
import org.omg
org.omg.*;
.*;
NameComponent path[]
path[] = ncRef.
ncRef.to_name(
to_name( name );
ncRef.
ncRef.rebind(
rebind(path,
path, href);
href); public class auto_atendimentoImpl
extends auto_atendimentoPOA {
System.out.
System.out.println
println("Servidor
("Servidor em execução");
public String boas_vindas () {
// Aguarda chamadas dos clientes return "Bem-
"Bem-vindo ao banco " + banco.nome_banco
banco.nome_banco..value;
value;
orb.
orb.run();
run(); }
} catch (Exception
(Exception e) { public double saldo (int c) throws conta_invalida {
e.printStackTrace
e.printStackTrace();
(); return CadastroBanco.
CadastroBanco.getConta(c).
getConta(c).getSaldo
getSaldo();
();
} }
}
} // ...
}
199 200

Desenvolvimento de Aplicações Desenvolvimento de Aplicações


n Implementação do Cliente n Implementação do Cliente
import banco.*;
n Um cliente deve sempre iniciar o ORB e obter import org.omg
org.omg.*;
.*;
uma referência para o objeto servidor import java.
java.io.*;
io.*;
n Referências podem ser obtidas através do public class cliente {
serviço de nomes, da linha de comando ou public static void main(String
main(String args[])
args[]) {
lendo um arquivo que contenha a referência try {
// Cria e inicializa o ORB
n De posse da referência, o cliente pode chamar ORB orb = ORB.init
ORB.init((args,
args, null);
null);
os métodos implementados pelo servidor // Obtem referencia para o servico de nomes
org.omg
org.omg.CORBA.
.CORBA.Object
Object objRef =
orb.
orb.resolve_initial_references("
resolve_initial_references("NameService
NameService");
");
NamingContextExt ncRef =
201
NamingContextExtHelper.
NamingContextExtHelper.narrow(
narrow(objRef);
objRef); 202

Desenvolvimento de Aplicações
// Imprime mensagem de boas-boas-vindas
System.out.
System.out.println
println((server.
server.boas_vindas());
boas_vindas());
// Obtem o numero da conta
System.out.
System.out.print
print("Entre
("Entre o número da sua conta: ");
String conta = new BufferedReader(
BufferedReader(new
InputStreamReader(
InputStreamReader(System.in)).
System.in)).readLine
readLine();
();
// Imprime o saldo atual
System.out.
System.out.println
println("Seu
("Seu saldo é de R$" +
server.saldo(
server.saldo(Integer
Integer..parseInt(conta)));
parseInt(conta)));
} catch (Exception
(Exception e) {
e.printStackTrace
e.printStackTrace((System.out);
System.out);
}
}
} 203

PDF created with pdfFactory Pro trial version www.pdffactory.com