1) A aula apresenta conceitos básicos de objetos distribuídos, incluindo chamada remota de métodos e arquiteturas como RPC, CORBA e Java RMI.
2) Os tópicos abordados incluem objetos distribuídos, serialização e diferentes tipos de objetos como objetos de tempo de compilação e execução.
3) A chamada remota de métodos permite que um processo invoque um método em outro processo, mesmo em outro host, usando stubs para esconder a comunicação.
geografia 7 ano - relevo, altitude, topos do mundo
Objetos Distribuídos Conceitos
1. Universidade Presbiteriana Mackenzie
Aula
3:
Conceitos
Básicos
de
Objetos
Distribuídos
Prof. Ms. Daniel Arndt Alves
Faculdade
de
Computação
e
Informá@ca
Computação e Informática
Faculdade de
Técnicas
de
Programação
Aplicada
III
Conceitos
Básicos
de
Objetos
Distribuídos
1
Daniel
Arndt
Alves
2. Tópicos
da
Aula
• Chamada
Remota
de
Métodos
• Arquiteturas
para
Chamadas
Remotas
– Remote
Procedure
Calls
– CORBA
– Java
RMI
Conceitos
Básicos
de
Objetos
Distribuídos
2
Daniel
Arndt
Alves
3. Tópicos
da
Aula
• Objetos
Distribuídos
– Objetos
de
Tempo
de
Compilação
– Objetos
de
Tempo
de
Execução
– Objetos
Persistentes
– Objetos
Transientes
• Serialização
Conceitos
Básicos
de
Objetos
Distribuídos
3
Daniel
Arndt
Alves
4. Introdução
• Aplicações
distribuídas
podem
ser
desenvolvidas
empregando
uma
arquitetura
de
objetos
distribuídos;
• As
aplicações
orientadas
a
objetos
lidam
diretamente
com
referências
a
objetos
em
processos
remotos.
Daniel
Arndt
Alves
Conceitos
Básicos
de
Objetos
Distribuídos
4
5. Chamada
Remota
de
Métodos
Daniel
Arndt
Alves
Conceitos
Básicos
de
Objetos
Distribuídos
5
class ... {
String hello(){
...
}
}
PROCESSO
Chamada
remota
Cliente
Servidor
remoto
6. Arquiteturas
para
chamada
remota
• Existem
algumas
arquiteturas
desUnadas
para
chamada
remota
de
métodos:
– RPC
(Remote
Procedure
Call)
– CORBA
(Common
Object
Request
Broker
Architeture)
– JAVA
RMI
(Remote
Method
InvocaUon
)
Daniel
Arndt
Alves
Conceitos
Básicos
de
Objetos
Distribuídos
6
7. RPC
(Remote
Procedure
Call)
• Consiste
em
um
protocolo
para
chamadas
remotas
a
procedimentos
como
se
fossem
locais.
• Torna
mais
fácil
a
implementação
de
aplicações
distribuídas,
pois
abstrai
o
código
referente
à
parte
de
comunicação.
Daniel
Arndt
Alves
Conceitos
Básicos
de
Objetos
Distribuídos
7
8. RPC
(Remote
Procedure
Call)
• Serviço
muito
uUlizado
em
sistemas
operacionais
distribuídos
para
chamada
remota
de
procedimentos.
• Estes
procedimentos,
normalmente,
envolvem
serviços
disponibilizados
em
redes,
tais
como
acesso
a
DNS,
gerenciamento
remoto,
etc.
Daniel
Arndt
Alves
Conceitos
Básicos
de
Objetos
Distribuídos
8
9. RPC
(Remote
Procedure
Call)
• Permite
que
um
processo
invoque
um
método
de
outro
processo
que
esteja
em
seu
espaço
de
endereçamento,
mesmo
que
este
esteja
em
outro
host
na
rede.
• Torna
mais
fácil
a
implementação
de
aplicações
distribuídas,
pois
abstrai
o
código
referente
à
parte
de
comunicação.
Daniel
Arndt
Alves
Conceitos
Básicos
de
Objetos
Distribuídos
9
10. RPC
(Remote
Procedure
Call)
• RPC
não
precisa,
necessariamente,
envolver
estruturação
em
termos
de
objetos.
• Como
em
CORBA
e
RMI,
existe
a
necessidade
de
se
trabalhar
com
interfaces
remotas
denominadas
STUBS.
– Tanto
o
cliente
quanto
o
servidor
necessitam
de
um
Run7me
para
processamento
da
RPC.
Daniel
Arndt
Alves
Conceitos
Básicos
de
Objetos
Distribuídos
10
11. RPC
(Remote
Procedure
Call)
• STUBS
– São
uUlizados
para
a
comunicação
remota;
– Funciona
semelhante
a
um
proxy
para
o
objeto
remoto;
– Quando
o
objeto
local
invoca
um
método
em
um
objeto
remoto,
o
STUB
fica
responsável
por
enviar
a
chamada
ao
método
para
o
objeto
remoto.
Daniel
Arndt
Alves
Conceitos
Básicos
de
Objetos
Distribuídos
11
12. RPC
(Remote
Procedure
Call)
• Passos
do
STUB
quando
é
invocado:
1. Iniciar
a
conexão
com
a
Virtual
Machine
que
contém
o
objeto
remoto;
2. Escrever
e
transmiUr
os
parâmetros
para
a
Virtual
Machine
remota;
3. Aguardar
pelos
resultados
da
invocação
do
método;
4. Ler
os
resultados
retornados;
5. Retornar
os
valores
ao
objeto
que
executou
a
chamada
• O
STUB
esconde
a
serialização
dos
parâmetros
e
toda
a
comunicação
a
nível
de
rede,
com
o
objeUvo
de
simplificar
o
mecanismo
de
realização
da
invocação
do
método.
Daniel
Arndt
Alves
Conceitos
Básicos
de
Objetos
Distribuídos
12
13. RPC
(Remote
Procedure
Call)
Daniel
Arndt
Alves
Conceitos
Básicos
de
Objetos
Distribuídos
13
14. CORBA
• CORBA
é
uma
arquitetura
para
acesso
a
objetos
distribuídos
que
prima
pela
independência
da
plataforma.
• A
especificação
CORBA
define,
por
exemplo,
Upos
de
dados
que
podem
ser
mapeados
para
várias
linguagem
de
programação,
como
C++,
Pascal
e
Java.
Daniel
Arndt
Alves
Conceitos
Básicos
de
Objetos
Distribuídos
14
15. CORBA
• Um
ponto-‐chave
em
CORBA
é
a
uUlização
de
uma
IDL
(Linguagem
de
Definição
de
Interface).
• Várias
linguagens
(inclusive
Java)
já
disponibilizam
mecanismos
para
mapeamento
de
IDL.
Daniel
Arndt
Alves
Conceitos
Básicos
de
Objetos
Distribuídos
15
16. CORBA
• CORBA
exige
uma
espécie
de
“servidor”
especializado
chamado
ORB
(Object
Request
Broker).
• Existem
alguns
ORB´s
comerciais,
tais
como
VisiBroker
e
Orbix.
Daniel
Arndt
Alves
Conceitos
Básicos
de
Objetos
Distribuídos
16
17. CORBA
• Especificado
pela
OMG.
• Especialização
do
Object
Management
Architecture
(OMA).
• Transforma
modelos
abstratos
de
objetos
em
formas
concretas.
Daniel
Arndt
Alves
Conceitos
Básicos
de
Objetos
Distribuídos
17
18. 16Conceitos Básicos de Objetos Distribuídos
Daniel
Arndt
Alves
Conceitos
Básicos
de
Objetos
Distribuídos
18
19. CORBA
• Interface
Defini@on
Language
(IDL)
– Linguagem
declaraUva;
– Define
interfaces
de
objetos
com
independência
de
linguagem;
– Separa
a
interface
da
implementação
de
um
objeto;
– Permite
a
herança
de
interfaces.
Ela
permite
o
reuso
de
interfaces,
sem
que
suas
implementações
sejam
herdadas.
A
maioria
das
linguagens
de
programação
só
permite
a
herança
de
implementação.
Daniel
Arndt
Alves
Conceitos
Básicos
de
Objetos
Distribuídos
19
20. CORBA
• Language
Mappings
– Gera
o
Stub
e
o
Skeleton:
Após
a
definição
dos
objetos
terem
sido
feitas,
ocorre
a
geração
do
Stub
e
do
Skeleton.
O
Skeleton
é
gerado
na
linguagem
em
que
o
objeto
é
implementado,
e
o
Stub
é
gerado
uUlizando
a
linguagem
de
programação
que
o
cliente
está
uUlizando.
– Mapeia
os
Upos
da
IDL
para
o
Upo
da
linguagem
alvo.
– Language
Mapping
é
extremamente
dependente
das
linguagens
de
programação
uUlizadas.
Daniel
Arndt
Alves
Conceitos
Básicos
de
Objetos
Distribuídos
20
21. CORBA
• Object
Request
Broker
-‐
ORB
– É
o
componente
mais
importante
de
CORBA;
– Transmite
a
invocação
de
operações
do
cliente
para
o
servidor;
– Trata
de
todas
as
tarefas
associadas
à
invocação
de
um
método.
Daniel
Arndt
Alves
Conceitos
Básicos
de
Objetos
Distribuídos
21
22. CORBA
• Object
Request
Broker
-‐
ORB
– Trata-‐se
de
um
conjunto
de
módulos
de
sopware
que
gerenciam
a
comunicação
entre
objetos.
Muitos
autores
o
denominam
como
sendo
o
“barramento
de
objetos”.
– Esse
“barramento”
permite
que
objetos
façam,
de
forma
transparente,
requisições
a
objetos
que
podem
estar
localizados
localmente
ou
remotamente.
– Essa
transparência
assegura
que
o
cliente
(requisitante)
não
tenha
conhecimento
de
quais
os
mecanismos
uUlizados
para
se
comunicar
com
o
objeto
desejado.
Daniel
Arndt
Alves
Conceitos
Básicos
de
Objetos
Distribuídos
22
23. Java
RMI
• Arquitetura
de
acesso
a
objetos
distribuídos
suportada
pela
linguagem
Java.
• Em
termos
de
complexidade
de
programação
e
ambiente,
é
muito
simples
construir
aplicações
RMI,
comparando-‐se
com
RPC
e
CORBA.
Daniel
Arndt
Alves
Conceitos
Básicos
de
Objetos
Distribuídos
23
24. Java
RMI
• Em
termos
de
ambiente,
exige
somente
suporte
TCP/IP
e
um
serviço
de
nomes
de
objetos
(rmiregistry),
disponilizado
gratuitamente
com
o
Java
JDK/SDK.
Daniel
Arndt
Alves
Conceitos
Básicos
de
Objetos
Distribuídos
24
25. Java
RMI
• Localização
de
Objetos
Remotos
– Seria
impraUcável
se
cada
invocação
de
método
remoto
fosse
necessário
incluir
o
par
(máquina,
porta)
para
idenUficar
onde
se
encontra
o
objeto
que
contém
o
método.
– O
RMI
oferece
um
Serviço
de
Nomes
(RMI
Registry)
que
oferece
informações
sobre
a
localização
de
objetos
remotos.
• O
rmigregistry
executa
em
um
endereço
bem
conhecido.
Daniel
Arndt
Alves
Conceitos
Básicos
de
Objetos
Distribuídos
25
26. Objetos
Distribuídos
• Tudo
tratado
como
Objeto;
• Serviços
e
recursos
como
objetos
a
serem
invocados;
• Facilita:
– Transparência
– Oculta
aspectos
da
distribuição
Daniel
Arndt
Alves
Conceitos
Básicos
de
Objetos
Distribuídos
26
27. Objetos
Distribuídos
• Na
programação
distribuída,
uUlizando
a
arquitetura
cliente/servidor,
clientes
e
servidores
podem
ser
implementados
empregando
qualquer
paradigma
de
programação.
• É
possível
que
um
serviço
específico
seja
executado
por
um
método
de
algum
objeto.
• No
entanto,
mesmo
que
o
cliente
também
tenha
sido
desenvolvido
em
OO,
na
comunicação
entre
o
cliente
e
o
servidor,
esse
paradigma
deve
ser
esquecido,
devendo
ser
empregado
algum
protocolo
pré-‐
estabelecido
de
troca
de
mensagens
para
a
solicitação
e
resposta
ao
serviço.
Daniel
Arndt
Alves
Conceitos
Básicos
de
Objetos
Distribuídos
27
28. Objetos
Distribuídos
• Um
sistema
de
objetos
distribuídos
é
aquele
que
permite
a
operação
com
objetos
remotos.
• A
parUr
de
uma
aplicação
cliente
OO
é
possível
obter
uma
referência,
invocar
métodos
desse
objeto
–
mesmo
que
a
instância
desse
objeto
esteja
em
uma
máquina
diferente
daquela
do
objeto
cliente.
Daniel
Arndt
Alves
Conceitos
Básicos
de
Objetos
Distribuídos
28
29. Objetos
Distribuídos
• O
conceito
básico
que
suporta
plataformas
de
objetos
distribuídos
é
o
conceito
de
arquiteturas
de
objetos,
que
estabelece
regras,
diretrizes
e
convenções
definindo
como
as
aplicações
podem
se
comunicar
e
interoperar.
• Dessa
forma,
o
foco
da
arquitetura
não
é
em
como
a
implementação
é
realizada,
mas
sim
na
infraestrutura
e
na
interface
entre
os
componentes
da
arquitetura.
Daniel
Arndt
Alves
Conceitos
Básicos
de
Objetos
Distribuídos
29
30. Objetos
Distribuídos
• A
caracterísUca
fundamental
de
um
objeto
é
que
ele
encapsula:
– Dados,
denominado
estado,
e
– Métodos,
que
são
disponibilizado
por
meio
de
uma
interface.
Daniel
Arndt
Alves
Conceitos
Básicos
de
Objetos
Distribuídos
30
31. Objetos
Distribuídos
• É
importante
entender
que
não
há
nenhum
modo
legal
pelo
qual
um
processo
possa
acessar
ou
manipular
o
estado
de
um
objeto,
exceto
pela
invocação
dos
métodos
disponibilizado
para
ele
por
meio
de
uma
interface
de
objeto.
Daniel
Arndt
Alves
Conceitos
Básicos
de
Objetos
Distribuídos
31
33. Objetos
Distribuídos
• Para
começar
a
ter
um
entendimento
sobre
o
objetos
distribuídos:
– Quando
um
cliente
se
vincula
a
um
objeto
distribuído,
uma
implementação
da
interface
do
objeto,
denominada
Proxy,
é
carregada
no
espaço
de
endereço
do
cliente.
– Um
Proxy
é
a
análogo
a
um
apêndice
de
cliente
em
sistemas
RPC.
– A
única
coisa
que
ele
faz
é
montar
invocações
a
métodos
em
mensagens
e
desmontar
mensagens
de
respostas.
Daniel
Arndt
Alves
Conceitos
Básicos
de
Objetos
Distribuídos
33
34. Objetos
Distribuídos
• O
objeto
propriamente
dito
reside
em
uma
máquina
do
servidor,
onde
oferece
a
mesma
interface
oferecida
na
máquina
cliente.
Daniel
Arndt
Alves
Conceitos
Básicos
de
Objetos
Distribuídos
34
35. Objetos
Distribuídos
• Requisições
de
invocações
que
chegam
são
passadas
para
um
apêndice
servidor,
chamado
esqueleto
(skeleton),
que
as
desmonta
para
fazer
invocações
de
métodos
na
interface
de
objetos
que
esta
no
servidor.
• O
skeleton
também
é
responsável
por
montar
mensagens
de
respostas
para
o
cliente.
Daniel
Arndt
Alves
Conceitos
Básicos
de
Objetos
Distribuídos
35
36. Objetos
de
Tempo
de
Compilação
• A
uUlização
de
objetos
de
tempo
de
compilação
em
sistemas
distribuídos
muitas
vezes
facilita
bastante
a
construção
de
aplicações.
• A
compilação
da
definição
de
classe
resulta
em
códigos
que
permite
a
ela
instanciar
objetos
em
Java.
Daniel
Arndt
Alves
Conceitos
Básicos
de
Objetos
Distribuídos
36
37. Objetos
de
Tempo
de
Compilação
• Sendo
assim
interfaces
pode
ser
compiladas
do
lado
do
cliente
e
do
servidor
o
que
permite
que
objetos
em
Java
pode
ser
invocados
remotamente.
• A
desvantagem
deste
tempo
de
compilação
seria
a
dependência
de
determinada
linguagem.
Daniel
Arndt
Alves
Conceitos
Básicos
de
Objetos
Distribuídos
37
38. Objetos
de
Tempo
de
Execução
• Para
isso
o
objeto
de
tempo
de
execução
seu
modo
de
implementar
é
basicamente
deixado
aberto.
• A
essência
é
como
deixar
que
tal
implementação
aparente
ser
um
objeto
cujos
métodos
possam
ser
invocados
de
uma
máquina
remota.
– Uma
abordagem
comum
e
usar
um
adaptador
de
objeto.
Daniel
Arndt
Alves
Conceitos
Básicos
de
Objetos
Distribuídos
38
39. Objetos
de
Tempo
de
Execução
• O
adaptador
de
objeto
desempenha
o
papel
registrar
uma
implementação
de
uma
interface
e
na
seqüência,
disponibiliza
aquela
interface
para
invocações
(remotas).
Daniel
Arndt
Alves
Conceitos
Básicos
de
Objetos
Distribuídos
39
40. Objetos
Persistentes
• Um
objeto
persistente
é
o
que
conUnua
a
exisUr
mesmo
que,
no
momento
em
questão,
ele
não
esteja
conUdo
no
espaço
de
endereços
de
qualquer
processo
servidor.
• É
um
objeto
armazenado
em
um
meio
persistente,
como
um
banco
de
dados.
Daniel
Arndt
Alves
Conceitos
Básicos
de
Objetos
Distribuídos
40
41. Objetos
Transientes
• Um
objeto
transiente
é
um
objeto
que
existe
somente
enquanto
exisUr
o
servidor
que
o
está
hospedando;
• Quando
o
servidor
sai
do
ar,
ele
deixa
de
exisUr;
• Estado
de
um
objeto
antes
de
ser
gravado
em
um
meio
persistente;
• Um
objeto
persistente
pode
tornar-‐se
transiente
se
for
removido
do
banco
de
dados.
Daniel
Arndt
Alves
Conceitos
Básicos
de
Objetos
Distribuídos
41
42. Serialização
• Formatação
dos
dados
para
que
possam
ser
enviados
pela
rede.
• As
classes
devem
implementar
a
interface
Serializable
Daniel
Arndt
Alves
Conceitos
Básicos
de
Objetos
Distribuídos
42
int
bytes
Internet
bytes
int
Marshaling
Unmarshaling
43. Serialização
• Marshaling
– writeObject()
Daniel
Arndt
Alves
Conceitos
Básicos
de
Objetos
Distribuídos
43
Objeto
writeObject()
ObjectOutputStream bytes
OutputStream
44. Serialização
• Unmarshaling
– readObject()
Daniel
Arndt
Alves
Conceitos
Básicos
de
Objetos
Distribuídos
44
Objeto
readObject()
ObjectInputStreambytes
InputStream
45. Serialização
package tpa3.serializacao;
import java.io.Serializable;
public class FichaCadastro implements Serializable {
public String nome;
public String senha;
public String nomeCompleto;
public String instituicao;
public String email;
public FichaCadastro(String nome, String senha,
String nomeCompleto, String instituicao, String email) {
this.nome = nome;
this.senha = senha;
this.nomeCompleto = nomeCompleto;
this.instituicao = instituicao;
this.email = email;
}
}
Daniel
Arndt
Alves
Conceitos
Básicos
de
Objetos
Distribuídos
45
46. Serialização
/**
* Processo de serialização do objeto
*/
private void writeObject(java.io.ObjectOutputStream out)
throws IOException {
out.writeObject(nome);
out.writeObject(senha);
out.writeObject(nomeCompleto);
out.writeObject(instituicao);
out.writeObject(email);
out.flush();
}
Daniel
Arndt
Alves
Conceitos
Básicos
de
Objetos
Distribuídos
46
47. Serialização
/**
* Processo de deserialização do objeto
*/
private void readObject(java.io.ObjectInputStream in)
throws IOException, ClassNotFoundException {
nome = (String) in.readObject();
senha = (String) in.readObject();
nomeCompleto = (String) in.readObject();
instituicao = (String) in.readObject();
email = (String) in.readObject();
}
Daniel
Arndt
Alves
Conceitos
Básicos
de
Objetos
Distribuídos
47
48. Serialização
• Vantagens
– Facilidade
de
programação
– Persistência
de
objetos
• Desvantagens
– Velocidade
de
comunicação
Daniel
Arndt
Alves
Conceitos
Básicos
de
Objetos
Distribuídos
48