Sommario
< Home
Stampa

Web Server e Web Applications

Prima del World Wide Web

Internet nasce nel 1983 dalla rete ARPANet (rete militare degli USA usata anche a fini di ricerca), dallo sviluppo dello stack di protocolli TCP/IP, e dallo sviluppo del sistema operativo Unix come sistema operativo di rete. Internet negli anni ’80 è una rete principalmente utilizzata in ambito accademico e scientifico e consente un insieme di servizi di informazione e comunicazione come Usenet, FTP, mail, Telnet. Internet negli anni ’80 si globalizza raggiungendo reti di ricerca in tutto il mondo, anche se resta principalmente una rete che collega università centri di ricerca e organizzazioni governative, fisicamente connesse con cavi dedicati e utilizzata da una minoranza di esperti qualificati per scambiare informazioni di tipo scientifico. Gli ostacoli al raggiungimento della maggioranza della popolazione erano due: la mancanza di reti che raggiungessero le abitazioni (e le piccole aziende) e le competenze richieste per raggiungere le risorse informative e di comunicazione.

E’ da qui che nasce l’idea di sviluppare una specie di “sistema informativo globale” utilizzando il concetto di ipertesto, cioè di una pagina di testo in grado di contenere immagini e soprattutto collegamenti ad altre pagine, in modo di consentire all’utente di sfogliare le pagine in modo collegato tra di loro. L’obiettivo era di raggiungere la grande massa, e furono fatti diversi esperimenti in questo senso come il programma Gopher (un antenato del browser).

Il World Wide Web

Nel 1991 un informatico del CERN, Tim Berners Lee[1], concepisce una nuova tecnologia in grado di risolvere definitivamente il problema. La sua idea è di realizzare un nuovo protocollo, HTTP, basato su TCP, che consente uno scambio di richiesta-risposta tra un client ed un server tramite documenti testuali. Il Server HTTP mette a disposizione del cliente dei documenti di testo in formato HTML, un linguaggio di markup che permette di mostrare testi formattati contenenti immagini e collegamenti ad altre immagini, ognuna caratterizzata da un identificatore unico. Questo identificatore unico, chiamato URL, identifica univocamente una specifica pagina o risorsa, non solo nel server web, ma nell’intera rete Internet. La URL viene poi decodificata da un altro server, che trasforma il nome del computer in un indirizzo IP, il DNS.

Lato client è previsto un programma, detto browser, dove L’utente deve solo digitare la URL, mentre il browser fa tutto il resto: richiede la decodifica della URL in un indirizzo IP, avvia la chiamata HTTP, riceve la risposta HTML, trasforma l’HTML in testo formattato (render) e poi carica (sempre tramite URL e chiamate HTTP) i documenti collegati, come le immagini o altro ancora. La pagina che vediamo pronta per essere vista è in realtà frutto di molteplici chiamate al server (o a più server) per ottenere tutti gli elementi che la compongono (detti anche “asset”).

Nel modello concettuale di Berners Lee, il server è chiamato sito, la URL stessa viene chiamata “indirizzo“, e la schermata corrente viene chiamata “pagina“, e nella pagina oltre a testo ed immagini sono presenti opportuni collegamenti (detti “ancore” o “link“) per accedere, con un click e secondo il meccanismo dell’ipertesto[2], ad altre “pagine”, tramite caricamento da browser che riesegue tutta la procedura da capo caricando una nuova pagina HTML e i suoi allegati.

Siccome la URL è un riferimento globale ad una risorsa, essa può fare riferimento ad una pagina dello stesso sito (link interno) o su un altro host remoto (link esterno). Questo rende possibile collegare una pagina di un sito a pagine di altri siti, dove qualsiasi pagina può connettersi all’indirizzo di altre pagine come se fosse tutto parte di un unico sistema di informazione globale. L’idea di Tim Berners Lee era infatti quella di creare un grafo orientato ciclico[3] globale, o una “ragnatela” da cui appunto il termine “World Wide Web” (la “ragnatela globale”) su cui si basa oggi quasi tutta la struttura informativa della rete Internet.

L’invenzione dl Tim Berners Lee apre le porte alla diffusione di massa di Internet, che finalmente raggiungerà i personal computers grazie all’invenzione di dispositivi economici di comunicazione come i i modem (dispositivi che usano la rete telefonica per connettersi ad Internet) e negli anni ’90 c’è una esplosione di nuovi siti e servizi di informazione. Internet diventa quindi uno strumento realmente di massa (soprattutto nei paesi occidentali).

Siti dinamici e web application

Nella concezione iniziale il server web http è concepito come un software che accetta richieste HTTP, poi in base alla URL reperisce nel file system la risorsa richiesta (la pagina html), la carica e la restituisce nel body della risposta http. La pagina html è una pagina statica già preparata in anticipo e pronta per essere inviata. Sono previste le form nell’HTML che permettono all’utente di inviare alcune informazioni tramite modulo, ma queste vengono memorizzate in files sul server per essere poi elaborati da altri software esterni al server web in un secondo momento.

Qui viene mostrato il modello concettuale.

