Escolar Documentos
Profissional Documentos
Cultura Documentos
Walfredo Cirne
Universidade Federal de Campina Grande http://walfredo.dsc.ufcg.edu.br
Roteiro
Conceitos e caractersticas Arquiteturas Modelos de programao Problemas
...
mquina 1 mquina 1 mquina 2 mquina n
Exemplo: Web
Roteiro
Conceitos e caractersticas Arquiteturas
Cliente-servidor Vrias camadas Peer-to-peer Hbridas
Cliente-Servidor
Servidor Web
Servidor BD
Peer-to-Peer
Modelos Hbridos
(Exemplo: Email)
Roteiro
Conceitos e caractersticas Arquiteturas Modelos de programao
Acesso remoto ao Banco de Dados Objetos distribudos Invocao de mtodos remotos Troca de mensagens
Problemas
Por exemplo, em Delphi, ao instanciar TDataBase setando os atributos para referenciar um Banco de Dados remoto, est se criando uma aplicao distribuda
Objetos Distribudos
Objetivos
Poder interagir com um objeto localizado em uma mquina remota como se ele fosse local Poder construir um objeto em uma mquina e transmiti-lo para outra
Endereos e Portas
Cada mquina na Internet possu um endereo IP nico
150.165.98.38 = minha mquina
Componentes de um SSOD
Mecanismo para especificao das interfaces dos objetos e gerao de skeletons e stubs
IDL, Java, COM Language, etc.
Gerente de objetos
ORB, Registry Service
Servio de Nomes
bind, lookup
RMI v CORBA
O fato do RMI ser baseado em Java trs todos os benefcios da linguagem Java
Integrao Java + RMI muito mais limpa Independncia de plataforma
O RMI mais fcil de ser dominado, CORBA tem um grande nmero de interfaces e detalhes que dificultam o domnio
RMI v CORBA
RMI totalmente baseado em Java, dificultado a integrao com cdigo escrito em outra linguagem
A nica forma de realizar essa integrao atravs do uso de uma interface de cdigo nativo Java
Troca de Mensagens
Processos que compem a aplicao distribuda podem tambm se comunicar pela troca de mensagens Nvel de abstrao mais baixo que outras formas de desenvolver aplicaes distribudas Base de implementao de vrios protocolos importantes (ex: HTTP, SMTP)
Estabelecendo a Conexo
Servidor escutando por conexes na porta 5000:
ServerSocket s = new ServerSocket(5000); while (true) { Socket clientConn = s.accept(); InputStream in = clientConn.getInputStream(); OutputStream out = clientConn.getOutputStream(); }
Cliente:
InetAddress addr = InetAddress.getByName(anjinho.dsc.ufpb.br); Socket s = new Socket(addr, 5000); InputStream in = s.getInputStream(); OutputStream in = s.getOutputStream();
<command>
<response>
2. Send Result
Protocolo
GET <arg> POST <arg> DONE
Servidor Cliente
Roteiro
Conceitos e caractersticas Arquiteturas Modelos de programao Problemas
Novos modos de falha Testes difceis Firewalls e endereos privados
Tolerncia a Falhas
Um sistema distribudo tem mais componentes que um sistema centralizado Se a quebra de qualquer componente derruba o sistema, a disponibilidade ser ruim em um sistema distribudo H tcnicas de replicao para resolver isso, mas raramente so usadas
Problema resolvido para redes locais Mas tem um custo
Testes Difceis
Testes automticos tem se mostrado fundamentais para produo de software de boa qualidade
Se voc estiver interessado sobre o assunto, veja minha palestra sobre XP