Verifica Applicazioni Web_2018_Soluzione

TRACCIA

(10 PTI) Descrivere la seguente immagine rappresentante l’architettura attuale del Web:

SOLUZIONE 1

La precedente immagine rappresenta l’architettura di comunicazione Client-Server utilizzata attualmente nel Web (non si confonda Internet con il Web). Ogni risorsa presente sul Web Server è raggiungibile dal Client, digitando nella barra degli indirizzi del Browser Web il corretto percorso URL riferito ad una specifico oggetto, per esempio una pagina web, http://www.liceotosi.edu.it/orario/definitivo1/docenti.html.
Si suppone che il Web Server sia basato sulla piattaforma software Apache impiegante il motore PHP per interpretare script lato server scritti in PHP e, il database MySQL per salvare i contenuti richiesti dinamicamente. Vediamo quali sono i passaggi per poter effettuare una tale comunicazione basata sul protocollo HTTP.

  1. Il Web browser richiede una pagina web ospitata da un Web Server: richiesta HTTP.
  2. Il Web Server verifica se la pagina richiesta dal client è statica o dinamica.
  3. Nel caso in cui la pagina richiesta sia dinamica, viene inoltrata la richiesta al motore PHP.
  4. Nel processare tale richiesta il motore PHP può incontrare codice che prevede l’accesso al database MySQL nel caso in cui sia necessario ricercare contenuti previsti per la pagina web (contenuti dinamici).
  5. Il database MYSQL riceve la richiesta (query SQL) e risponde inviando al motore PHP i contenuti richiesti (genera la pagina HTML in real time).
  6. Il motore PHP, utilizzando questi contenuti, risponde al Web Server inviandogli la pagina Web contenente codice statico HTML.
  7. Il Server Web aggiunge alla pagina anche eventuali altri contenuti statici, quali per esempio immagini, fogli di stile CSS e script lato client (come script Javascript). Risponde al Client inviandogli la pagina Web come se fosse un comune file HTML statico, tranne per il fatto che il suo contenuto, invece di provenire direttamente da un file HTML, viene fornito dall’interprete PHP. Il browser è completamente all’oscuro di tutto ciò che è avvenuto: sa solo che ha richiesto e ricevuto una pagina web.

 

 

SOLUZIONE 2

La maggior parte dei servizi offerti da Internet si basano su una particolare modalità di interazione denominata “Architettura Client/Server”, come mostrato nella precedente figura. Tale architettura software scalabile è costituita da due moduli integrati ma distinti, residenti generalmente su calcolatori diversi.

Sul computer client è in esecuzione un software applicativo (programma client) che svolge le seguenti funzioni:

  • Permette all’utente di spedire richieste di informazioni al server.
  • Formatta la richiesta in modo che il server possa comprenderla.
  • Formatta la risposta ricevuta dal server in modo che l’utente posso leggerla.

Sul computer server, invece, è in esecuzione un software applicativo (programma server) che svolge le seguenti funzioni:

  • Rimane in ascolto su una determinata porta nella eventualità di ricevere una richiesta da un client.
  • Processa la richiesta ricevuta.
  • Risponde al client spedendogli l’informazione richiesta.

La logica quindi di questa architettura può essere descritta nella seguente figura:

 

NB In generale anche un server può diventare client, nel senso che può richiedere servizi ad un altro server.

 

