Comunicacao Distribuida

Propaganda
Comunicação Distribuída
Estratégias diferentes que
permitem a comunicação entre
aplicações distribuídas
Estratégias Distintas
• Sockets
• RPC - Remote Procedure Call
• RMI - Remote Method Invocation
• CORBA – Commom Object Request Broker
Architecture
Conceito de Porta
• Uma porta é um ponto de interação entre
uma aplicação e o sistema operacional da
máquina.
• Proporciona à aplicação uma forma de
estabelecer um canal de comunicação com o
sistema operacional da máquina.
• É representada por um endereço numérico.
Sockets
• Um socket é um mecanismo de baixo nível,
definido como uma extremidade de um
canal de comunicação.
• Um par de processos (thread) se comunica
em uma rede utilizando um par de sockets –
um para cada processo.
• Um mecanismo do TCP/IP que permite que
processos distribuídos se comuniquem em
uma rede.
• Um socket é formado por um endereço IP
concatenado com um número de porta.
Sockets
• Um mecanismo de baixo nível, entre
processos ou threads distribuídos,
que permitem a troca de um fluxo
não-estruturado de bytes entre os
threads em comunicação.
Sockets Java
• Sockets orientados a conexão (TCP):
Classes: Socket, ServerSocket
• Sockets sem conexão (UDP):
Classe:
DatagramSocket
• Socket de difusão (multicast):
Classe:
MultcastSocket
Estruturando os Dados na
Comunicação
• É responsabilidade da aplicaçãocliente, o da aplicação-servidor impor
uma estrutura de dados.
• Existem dois métodos alternativos de
comunicação em nível mais alto:
RPC e RMI
RPC
• Permite que um processo ou uma thread
chame um procedimento ou função em outro
processo, que pode estar em um espaço de
endereçamento separado na mesma máquina
ou pode estar executando em um
computador remoto conectado por uma
rede.
Vantagens do RPC
• Gerencia o canal de comunicação, de
forma que os programas aplicativos
podem ser escritos de modo que a
localização de um procedimento, quer
local ou remoto, seja transparente.
• Mostrar figuras ...
RMI
• É um recurso Java.
• Permite que uma thread invoque um
método em um objeto remoto, o qual
reside em uma máquina virtual Java
(JVM) distinta que pode estar no
mesmo computador ou em uma JVM
em um computador remoto conectado
por rede.
RMI
• RMI baseia-se em objetos: suporta a
invocação de métodos em objetos remotos.
• Com RMI é possível passar objetos como
parâmetros para os métodos remotos.
• Torna possível aos usuários desenvolver
aplicações Java que sejam distribuídas por
toda a rede.
RMI
• Para tornar os métodos remotos
transparentes ao cliente e ao
servidor, RMI implementa o objeto
remoto usando stubs e skeletons.
• Um stub é um proxy
(representante)do objeto remoto, que
reside junto ao programa-cliente.
RMI
• Quando o programa-cliente invoca um
método remoto, é esse stub para o
objeto remoto que é chamado.
• Um stub no cliente serve para criar
uma mensagem consistindo do nome
do método a ser invocado no servidor
e nos parâmetros desse método.
RMI
• O stub envia então essa mensagem para o
lado do servidor, onde a mensagem é
recebida pelo skeleton do objeto remoto.
• O skeleton então faz a extração dos
parâmetros e invoca o método desejado no
objeto remoto do lado servidor.
RMI
• O skeleton agrega o valor de retorno
(ou exceção) em uma mensagem e
retorna-a ao programa-cliente.
• O stub efetua a extração do valor de
retorno e o passa para o cliente.
RMI
• É uma tecnologia Java nativa e por isso
requer que todas as aplicações distribuídas
sejam escritas em Java.
• Muitos sistemas existentes que talvez
queiramos que seja distribuídos são
escritos em C, C++, Ada, COBOL, Smaltalk,
ou outra linguagem.
• CORBA permite a comunicação entre
aplicações cliente e servidor heterogêneas.
CORBA
Download