Le Web Application e il Modello Client-Server - Tecnologia Anno 5 Modulo 2 Lezione 1
Tecnologia · Anno 5 · Modulo 1 · Lezione 4
✍ Autore: profgiagnotti

Le Web Application e il Modello Client-Server

Come funzionano Gmail, Instagram e Google Docs dietro le quinte? Partiamo dal modello che ha rivoluzionato Internet.

Anno 5 Modulo 1 Lezione 4 Client-Server Web App Aggiornata 2025/26

1. Introduzione

Negli ultimi decenni, le applicazioni Web hanno profondamente trasformato il modo in cui interagiamo con i servizi digitali. Dall’istruzione al lavoro, dall’intrattenimento al commercio elettronico, gran parte delle attività quotidiane passa ormai attraverso il Web. Per comprenderne il funzionamento, è fondamentale analizzare il modello architetturale su cui si basano: il modello client-server.

💬 Nota del docente - Perché iniziamo da qui

Ragazzi, questa è la lezione più importante di tutto il Modulo 2. Se capite bene client-server, capite il 90% di Internet. Ogni volta che aprite Instagram, fate una richiesta a un server che sta a migliaia di km da voi e quel server vi risponde. Sembra magia, ma è un modello preciso che studieremo riga per riga. Segnatevi questa frase per l'orale: "Il client chiede, il server risponde, il protocollo regola come".

2. Cos’è una Web Application

Una Web Application è un’applicazione software accessibile tramite un browser Web e ospitata su uno o più server remoti. A differenza delle applicazioni tradizionali, non richiede l’installazione locale sul dispositivo dell’utente, ma utilizza la rete Internet per fornire servizi e funzionalità.

Esempi di Web Application sono:

  • Servizi di posta elettronica come Gmail
  • Suite di produttività come Google Docs
  • Piattaforme di e-learning
  • Social network come Instagram o Facebook

Questi servizi sono accessibili da qualsiasi dispositivo con connessione a Internet e un browser moderno, senza necessità di software aggiuntivo.

🔧 Caso d'uso reale - Perché le aziende amano le Web App

Pensate a cosa succedeva 15 anni fa: per usare Word dovevate comprare il CD, installarlo, attivare la licenza, aggiornarlo. Con Google Docs aprite Chrome e scrivete. Zero installazioni, zero aggiornamenti, zero virus. Per un'azienda è un risparmio enorme: sviluppa una sola volta e funziona su PC, Mac, tablet, smartphone. Ecco perché oggi il 95% dei nuovi software nasce come Web App.

3. Il Modello Client-Server

Il funzionamento delle Web Application si basa sul modello client-server, che prevede la collaborazione tra due entità distinte:

  • Client: dispositivo o programma che invia richieste di servizio. Può essere un computer, uno smartphone o un browser Web.
  • Server: sistema remoto che riceve le richieste, le elabora e invia le risposte al client.

Questa separazione dei ruoli consente di realizzare sistemi scalabili, modulari e facilmente manutenibili. Ogni client può inviare richieste multiple, e il server è in grado di gestirle tramite meccanismi di concorrenza.

🎯 Analogia che non dimenticherete

Io spiego client-server così: voi siete al ristorante (client), il cameriere è il protocollo HTTP, la cucina è il server. Voi ordinate (richiesta), la cucina prepara (elabora), il cameriere vi porta il piatto (risposta). Se ci sono 100 clienti, la cucina non prepara un piatto alla volta, ma ha più cuochi (thread) che lavorano in parallelo. È esattamente quello che fa un server Web con Apache o Nginx.

4. Tipi di comunicazione tra client e server

All’interno del modello client-server, la comunicazione può avvenire secondo modalità differenti:

  • Unicast: il server comunica con un singolo client alla volta. La richiesta viene accettata solo se il server non sta già servendo altri client.
  • Connessioni concorrenti: per servire più client simultaneamente, il server può creare un thread dedicato per ogni richiesta. In questo modo, le connessioni parallele non interferiscono tra loro, e il server rimane disponibile per nuovi client.
⚠️ Attenzione - Errore comune nei libri

Nota: il termine “multicast” viene talvolta usato impropriamente in testi didattici. In realtà, HTTP standard non utilizza multicast; la gestione di più client avviene attraverso connessioni parallele e multithreading. Se all'esame vi chiedono di multicast in HTTP, rispondete che è un errore: HTTP è unicast con gestione concorrente.

Esempio pratico

Un browser che richiede una pagina Web al server HTTP. Il server rimane in ascolto sulla porta 80 e, per ogni nuova richiesta, crea un thread o una connessione dedicata per servire l’utente. Così può servire più utenti contemporaneamente.

💡 Numeri reali

Un server come quello di Instagram gestisce 100.000 richieste al secondo. Non lo fa con un singolo processo, ma con migliaia di thread e decine di server dietro un load balancer. Quando voi fate swipe, il vostro client manda una richiesta, il load balancer la smista al server meno carico, quel server crea un thread, prende la foto dal database e ve la restituisce. Tutto in 80 millisecondi.