Nell’attuale versione il Web utilizza tecnologie sia sul lato client che sul lato server per consentire all’utente una maggiore interazione con la pagina web; in particolare sul lato server sono utilizzate tecnologie in grado di interpretare script dinamici necessari a sviluppare Web Application per lo sviluppo di pagine web dinamiche. Il meccanismo è sempre lo stesso: un host chiede un servizio o una risorsa a un server; il server, costituito da più macchine server virtuali risponde fornendogli quanto richiesto. Affinché l’interazione tra client e server possa essere effettuata è necessario che entrambe le macchine (host) utilizzino un linguaggio comune, ovvero un “protocollo applicativo”. Su Internet sono utilizzati numerosi protocolli specifici delle applicazioni, uno per ogni servizio di rete, per esempio:

  • Il protocollo HTTP (Hyper-Text Transfer Protocol), quello su cui si basa il WWW (World Wide Web).
  • Il protocollo FTP (File Transfer Protocol), per il trasferimento di file tra host.
  • Il protocollo SMTP (Simple Mail Transfer Protocol, per la posta elettronica.

Ovviamente tutti questi protocolli applicativi devono appoggiarsi sui protocolli di rete TCP/IP[1] e sul DNS per poter effettivamente scambiare richieste e messaggi attraverso la rete.

Supponiamo che uno studente richieda al Web Server Universitario l’invio dei dati relativi agli esami sostenuti sotto forma di contenuti multimediali mostrandoli a video in una pagina Web. Il Web Browser inoltra la richiesta al Web Server (utilizzando il linguaggio HTTP). Non essendo la pagina statica (pagina HTML), il Web Server inoltra a sua volta la richiesta all’Application Server (utilizzando il linguaggio JAVA) il quale interpreta il codice (lato server) in esso contenuto al fine di generare la pagina HTML. Dovendo recuperare dati contenuti in un DB, l’Application Server a sua volta inoltra la richiesta al DB Server il quale effettua un’interrogazione (utilizzando il linguaggio SQL) sul DB. Il DB Server recupera i dati e li inoltra all’Application Server per poter costruire la pagina web, in formato HTML, da comunicare al Web Server che a sua volta la spedisce al Web Browser che l’ha richiesta. Quest’ultimo interpreta il codice HTML al fine di mostrare a video i contenuti ricercati.

Analizziamo le seguenti considerazioni non prese in analisi nella figura della traccia del problema:

  • Nel Web 3.0, la tecnologia AJAX permette uno scambio continuo di dati fra client e server al fine di aggiornare dinamicamente i contenuti della pagina senza che l’utente sia obbligato a ricaricare la pagina.
  • Il Proxy Server è il server che si interpone fra il client e il server e svolge la funzione di agente: le richieste fatte dal client non arrivano direttamente al server, ma al proxy server. È quest’ultimo che si preoccupa di fornire al client, in modo trasparente, le informazioni richieste. Il proxy dispone di una propria “cache”, nella quale memorizza tutti i documenti recuperati negli ultimi tempi. Se un utente richiede di caricare un documento che è già presente nella cache, il proxy provvede a spedirglielo direttamente senza contattare il server remoto, e quindi in tempi più brevi. Se invece il documento non è presente nella cache, il proxy contatta il server remoto, recupera il documento, lo gira al client e lo memorizza nella propria cache.
  • Il DNS Server. Il sistema dei nomi di dominio (in inglese: Domain Name System, DNS), è un sistema utilizzato per la risoluzione di nomi dei nodi (gli host) della rete locale o geografica (per esempio http://www.liceotosi.edu.it) in indirizzi IP. Il servizio è realizzato tramite un database distribuito, costituito dai server DNS. Il DNS ha una struttura gerarchica ad albero rovesciato ed è diviso in domini (com, org, it, ecc.). Ad ogni dominio o nodo corrisponde un nameserver, che conserva un database con le informazioni di alcuni domini di cui è responsabile e si rivolge ai nodi successivi quando deve trovare informazioni che appartengono ad altri domini.
  • Chiamato anche ISP Internet Service Provider, è un fornitore di servizi a privati e ad aziende che a pagamento consente l’accesso a Internet, disponendo di differenti punti all’interno di un certo territorio; questi punti si chiamano POP. I provider più noti in Italia sono Telecom, Tiscali, Fastweb e tutti, oltre alla possibilità di accedere a Internet, offrono spazi Web per costruire un sito e registrare il proprio dominio, nonché caselle di posta elettronica.

[1] Si veda la famiglia dei protocolli TCP/IP.