Le WEB application ed il modello Client-Server
Le WEB application ed il modello Client-Server. Cosa sono le applicazioni WEB, come funziona il modello Client-Server, cosa si intende per architetture multi-tier...scopriamolo!
Indice dei contenuti
- Le WEB Application ed il Modello Client-Server: Introduzione - Cos'è una WEB Application? - Un modello basato su efficienza e scalabilità - Capitolo 1: Applicazioni Web e il Modello Client-Server- Generalità sulle Applicazioni Web - Tecnologie del Web- Tecnologie Client-Side - Tecnologie Server-Side - Scelte di Implementazione - Linguaggi del Web- Linguaggi di Mark-Up - Linguaggi di Programmazione - Evoluzione dei Linguaggi - Il Modello Client-Server- Schema di Funzionamento - Evoluzione e Applicazioni - Capitolo 2: Distinzione tra Server e Client e Architettura a Livelli- Differenze tra Server e Client - Processo di Comunicazione - Tipi di Comunicazione: Unicast e Multicast- Esempio Pratico: Trasmissione Multicast - Architettura a Livelli e Strati- Livelli (Tier) - Strati (Layer) - Unione di Livelli e Strati - Architetture a 1 livello (1-tier) - Architettura a Due Livelli (2-Tier)- Modelli di Architettura a Due Livelli - Evoluzione delle Architetture a Due Livelli - Architettura a Tre Livelli (3-Tier)- Vantaggi del Modello a Tre Livelli - Complessità del Modello a Tre Livelli - Architettura a N Livelli (N-Tier) - Applicazioni Multi-Tier - Capitolo 3: Il Modello ISO/OSI e le Applicazioni di Rete- Il Livello di Applicazione nel Modello ISO/OSI e TCP/IP - Modello ISO/OSI e Modello TCP/IP - Protocolli del Livello Applicazione - Applicazioni Generali e Proprietarie - Applicazioni di Rete - Applicazioni Distribuite - Comunicazione tra Processi - Identificazione di un Servizio mediante Socket - Indirizzo IP e Numero di Porta - Funzionamento del Socket - Processo di Comunicazione - Composizione di un’Applicazione di Rete - Esempio: Un Browser Web - Gestione della Concorrenza nei Server - Processo di Connessione e Concorrenza - Capitolo 4: Scelta dell’Architettura per l’Applicazione di Rete- Architettura Client-Server - Architettura Peer-to-Peer (P2P)- Tipi di Architetture P2P - Architetture Ibride - Capitolo 5: Servizi Offerti dallo Strato di Trasporto alle Applicazioni- Trasferimento Dati Affidabile - Ampiezza di Banda (Bandwidth) - Temporizzazione - Sicurezza - Conclusioni Le WEB Application ed il Modello Client-Server: Introduzione Negli ultimi decenni, le applicazioni web hanno trasformato il panorama digitale, rendendosi indispensabili in molti ambiti della nostra vita quotidiana, dal lavoro allo svago, passando per l'istruzione e il commercio. Ma cosa sono esattamente le applicazioni web? E come funzionano? Per comprenderlo, è fondamentale esplorare il loro cuore pulsante: il modello Client-Server. Cos'è una WEB Application? Una Web Application è un'applicazione software accessibile tramite un browser web e progettata per risiedere su server remoti piuttosto che sui dispositivi degli utenti. Contrariamente alle applicazioni tradizionali, che necessitano di installazioni locali, le Web Application sfruttano Internet per connettere gli utenti ai servizi. Questo rende possibile, ad esempio, utilizzare piattaforme come Gmail, Google Docs o social media come Instagram ovunque e da qualsiasi dispositivo. Un modello basato su efficienza e scalabilità Il funzionamento delle Web Application è strettamente legato al modello Client-Server, una struttura architettonica che organizza il flusso di comunicazione tra due entità principali: - Il Client, ovvero il dispositivo dell'utente (come un computer o uno smartphone) che invia richieste. - Il Server, una macchina remota che riceve, elabora e risponde a tali richieste.
Capitolo 1: Applicazioni Web e il Modello Client-Server
Generalità sulle Applicazioni Web Con il termine applicazione Web si intende un software sviluppato e utilizzato tramite tecnologie e linguaggi specifici per il Web. Questo tipo di software sfrutta la rete Internet per fornire servizi accessibili agli utenti da qualsiasi luogo e dispositivo connesso. Due concetti chiave ne caratterizzano il funzionamento: - Tecnologie client-side e server-side, ovvero dove avviene l'elaborazione dei dati. - Linguaggi di mark-up e linguaggi di programmazione, utilizzati rispettivamente per strutturare i contenuti e per scrivere le logiche operative. Tecnologie del Web Le tecnologie utilizzate nello sviluppo delle applicazioni Web si dividono in due categorie principali, in base a dove avviene l'elaborazione: sul dispositivo dell'utente (client-side) o su un server remoto (server-side). Tecnologie Client-Side Le tecnologie client-side permettono che l'elaborazione avvenga direttamente sul dispositivo dell'utente, tipicamente tramite il browser. Questa architettura segue un flusso composto da tre fasi: - L'invio di una richiesta HTTP dal client. - La ricezione della risposta HTTP dal server. - L'elaborazione e la visualizzazione dei dati sul browser. Un esempio pratico? Pagine scritte in linguaggi come HTML o JavaScript possono essere visualizzate anche senza un Web server, semplicemente aprendo il file salvato localmente. Inoltre, il codice sorgente delle pagine client-side è visibile direttamente dal browser, rendendo questo approccio trasparente all'utente. Tecnologie Server-Side Le tecnologie server-side, invece, prevedono che l'elaborazione avvenga su un server remoto, come un Web server. Le fasi del processo sono: - Il client invia una richiesta HTTP. - Il server elabora la richiesta. - Il server invia la risposta con i dati elaborati al client. A differenza del client-side, il codice sorgente delle pagine server-side non è visibile al browser dell'utente, poiché viene elaborato interamente sul server. Questo approccio è usato per elaborazioni che richiedono un'interazione con basi di dati o operazioni più complesse. Scelte di Implementazione La scelta tra tecnologie client-side e server-side dipende dalla natura delle elaborazioni richieste: - L'interazione con gli elementi di una pagina Web avviene tipicamente client-side. - L'interazione con database remoti o processi complessi avviene server-side. Linguaggi del Web Nel Web si utilizzano principalmente due categorie di linguaggi: Linguaggi di Mark-Up Questi linguaggi, come HTML o XML, servono a strutturare i contenuti e a definirne l'aspetto visivo. Si tratta di documenti "formattati" che includono tag per la struttura e lo stile. Linguaggi di Programmazione Linguaggi come Java o PHP sono progettati per scrivere programmi, ovvero sequenze di istruzioni operative. Evoluzione dei Linguaggi Negli ultimi anni, i confini tra queste categorie si sono sfumati: - Approcci "ibridi", come AJAX, combinano tecnologie client-side e server-side. - Con HTML5 è possibile inserire script direttamente nel codice HTML, rendendo più difficile distinguere tra mark-up e programmazione.
Il Modello Client-Server
Il modello client-server rappresenta il nucleo centrale delle applicazioni Web. Esso si basa su una rete di client (utenti) che richiedono servizi e server (processi) che li forniscono. È importante distinguere tra il servizio, entità astratta fornita, e il server, processo che lo esegue. Schema di Funzionamento Le attività principali del modello sono: - Il client invia una richiesta al server. - Il server riceve la richiesta. - Il server esegue il servizio richiesto. - Il server invia una risposta con i dati al client. - Il client riceve la risposta.
Evoluzione e Applicazioni Questo modello si è evoluto per gestire applicazioni complesse con caratteristiche come: - Supporto a numerosi utenti concorrenti. - Logica applicativa avanzata. - Gestione di dati distribuiti. - Elevati requisiti di sicurezza. Tra i servizi tipici troviamo HTTP, FTP, e protocolli come SMTP o IMAP4. La programmazione di rete è quindi cruciale per soddisfare le esigenze di connessione e scambio dati nelle applicazioni moderne.
Capitolo 2: Distinzione tra Server e Client e Architettura a Livelli
Differenze tra Server e Client In un modello client-server, il client è un programma che richiede servizi, mentre il server è un programma ospitato su un computer chiamato host, che fornisce tali servizi. Il server rimane in ascolto su una specifica porta tramite un socket, aspettando richieste di connessione dai client. Quando un client desidera comunicare con un server utilizzando il protocollo TCP/IP, deve: - Connettersi al socket dell'host dove il server è in esecuzione. - Specificare l'indirizzo IP e il numero di porta su cui il server è in ascolto. È importante notare che un host può ospitare più server, ciascuno in ascolto su porte diverse. Questo può essere semplificato con un'analogia: più persone possono vivere allo stesso indirizzo ma con numeri di interno diversi, dove i numeri di interno rappresentano le porte. Processo di Comunicazione Il server, una volta ricevuta una richiesta dal client, utilizza le sue risorse per eseguire il servizio richiesto. Eventualmente, restituisce i risultati al client, completando così il ciclo di comunicazione.
Tipi di Comunicazione: Unicast e Multicast
All'interno del modello client-server, si possono distinguere due tipi principali di comunicazione: - Unicast: Il server comunica con un solo client alla volta, accettando una richiesta di connessione solo se nessun altro client è già connesso. - Multicast: Il server può gestire più connessioni contemporaneamente, generando un nuovo thread per ogni richiesta. Questo meccanismo garantisce che il server resti disponibile per altre connessioni. Esempio Pratico: Trasmissione Multicast Un esempio classico di trasmissione multicast è l'interazione tra browser e Web server. Il server HTTP rimane in attesa sulla porta 80 e crea un thread dedicato per soddisfare ogni nuova richiesta di connessione, garantendo così servizi a più utenti contemporaneamente.
Architettura a Livelli e Strati
Le applicazioni client-server moderne sono organizzate in livelli (tier) e strati (layer), fornendo una struttura modulare e scalabile. Livelli (Tier) Ogni livello corrisponde a un nodo o gruppo di nodi di calcolo distribuiti, con il seguente funzionamento: - Un livello agisce da server per i suoi client nel livello precedente. - Lo stesso livello funge da client per il livello successivo. Strati (Layer) Dal punto di vista funzionale, ogni strato rappresenta un livello di astrazione. In generale, un'architettura client-server si basa su tre strati principali, noti come modello three-tier: - Presentation Tier (Front-End): L'interfaccia utente. Comprende maschere di input e moduli per la creazione di documenti HTML (es. Java Servlet, script PHP, ASP). - Business Logic Tier (Middle Tier): Il cuore della logica applicativa. Contiene algoritmi e definizioni delle relazioni tra le diverse entità (es. operazioni su conti bancari o acquisti online). - Data Tier (Back-End): Gestione dei dati persistenti tramite database. Se implementato con un DBMS, viene chiamato Data Access Layer (DAL). > Suggerimento per immagine: Inserire un diagramma che rappresenta l'architettura three-tier, con i tre livelli distinti: front-end, middle tier e back-end. Unione di Livelli e Strati In molte architetture moderne, livelli e strati si sovrappongono, creando sistemi complessi e flessibili. La suddivisione consente inoltre di gestire applicazioni enterprise con: - Numerosi utenti concorrenti. - Logica applicativa sofisticata. - Dati distribuiti e organizzati in grandi archivi. - Elevati standard di sicurezza. Architetture a 1 livello (1-tier) Storicamente, a partire dagli anni Settanta, le architetture si riducevano a un solo mainframe al quale erano collegati i terminali “stupidi”: quindi tutta l’elaborazione era effettuata dall’elaboratore centrale e i terminali servivano solo per le fasi di I/O.Questa architettura non rientra nella tipologia client-server e può essere classificata come architettura a un solo livello (1 tier) ed è la situazione che si presentava prima dell’avvento dei sistemi distribuiti, come mostrato nella figura.
Architettura a Due Livelli (2-Tier) Con l'avvento delle reti locali negli anni Ottanta, hanno preso forma le prime architetture client-server a due livelli, dove le funzionalità erano suddivise tra: - Un livello server, responsabile dell'elaborazione e gestione dei dati. - Un livello client, che si occupa dell'interfaccia e, in alcuni casi, della logica applicativa. Modelli di Architettura a Due Livelli - Modello Thin-Client In questo modello:- Il server gestisce sia la logica applicativa che la gestione dei dati.Il client si occupa esclusivamente della presentazione dei dati. - Modello Thick-Client (o Fat-Client) In questo caso:- Il server è responsabile della gestione dei dati.Il client gestisce sia la presentazione che la logica applicativa.
Evoluzione delle Architetture a Due Livelli Verso la fine degli anni Ottanta, con l'aumento della potenza di calcolo dei PC, il modello thick-client ha iniziato a diffondersi. Questo approccio ha permesso la distribuzione della logica applicativa sui client, favorendo la connessione tra host eterogenei, superando le limitazioni dei sistemi mainframe. Limiti del Modello a Due Livelli Sebbene efficace per le reti locali, questa architettura ha mostrato limiti di scalabilità. Il server deve gestire lo stato della sessione di ogni client, limitando il numero di connessioni simultanee che può supportare. Read the full article












