Skip to content
This repository has been archived by the owner on Dec 8, 2022. It is now read-only.

duartegithub/DAD-2019-2020

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Desenvolvimento de Aplicações Distribuídas

Nota Introdutória

O responsável pela cadeira foi o Professor Luís Rodrigues e este projecto foi avaliado pelo Professor João Garcia tendo-lhe sido atribuída a nota final de para o projecto de 17.5. Este projecto foi a segunda nota mais alta no Instituto Superior Técnico a esta unidade curricular no semestre de 2019/2020.

A ideia do projecto consistia em fazer um serviço de agendamento de reuniões. A interacção seria um cliente ligar-se a um servidor e emitir comandos como a criação de reuniões que seriam agendadas para qualquer futuro dia. Estas reuniões seriam agendadas para uma sala numa dada localização (i.e. Lisboa; Porto) numa hora escolhida pelo coordenador (processo criador da reunião).

As opções realizadas pelos clientes incluíam poder criar, juntar-se e fechar reuniões. Se o fecho das reuniões fosse bem sucedido estas passariam ao estado "SCHEDULED", caso contrário estas seriam canceladas.

O objectivo dos servidores, e segundo a nossa interpretação do enunciado do projecto, que se encontra no directório ./Statement, foi cada servidor usar "Uniform Reliable Broadcast" em combinação com "Atomic Registers" e "Distributed Mutual Exclusion" de forma a garantir a ordem total das mensagens difundidas pelos servidores.

Trabalho futuro consistiria em implementar "Message Queues" em cada servidor de forma a garantir que se uma operação não for difundida com sucesso estas voltaria a sê-lo algures no tempo mais tarde.

É com muito prazer que partilho com qualquer leitor deste repositório o código para ajudar na criação de qualquer aplicação distribuída em projectos futuros.

Línguagem e Módulos Utilizados

Este projecto foi realizado na linguagem C#. Sendo este projecto uma aplicação distribuda o módulo mais utilizado e importado no Visual Studio foi o Remoting. Adicionalmente fizemos uso também do JSON.NET da Newtonsoft para parsar certas classes e enviá-las na rede.

Directórios

  • No directório ./Client encontramos naturalmente o código da aplicação cliente que fará os pedidos à aplicação servidor. Esta aplicação é uma consola C# na qual são emitidos comandos para os servidores. A estructura da "main" código segue um padrão de desenho "Command". No directório ./Communications encontram-se as funções de Remoting necessárias às comunicações usadas por nós.

  • No directório ./Library encontram-se as bibliotecas partilhadas pela aplicação Cliente e Servidor.

  • ./PCS é a máquina responsável por iniciar processos Cliente ou Servidor remotamente emitidos através da aplicação PuppetMaster.

  • ./PuppetMaster é uma aplicação de Windows Form que permite enviar comandos de inicialização de Clientes ou Servidores e permite correr scripts nos mesmos.

  • ./Server naturalmente é o directório onde se encontra o servidor. No directório ./Communications encontram-se as funções de Remoting necessárias às comunicações usadas pelo servidor.

Scripts Puppet Master

Na raiz deste directório encontram-se uma interacção de exemplo que mostra como correr o projecto. Os scripts para serem corridos pelo cliente encontram-se no directório ./Client/Scripts. A mesma coisa para os scripts a serem corridos pelo PuppetMaster, estes encontram-se no directório ./PuppetMaster/Scripts.

Grupo 16

  • 82069 - José Brás - MEIC-T (Nota Final: 18)
  • 87527 - Duarte Nascimento - MEIC-T (Nota Final: 17)
  • 87557 - Pedro Agostinho - METI (Nota Final: 17)

About

DAD Project - experimenting with algorithms against crash based faults in replicated systems.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C# 100.0%