Sistemas Distribuídos
Código
0106026Créditos ECTS
6Objetivos
Pretende-se proporcionar os conhecimentos básicos e intermédios para a programação de aplicações distribuídas, nomeadamente as arquiteturas e as tecnologias de comunicação em sistemas distribuídos, em particular aquelas disponibilizadas pelos objetos distribuídos e orientadas para a Web.
Consolidar e aprofundar as competências na programação Java adquiridas (i.e., no desenho, orientado aos objetos, de aplicações monolíticas), através do paradigma de programação de aplicações distribuídas, estudando soluções Java (e.g., Java RMI) mas, também, outras codificadas em Java (e.g., CORBA) e, ainda, soluções XML para Web, através do SOA com Web Services e REST, em Java.
O aluno estará apto a projetar, desenhar e codificar aplicações distribuídas, de pequena e média escala, independentes da linguagem de programação, do sistema operativo e da plataforma, de raiz ou aquelas que decorrem da integração de dados e/ou aplicações, usando objetos distribuídos e as vocacionadas para a Web.
Programa
1. Arquiteturas de sistemas distribuídos: monolíticas, N camadas; Peer-to-Peer; sockets e RPC; objetos distribuídos; Web Services.
2. Sistema de nomes DNS: estrutura e funcionalidades do DNS; replicação e caching; tipos de servidores; acesso ao DNS via Java.
3. Programação com Sockets: protocolos de transmissão; UDP; TCP.
4. CORBA: OMA; CORBA em execução; mapeamento IDL para Java; Naming Service; desenvolvimento de uma aplicação Cliente/Servidor.
5. Java RMI: CORBA vs RMI; arquitetura e serviços; API; segurança; desenvolvimento de uma aplicação Cliente/Servidor.
6.Web Services: arquitetura e ciclo de vida; XML; SOAP, WSDL e UDDI; execução de um Web Service; SOA com Web Services e REST.
Métodos de Ensino
As aulas estão divididas em teóricas e práticas. Nas primeiras, é proporcionada a exposição dos conceitos, que incluí também a demonstração de programas, e, nas segundas, é proporcionada a resolução de fichas laboratoriais, para exercitar e complementar os conceitos, e a programação de aplicações de pequena escala para sistemas distribuídos.
Bibliografia
Cardoso, J. (2008). Programação de Sistemas Distribuídos em Java. FCA.
Graba, J. (2007). An Introduction to Network Programming with Java. Springer.
Dirksen, J. (2012). SOA Governance in Action: REST and Web Services architectures. Manning.
Dollimore, J. et al. (2005). Distributed Systems: Concepts and Design. Addison Wesley.
Reilly, D. (2002). Java Network Programming and Distributed Computing. Addison Wesley.
Josuttis, N. M. (2007). SOA in Practice: The Art of Distributed System Design. O’Reilly.
Método de Avaliação
- Frequência - 30 %
- Projeto individual - 20 %
- Trabalho Individual e/ou de Grupo - 50 %