5. Tecnologie delle applicazioni Web

Le Web Application si basano su tecnologie che possono essere eseguite sia lato client sia lato server.

Tecnologie client-side

Le tecnologie client-side vengono eseguite direttamente nel browser dell’utente. Gestiscono principalmente l’interfaccia e l’interazione con l’utente.

Il flusso tipico di una richiesta client-side è:

  1. Il client invia una richiesta HTTP al server
  2. Il server restituisce una risposta contenente i dati richiesti
  3. Il browser interpreta e visualizza i contenuti

Esempi di tecnologie client-side includono HTML, CSS e JavaScript. Il codice sorgente è visibile all’utente e viene eseguito localmente, consentendo un’interazione immediata senza ulteriori elaborazioni server.

💬 Nota del docente - Ispeziona la pagina

Fate click destro -> Ispeziona su questa pagina. Quello che vedete è tutto client-side: HTML, CSS, JavaScript. Potete copiarlo tutto. È per questo che non si mettono mai password o chiavi segrete nel JavaScript lato client: chiunque le vedrebbe. La sicurezza vera sta sempre lato server.

Tecnologie server-side

Le tecnologie server-side eseguono l’elaborazione sul server remoto. Il client riceve soltanto il risultato finale e non ha accesso al codice sorgente.

Questo approccio è utilizzato per:

  • Accesso e gestione di database
  • Elaborazioni complesse
  • Autenticazione e gestione della sicurezza

Esempi di linguaggi server-side comuni sono PHP, Java, Python e ASP.NET. Le elaborazioni server-side consentono di centralizzare logiche complesse, ridurre il carico sui client e proteggere dati sensibili.

CaratteristicaClient-SideServer-Side
Dove giraNel browserNel server
Codice visibile?Sì, ispezionabileNo, solo risultato
LinguaggiHTML, CSS, JSPHP, Java, Python, C#
A cosa serveInterfaccia, animazioniDB, login, sicurezza
PrestazioniDipende dal deviceDipende dal server

6. Architettura a livelli (Tier e Layer)

Le applicazioni Web moderne sono organizzate secondo un’architettura a livelli (tier) e strati (layer). Questa separazione consente di assegnare compiti specifici a ciascun livello, migliorando scalabilità, sicurezza e manutenibilità.

Concetti fondamentali:

  • 1 Tier: tutto sullo stesso livello (es. app desktop con DB locale) - ormai obsoleto per il Web
  • 2 Tier: client e server DB diretto - semplice ma poco scalabile
🔧 Perché separare i livelli?

Immaginate di avere tutto il codice in un unico file: HTML, logica di calcolo dello sconto, query al database. Se domani cambiate database da MySQL a PostgreSQL dovete riscrivere tutto. Se invece avete 3 livelli separati, cambiate solo il Data Tier. È come avere in cucina antipasti, primi e dolci preparati da 3 chef diversi: se uno è assente, gli altri continuano a lavorare.

7. Modello Three-Tier e N-Tier

Modello Three-Tier

Il modello three-tier distingue tre livelli principali:

  • Presentation Tier (Front-End): interfaccia utente, gestione dell’input e visualizzazione dei dati (es. pagine HTML, moduli, interfaccia grafica)
  • Business Logic Tier (Middle Tier): logica applicativa e algoritmi di elaborazione dei dati (es. calcoli, gestione di transazioni, processi aziendali)
  • Data Tier (Back-End): gestione dei dati persistenti e accesso al database (Data Access Layer, DAL)

Architetture N-Tier

Le architetture N-Tier generalizzano il modello three-tier, aggiungendo livelli intermedi per:

  • Migliorare la modularità
  • Suddividere compiti complessi
  • Scalabilità superiore, utile per applicazioni distribuite o enterprise

Il multi-tier è ampiamente utilizzato nei sistemi distribuiti che devono gestire grandi quantità di utenti e dati, garantendo resilienza e flessibilità, pur aumentando la complessità complessiva.

🎯 Domanda da esame

Se vi chiedono: "Perché oggi si usa N-Tier e non 2-Tier?" Rispondete: perché con N-Tier posso scalare ogni livello in modo indipendente. Se ho 1 milione di utenti che guardano le pagine ma pochi che scrivono sul DB, metto 10 server per il Presentation Tier e 2 per il Data Tier. Con 2-Tier dovrei duplicare tutto, anche il DB, sprecando soldi. È una risposta da 10 e lode.

8. Il livello applicazione e i protocolli di rete

Nel modello ISO/OSI e nel modello TCP/IP, il livello applicazione fornisce i protocolli che permettono alle applicazioni di comunicare in rete senza preoccuparsi dei dettagli dei livelli inferiori.

Tra i protocolli più utilizzati:

  • HTTP: per la navigazione Web
  • FTP: per il trasferimento di file
  • SMTP / POP3: per l’invio e ricezione di email
  • DNS: per la risoluzione dei nomi di dominio

Questi protocolli permettono lo sviluppo di applicazioni di rete comuni come posta elettronica, chat, videoconferenze e streaming audio/video.