Questo modello di web “statico” aveva quindi il limite di non avere nessuna dinamicità e una limitata interattività, e non esisteva alcuna sicurezza o riservatezza sui dati. Non era quindi possibile interagire, comunicare, caricare propri contenuti. Il web restava uno strumento di consultazione passiva, dove al massimo si potevano inviare informazioni non in tempo reale.

Intorno alla fine degli anni ’90 si cerca di risolvere questo problema con l’introduzione del concetto di sito web dinamico (noto col termine di marketing “web 2.0“). In questo modello il server web riceve la chiamata http, ma anzichè caricare una risorsa statica dal file system, passa la richiesta ad una web application che produce una pagina html di risposta. La web application è una vera e propria applicazione, con un input ed un output gestiti in tempo reale, che elabora la richiesta e produce la risorsa richiesta dal web server al momento. Qui lo schema concettuale:

Per capire come funziona useremo il modello che fina da subito si è imposto, ovvero quello di PHP (“PHP: Hypertext Preprocessor”), che a lungo è stato ed è tuttora il principale sistema di gestione delle pagine dinamiche, poi replicato con JSP/Tomcat (Java), e ASP.NET (C#) ed altri linguaggi. In questo modello la pagina che si trova nel filesystem (che viene predisposta dal programmatore) è in un file sorgente che contiene codice misto PHP e HTML, detta “pagina PHP”.

Qui un esempio di pagina PHP:

Pagina PHP

<!DOCTYPE html>
<html>
        <body>
               <h1>My static title</h1>
               <div>
                       <?php 
                               $saluto="Hello world"; 
                               echo $saluto; 
                       ?>
               </div>
        </body>
</html>

Questo codice viene elaborato da un interprete PHP che lato server genera una pagina HTML a partire dalle istruzioni PHP. La pagina che viene generata è quindi sempre in HTML e viene inviata tramite HTTP Response al browser.

Pagina HTML

<!DOCTYPE html>
<html>
        <body>
               <h1>My static title</h1>
               <div>
                       Hello world
               </div>
        </body>
</html>

Siccome si usa un linguaggio di programmazione ad alto livello (PHP è derivato dal linguaggio C) è ovviamente possibile scrivere applicazioni anche complesse che sono in grado di prelevare informazioni da database, altri servizi internet, filesystem, leggere le form in tempo reale, e quindi elaborare e gestire informazione e comunicazione. La applicazione server (application server) si ricorda segue un modello uno-a-molti, e quindi permette di gestire la comunicazione e la condivisione in tempo reale tra molti utenti, aprendo quindi enormi possibilità nella costruzione di un Internet condiviso.

Per il browser questo processo è del tutto trasparente: esso riceve infatti una pagina html e si comporta allo stesso identico modo che nel web statico.

Grazie a questa architettura e le relative tecnologie è possibile quindi:

– inserire contenuti dinamici: il linguaggio lato server può usare un database e svolgere operazioni tipiche di un linguaggio ad alto livello;

– creare interattività: è possibile analizzare le form ricevute e processarle, inviare informazioni in tempo reale, gestire agiornamenti, ecc.;

– gestire sicurezza e sessioni: si possono inviare codici univoci al singolo client per garantire continuità tra più chiamate dello stesso utente.

Grazie al Web 2.0 la comunicazione diventa molti a molti e rende possibile la possibilità per gli utenti a contribuire allo sviluppo dei contenuti su Internet, oltre a rendere possibili un grande numero di applicazioni, come i social network, gli ecommerce, la collaborazione professionale e non, la condivisione di scienza, cultura, svago, ecc. a livello globale tramite un accesso non controllato dall’alto. E’ grazie al Web 2.0 che Internet diventa realmente utile e che rende possibile l’accesso veramente a tutti. Il web dinamico è una delle più diffuse architetture, e pur avendo avuto nel tempo varie evoluzioni, che vedremo, rimane uno dei capisaldi della progettazione web odierna.

PHP in particolare è ancora oggi (nelle sue evoluzioni) il linguaggio di programmazione più diffuso del web, quello che ha dato vita al web moderno, coi social network (Facebook), gli ecommerce (Amazon ma anche la quasi totalità degli altri siti di ecommerce), i blog (WordPress), e i CMS (come Joomla o Drupal, prodotti che consentono a chiunque di creare un proprio sito dinamico), ed infine i siti di forum di discussione (VBullettin). Java e .NET sono invece più utilizzati dalle grandi aziende per offrire servizi web più legato a servizi aziendali, come le banche o le telecomunicazioni.

Vedremo nella prossima lezione, come a questo modello si affianca ed in alcuni casi viene sostituito, quelli dei Web Services.


[1] Il primo browser sperimentale, Mosaic, è in realtà del 1993, e il primo browser utente è Netscape Navigator, del 1994.

[2] Un ipertesto è un insieme di documenti collegati tra loro. Il collegamento avviene tramite opportune parole o frasi opportunamente marcate, che contengono il riferimento ad un’altra pagina. L’ipertesto è quindi un grafo (una struttura connessa di nodi) orientato (i collegamenti sono direzionali) ciclico (è possibile direttamente o indirettamente tornare alla pagina iniziale).

[3] Un grafo orientato ciclico è un grafo dove gli archi sono orientati, ed è eventualmente possibile tornare saltando da un nodo all’altro al nodo di partenza.