MATEMATICA E INFORMATICAInformaticaAnno accademico 2022/2023

1010978 - TECNOLOGIE PER I SISTEMI DISTRIBUITI E IL WEB CON LABORATORIO
Modulo 1010980 - LABORATORIO

Docente: SALVATORE NICOTRA

Risultati di apprendimento attesi

Il corso di Tecnologie per i sistemi distribuiti e il Web, con il modulo di Laboratorio integrato, mira a fornire i fondamenti concettuali di base e le capacità operative necessarie per lo sviluppo di applicazioni Web e, più in generale, distribuite. Verranno presentate le soluzioni architetturali tipiche, ovvero i paradigmi client-server, delle chiamate remote di procedura, del web dinamico, degli handler di richieste HTTP (servlet), il pattern MVC (Model-View-Controller) e le applicazioni Web basate su API REST.  Le tecnologie di sviluppo presentate si basano sulle piattaforme C/Unix e Java e, per il Web, Java e PHP (con eventuali framework a corredo).

Modalità di svolgimento dell'insegnamento

Lezioni ed esercitazioni si svolgono in aule-laboratorio, nelle quali gli studenti possono utilizzare i PC disponibili o il proprio PC portatile. Le lezioni consistono prevalentemente in sessioni live, operate dal docente, di sviluppo di applicazioni distribuite e per il Web mediante le tecnologie presentate. Come cornice e guida di tali sessioni, vengono proiettate delle note, interamente condivise con gli studenti attraverso il portale Studium. Nelle esercitazioni, gli studenti sono vivamente incoraggiati a studiare, modificare ed innovare il materiale presentato dal docente durante le sessioni.
Per quanto le note delle lezioni non ambiscano a costituire un testo di riferimento, esse sono intese, oltre che ad agevolare la comprensione, a fornire un dettaglio puntuale del materiale presentato e della documentazione tecnica da consultare quale riferimento.

Qualora l'insegnamento venisse impartito in modalità mista o a distanza potranno essere introdotte le necessarie variazioni rispetto a quanto dichiarato in precedenza, al fine di rispettare il programma previsto e riportato nel syllabus.

Prerequisiti richiesti

Frequenza lezioni

La frequenza è vivamente consigliata, dato anche l'orientamento pratico dell'attività didattica, per il raggiungimento di una piena comprensione di materiale, concetti e principi presentati.

Contenuti del corso

Verranno presentati, a livello di concetti, paradigmi e aspetti architetturali, gli argomenti elencati di seguito.

Si prega inoltre di tenere presente che le note del docente, pubblicate attraverso il portale Studium o il portale Teams d'ateneo documentano fedelmente e in dettaglio gli argomenti svolti e, di conseguenza, i contenuti del corso.
NB: il repository delle note è unico per questo modulo e quello di laboratorio.

Applicazioni client-server basate su socket

Applicazioni client-server basate su invocazioni remote di codice
Thread Linux in CThread Java
Architettura 3-tier per un sistema distribuitoIl Web dinamico: concetti e tecnologie
Web services (WS) SOAP e REST
Il pattern Model-View-Controller (MVC) per le Web applicationAPI http

Testi di riferimento

  1. Note del docente (pubblicate attraverso il portale Studium, documentano puntualmente il materiale presentato)
  2. Deitel H. M., Deitel P. J. Java: Tecniche avanzate di programmazione. Apogeo (in biblioteca).
  3. Documentazione online Java, https://docs.oracle.com/javase/tutorial/
  4. Documentazione online Java Enterprise Edition, Tutorial Jakarta EE

Programmazione del corso

 ArgomentiRiferimenti testi
1Introduzione ai sistemi concorrenti e distribuiti e al corso.1
2Socket: introduzione e system call principali.1
3Socket: Cliente di esempio. Semantica di read() e write(). Socket non bloccanti.1
4Socket: Indirizzi IP e delle socket. DNS e interfaccia al resolver.1
5Socket: Comunicazione connectionless. send() e receive().1
6Socket in linguaggio Java.1,2,3
7Java Servlets1,4
8Web Application: principi e concetti1,4
9Web services: REST con JSON1
10Sviluppo in PHP1
11Sviluppo di API REST con Spring Boot1
12Sviluppo in PHP1
13Laravel MVC1
14Sviluppo di client per il web e API web1

Verifica dell'apprendimento

Modalità di verifica dell'apprendimento

Colloquio orale sugli argomenti del corso, a partire dalla correzione e discussione delle prove di laboratorio svolte e superate in precedenza. 

La verifica dell’apprendimento potrà essere effettuata anche per via telematica, qualora le condizioni lo dovessero richiedere.

Esempi di domande e/o esercizi frequenti

Sistemi client-server basati su socket.
Uso dei thread Posix.
Architettura 3-tier per un sistema distribuito.
Sviluppo di applicazioni Web server-side, mediante servlet.
Impiego di ambienti integrati di sviluppo.
Servlet e servlet container
Web application
Costruzione e utilizzo di web services SOAP e REST.
Formato di interscambio JSON.
Caratteristiche del linguaggio PHP.
Il pattern MVC nei framework Spring Boot e Laravel.

English version