9. Socket e comunicazione tra processi

Per consentire la comunicazione tra processi su host differenti, ogni servizio è identificato da:

  • Indirizzo IP: identifica l’host
  • Numero di porta: identifica il servizio specifico

La coppia IP:porta prende il nome di socket, che rappresenta il punto di accesso al servizio. Grazie a questa identificazione, un server può offrire più servizi contemporaneamente, ciascuno su una porta diversa, e il client sa esattamente come raggiungere il servizio desiderato.

CONCETTO SOCKET
Socket = IP + Porta Esempio: 192.168.1.10:80 -> Web Server HTTP 192.168.1.10:443 -> Web Server HTTPS 192.168.1.10:22 -> Servizio SSH 192.168.1.10:3306 -> MySQLStesso IP, servizi diversi grazie alla porta!
💡 Semplifichiamo - L'hotel

L'indirizzo IP è l'indirizzo dell'hotel (Via Roma 10), la porta è il numero della camera (Camera 80, Camera 443). Se volete andare nella camera 80 (sito web), il portiere vi manda lì. Se volete la 22 (SSH), vi manda in un'altra camera. Stesso hotel, camere diverse. Senza porte, il server non saprebbe quale servizio volete.

10. Architetture di rete

Client-Server

Nel modello client-server, il server rappresenta il punto centrale del sistema:

  • Deve rimanere attivo e in ascolto per offrire servizi ai client
  • Possiede generalmente un indirizzo IP statico, mentre i client possono avere IP dinamici

Per gestire grandi volumi di traffico si ricorre a server farm e tecniche di bilanciamento del carico.

Peer-to-Peer (P2P)

Nel modello P2P, gli host comunicano direttamente tra loro, senza un server centrale. Ogni nodo può fungere da client e server, favorendo la decentralizzazione e una distribuzione più equilibrata delle risorse.

Tipi di architetture P2P:

  • Decentralizzato: tutti i nodi sono equivalenti e collaborano senza un server centrale
  • Centralizzato: un server tiene traccia delle risorse disponibili e facilita la connessione tra peer (es. Napster)
  • Ibrido: combina decentralizzazione e server di indicizzazione per bilanciare controllo e scalabilità

Architetture ibride

Le architetture ibride combinano i vantaggi di client-server e P2P, fornendo sistemi flessibili, scalabili e affidabili. Spesso sono utilizzate per applicazioni complesse che richiedono sia un punto centrale di controllo sia una distribuzione efficiente del carico.

ModelloProControEsempi
Client-ServerControllo centrale, sicurezzaSingle point of failureGmail, Facebook, YouTube
P2P PuroDecentralizzato, resistenteDifficile da gestireBitTorrent, Blockchain
IbridoScalabile, flessibileComplessoSkype, Spotify (inizio)

11. Servizi dello strato di trasporto

Lo strato di trasporto fornisce servizi essenziali alle applicazioni, come:

  • Affidabilità: garantisce che i dati arrivino correttamente
  • Controllo del flusso: gestisce il ritmo di trasmissione tra mittente e destinatario
  • Gestione della congestione: evita sovraccarichi della rete
  • Sicurezza: cifratura e integrità dei dati

I protocolli principali sono:

  • TCP (Transmission Control Protocol): orientato alla connessione, garantisce trasferimento affidabile e controllo di congestione. Ideale per posta elettronica, FTP e altre applicazioni che non tollerano perdite di dati.
  • UDP (User Datagram Protocol): senza connessione e non affidabile, più veloce e leggero, adatto per streaming multimediale o giochi online.
  • RTP (Real-Time Protocol): utilizzato per applicazioni in tempo reale, come VoIP e videoconferenze, combinando velocità e controllo dei ritardi di rete.
🎯 TCP vs UDP - Come ricordarlo all'esame

TCP è come una raccomandata: arriva sicuro, con ricevuta di ritorno, ma ci mette di più. UDP è come una cartolina: la lanci e speri arrivi, velocissima ma senza garanzie. Per un bonifico bancario usi TCP (non puoi perdere un euro), per una chiamata su Discord usi UDP (se perdi 10ms di audio non muore nessuno, ma se aspetti la ritrasmissione la chiamata lagga).

12. Conclusioni

La progettazione di un’applicazione Web o di rete richiede una scelta accurata dell’architettura, dei linguaggi e dei protocolli più adatti alle esigenze funzionali e prestazionali. Comprendere il modello client-server, le architetture a livelli e i servizi di rete è fondamentale per sviluppare applicazioni moderne, scalabili, sicure e affidabili.

📚 Compito per casa - Osserva il mondo intorno a te

Apri Chrome -> Tasto destro -> Ispeziona -> Scheda Network e ricarica questa pagina. Vedrai decine di richieste client-server in tempo reale: HTML, CSS, immagini. Ogni riga è una richiesta HTTP con il suo socket. Conta quante sono. Nella prossima lezione vedremo come queste richieste viaggiano dentro il protocollo HTTP.