Baixe o app para aproveitar ainda mais
Prévia do material em texto
* Atividade Prática Supervisionada CRIAR UMA APLICAÇÃO DISTRIBUÍDA Prof. Jorge Viana Doria Junior, M.Sc. Mestre em Informática iNCE/DCC/PPGI/UFRJ * Roteiro Objetivos Descrição da aplicação Sobre a arquitetura Implementação Execução em paralelo Apresentação * Objetivos Fundamentar conceitos sobre: Arquitetura distribuída Interface baseada em Sockets Serialização de dados em Java (Interface Serializable) Modelo de Java Threading Sistema de passagem de mensagem * Descrição da aplicação Sistema de Sincronização de Arquivos Desenvolver um cliente e um servidor que permita a sincronização e transferência de arquivos (downloads e uploads). O servidor terá que responder a múltiplos pedidos por parte de diversos clientes. Cliente e servidor terão de ter capacidade de efetuar uploads e downloads em simultâneo. Desenvolva um programa de sincronização de arquivos entre computadores. O programa deve comparar dois diretórios localizando os arquivos que têm em um e não têm no outro computador para realizar a sincronização. Caso um arquivo esteja em ambos diretórios, o mais recente deve prevalecer em ambas máquinas. O programa deve ter uma opção que permita ao usuário interagir no processo de sincronização, ou seja, decidir se um arquivo vai mesmo ser copiado de uma máquina para outra. * Sobre a arquitetura * Sobre a arquitetura Vantagens A distribuição dos dados é fácil. Faz uso efetivo de sistemas em rede. É fácil adicionar novos servidores. Desvantagens Não existe um modelo de dados compartilhado. Gerenciamento redundante em cada servidor. Não há um registro central de nomes. * Implementação O programa deve ser instalado em ambas máquinas e a comunicação deve ser implementada usando TCP/IP. Uma requisição deve estar encapsulada em um objeto Request, esse objeto deve conter como atributo a requisição (ex. obter lista dos arquivos de um diretório ou download ou upload de um arquivo) e os parâmetros da requisição (por exemplo, um path). A outra máquina, ao receber o objeto Request, deve extrair a requisição e executá-la. Ao término da execução, o servidor deve criar a resposta (um objeto Reply) para enviar à máquina que fez a requisição. Dentro do objeto Reply deve conter um atributo que possibilite colocar um arquivo (p.ex. um array de bytes), caso a requisição seja de download. Use ObjectOutputStream e ObjectInputStream para serializar o objeto Request/Reply na comunicação cliente/servidor. * Implementação 1. Separe claramente o código de comunicação do código de aplicação. 2. Para implementar a busca, utilize o pacote java.io.File; 3. Para implementar o trabalho, pesquise as classes abaixo: java.net.* FileOutputStream FileInputStream ObjectOutputStream ObjectInputStream 4. Utilize o link abaixo para praticar a transferência de arquivos via Sockets; http://www.devmedia.com.br/java-socket-transferencia-de-arquivos-pela-rede/32107 * Execução em paralelo Como implementar recursos multithread? Estendendo a classe Thread ou Implementando a Interface Runnable * Apresentação 1. A atividade deve ser desenvolvida em grupos com 2 alunos. 2. O programa deve ser apresentado ao professor no laboratório no dia 22/11/2018 e publicado até o dia 22/11/2018. 3. Os trabalhos NÃO poderão ser enviados por e-mail. 4. Será verificado o funcionamento do programa e em seguida os alunos devem responder a questões sobre o código do programa referentes ao uso de mecanismos de comunicação entre processos. 5. Trabalhos não entregues após o fim do prazo original, não será aceito, ou seja, terá nota ZERO. 6. Em caso de cópia do código de outro aluno, ambos não terão nota.
Compartilhar