Appunti di informatica : tecnologie web

di Marcello Galli


Applicativi di rete, prima del web

Applicativi per lo scambio di dati in rete nascono con la rete stessa.
Negli anni 80, in particolare, lo sviluppo delle prime grandi reti di computer porta alla diffusione di una serie di protocolli ed applicativi per lo scambio di informazioni, i principali furono:



La nascita del web

Il Web vero e proprio nasce negli anni 1990-92, al CERN, ad opera di Tim Barners-Lee ed altri. Tim Barners Lee definisce un sistema client-server, ove un programma server fornisce a richiesta pagine ipertestuali ai clients. Il protocollo di trasferimento e' l'HTTP, un protocollo che veicola semplici richieste testuali e viaggia su TCP/IP. Il linguaggio in cui sono codificati i documenti trasmessi e' l'HTML, un formato di pagine testuali, entro cui sono inseriti marcatori (tags) che specificane le funzioni logiche delle parti del testo.

L'HTML specifica solo la struttura logica del testo, come: paragrafi, interruzioni, separatori, titoli di varia importanza (headers), immagini, vari tipi di liste, tabelle e links. Il formato di presentazione del testo e' lasciato completamente al client, che autonomamente, in base ai tags, decide il formato grafico del il testo. Nella figura a lato l'aspetto del primo browser web, sviluppato al CERN, il browser si chiamava: WorldWideWeb, il CERN produceva anche un server, che ha avuto diffusione per molti anni, ma e' stato ormai completamente rimpiazzato dal server: Apache, anche questo gratuito, ma piu' attento alle esigenze commerciali ed all'espandibilita'.

browser di Tim Barners Lee

L'HTML si rifa all'SGML ( Standardized Generalized Markup Language) , lo standard ISO 8879, per un linguaggio testuale con dentro dei tags, racchiusi fra i simboli: "<" ed ">", che danno specifiche per gli elementi del testo stesso. In realta' l'HTML non e' perfetamente conforme all'SGML e non lo implementa completamente.

Con l'HTML viene anche introdotta l'URL (uniform resource locator) , un modo unificato di indirizzare risorse di tipo diverso presenti sulla rete, utilizzato dai links. Il formato completo di un URL e':

protocollo://username:password@host:porta/directory/file.ext?parameter=value&par=value#anchor

i campi hanno il seguente significato:

Il vero successo del web inizio' con la diffusione del browser Mosaic, di Marc Andressen all'NCSA (National Center for Supercomputing Applications) dell' Illinois University, nel 1993. Questo browser aveva buone capacita' grafiche, ed integrava bene testo ed immagini. In pochi anni la maggior parte del traffico internet fini' per essere http, e gli altri sistemi informativi, come il gopher, pian piano sparirono. In figura l'interfaccia del Mosaic

mosaic


La Netscape

Nel 1994 by Marc Andreessen e Jim Clark fondarono la Netscape, e produssero il browser omonimo. Il Web si sviluppo' assieme alla Netscape, che per vari anni defini' lo sviluppo del web e dell'HTML, adattando le idee di Barners-Lee alle necessita' commerciali che stavano emergendo. La Netscape forniva gratis il browser a tutti, a pagamento il server e servizi, la distribuzione gratuita del browser fu una delle chiavi di successo della Netscape, in pratica in pochi mesi tutti si misero ad usare Netscape, il Mosaic fu dimenticato, anche se l'NCSA lo abbandono' definitivamente solo nel 1997.

In questo periodo Vennero introdotti nei browser i CSS : (cascade style sheet), ovvero specifiche dettagliate di formattazione, che venivano affiancati ai tag HTML per permettere, da parte degli autori delle pagine, un controllo piu' stretto sulla rappresentazione degli ipertesti, prima lasciata all'arbitrio del browser.

La Netscape contribui' molto allo sviluppo del web, anzi si puo' sostenere che il web e' un prodotto della Netscape, fra le altre cose la Netscape:

  • partecipo' alla definizione dei CSS e li porto' sul mercato col suo browser;
  • defini' il protocollo HTTPS, una versione crittografata dell'HTTP, adatta alle transazioni commerciali;
  • introdusse i cookies: la richiesta di pagine web e' un processo stateless:, ovvero ogni richiesta fa storia a se, ed il server non la mette in relazione con richieste precedenti; i cookies permettono invece di simulare una connessione continua fra browser e server. Il cookie e' infatti un'informazione che il server passa al browser e che il browser restituisce alle visite successive, in modo da poter essere riconosciuto; in questo modo si possono ad esempio riempire moduli composti di piu' pagine web (il server sa chi siete e che dati gli avete gia' dato), gestire semplici sistemi di autenticazione, mantenere pieno il "carrello della spesa" nei negozi on-line;
  • introdusse Javascript, un linguaggio di programmazione che ha come variabili gli emlementi della pagina web, javascript viene eseguito sul client e permette animazioni, ed una certa interattivita' da parte delle pagine web (DHTML: Dynamic HTML). E' ad esempio utilizzato per il controllo dei dati inseriti in moduli (form) da inviare poi al server.
netscape browser

La netscape produceva anche un server, che aveva la possibilita' di eseguire script associati alle pagine da mandare ai client, in modo da permettere la creazione di sistemi per uso interattivo e commerciale, non solo per semplice diffusione di immagini ed informazioni.

Il browser ebbe uno sviluppo veloce, in parte caotico, e divenne un programma enorme, non esente da bachi, che finiva per integrare funzioni diverse, come ad esempio Mail e Newsgroups.

La Microsoft inizio' ad entrare nel business del web relativamente tardi, attorno al 1995-96, con il browser Internet Explorer (IE), una brutta copia di Netscape, derivato da un browser tipo Mosaic della societa' Spyglass. IE fu distribuito assieme a Windows 95.

In questo periodo avevamo:

Segui' una guerra commerciale fra la Netscape e la Microsoft, la Microsoft utilizzo' la sua posizione di monopolista del sistema operativo dei PC per buttar fuori dal mercato la Netscape, che nel 1998 fu comperata da AOL (America On-line, un grosso network provider americano). Il codice del browser Netscape fu reso pubblico, ma ci vollero anni perche' un gruppo di sviluppatori semi-indipendentene venisse a capo e ne tirasse fuori quello che ora e' il browser Mozilla. Questa operazione di pirateria commerciale ebbe lunghi strascichi legali, ma la Microsoft, benche' riconosciuta colpevole, riusci' ad uscirne indenne.

Come risultato lo sviluppo del web si fermo'; la Microsoft non sviluppo' ulteriormente il suo browser, limitandosi ad introdurre gadget che mischiavano nell'HTML standard e varianti proprietarie ed a spingere l'HTML verso tecnologie di cui aveva l'esclusiva, come le pagine ASP.

Il fatto che l'HTML ed il web si siano sviluppati in una confusa situazione di guerre commerciali, costituisce un'eredita' pesante e tuttora gli standard sono in una situazione confusa; il DOM (Document Object Model, ovvero la definizione del documento web come insieme di variabili per un linguaggio di scripting come Javascript), e' definito dal consorzio W3C, ma e' implementato in modo incompleto ed in parte incompatibile dai diversi browser; tuttora la Microsoft spinge il web verso tecnologie proprietarie, stravolgendo gli standard ed introducendo incompatibilita'. Diviene difficile scrivere pagine web dinamiche che siano interpretate correttamente dai diversi browsers. E' anche difficile scrivere pagine che siano rappresentate nello stesso modo da diversi browser.

Ma intanto le tecnologie web si sviluppano in funzioni di necessita' commerciali, quali le transazioni commerciali fra ditte, i negozi on-line, o la diffusione di pubblicita'; il web viene anche utilizzato per trasmettere brevi filmati, spesso pubblicitari, utilizzando i browser con aggiunte (plug-in) di terze parti, come per i filmati flash (della Macromedia). l'HTML smette i evolversi ed il web prende una strada diversa: l'ultima versione delle specifiche dell'HTML, la 4.0, e' del 1997, la 4.01, con piccole correzioni, e' del 1999.



Sviluppi successivi ed XML

Con l'uso del web per il commercio si trova che l'HTML e' troppo limitato, occorre trasmettere dati che non siano semplicemente testi, corredati da una loro descrizione logica o indicazioni di formattazione, ma descrizione di prodotti, prezzi, dati di clienti, tutto questo in modo diverso a seconda del prodotto che si sta trattando. Si va in questa direzione con l'XML.

Nell'XML ( Extensible Markup Language) i tag non sono piu' quelli dell'HTML, ma possono essere qualunque, nomi di clienti, di prodotti etc. etc. e sono definiti a parte, nella DTD (Document Type Definition ), che puo' essere in una sezione del documento stesso od in un file separato. I tag dell'XML hanno struttura gerarchica, e sintatticamente sono simili a quelli dell'HTML, delimitati da: < > , con attributi etc., ma con regole piu' rigide, ad esempio ogni tag aperto con va terminato con , gli attributi vanno fra doppi apici etc..

Nell'HTML, come pensato da Tim Barners-Lee, i tags erano semplicemente una descrizione logica della struttura del testo, nell'HTML istruzioni sulla presentazione grafica del testo (formattazione) sono assenti e la formattazione e' lasciata completamente al browser. Contenuti e rappresentazione sono ben separati.

Ma siccome il linguaggio umano mischia insieme forme e contenuti ed usa spesso le forme per esprimere contenuti, l'idea alla base dell'HTML e' destinata a fallire. Ed infatti quando l'HTML si diffonde l'autore vuole decidere in che modo viene rappresentato il suo testo, definendo i caratteri (fonts), le posizioni esatte delle figure etc. etc.. Da questa esigenza nasce il CSS. Ma il CSS ha possibilita' limitate, il browser continuta a decidere in modo autonomo come rappresentare le pagine e nell'HTML si finisce per mescolare contenuti e forme, con le forme che in parte sono definite dall'HTML e dal CSS, in parte decise dal browser, ed in modo diverso da diversi browsers.

Nell'XML struttura logica del documento e rappresentazione tornano ad essere separati, la descrizione del formato passa dal CSS all'XSL ( Extensible Stylesheet Language ), e viene introdotto un nuovo elemento di astrazione nel documento: l'XML descrive la struttura della struttura logica, ovvero non si interessa di quali sono i tags, ma semplicemente di come sono scritti. La formattazione e' lasciata tutta all'XSL.

Tutto questo per ragioni pratiche:

In informatica l'astrazione ha una funzione pratica, permette di risparmiare tempo nella scrittura del software.

L'HTML non e' compatibile con l'XML, la versione compatibile e' l'XHTML 1, che e' l'HTML ridefinito secondo una una sintassi piu' rigida, che facilita il lavoro del parser (tag sempre chiusi, attributi fra apici etc. etc.) Una versione 2 dell'XML e' ancora in fase di sviluppo nel 2005, ed ha tag diversi dall'HTML, per cui non e' compatibile con l'HTML.

A tutt'oggi (2005) non sono esistono veri browser XML anche se IE e Mozilla permettono di accedere a documenti XML; l'XML non viene quindi utilizzato per le pagine web, ma sta prendendo piede come formato interno per rappresentazione e scambio di dati fra applicazione di rete e non, ad esempio il formato interno degli editors OpenOffice.org e AbiWord e' XML, anche Microsoft Office usa internamente XML, ma si tratta di un XML proprietario, con varianti Microsoft. XSL viene trattato in modo diverso da browser diversi, anche questa tecnologia non si e' diffusa per il web.


L'altra evoluzione del web e' l'utilizzo sempre crescente di database e di procedure che girano sul server per generare pagine HTML al volo, a partire da dati del database. Questo e' permesso dall'aumento delle potenzialita' di calcolo, che permettono di affidare ai server compiti sempre piu' onerosi, che con Javascript si cercava, per quanto possibile, di trasferire al client. La prima implementazione di questo sistema viene effettuata con la tecnologia dei CGI (common Gateway Interface), con questo sistema non si richiede piu' un documento al server, ma la richiesta e' diretta ad un programma che produce il documento che il server invia al client.

Anche i browser si evolvono, ad essi vengono abbinati plug-in per contetuti video e multimediali, e sono utilizzati, via gateways, per accedere a tutti i servizi di rete, come Mail, Newsgroups IRC etc. etc. Il browser diventa uno strumento unificato per l'accesso alla rete.

Il passo successivo e' quello di usare il web non solo per fornire contenuti, ma anche veri e propri servizi ed applicativi interattivi. Sigle molto commerciali, come RIA (rich internet applications) od "Internet 2", si riferiscono, appunto, a questa tendenza.



Sistemi client-server evoluti



Le tecnologie web tendono quindi a convergere verso il seguente schema:



Schema  client-server web


La filosofia e' quella di un sistema client-server, ove un programma client, tipicamente un browser web, corre su un PC per interagire via rete con un programma server (un server web), che gli offre servizi come informazioni, commercio elettronico etc.

Il browser corre su un PC e puo' essere Internet Explorer, Netscape, Mozilla od altro, il linguaggio utilizzato e' HTML, (in certi casi XML), e contiene CSS per specifiche di formattazione del testo, e procedure javascript per eseguire funzioni semplici sul client, come controllo di formulari o per animare le pagine.

Il collegamento fra server e browser e' fornito da internet ed il protocollo utilizzato per la comunicazione e' http, oppure la sua versione criptata: https.

Il server e' una macchina potente, ma puo' essere anche un semplice PC, in funzione del carico cui e' sottoposto. Possimo avere un server Unix, di IBM, Sun o altri, oppure un server Linux, la Microsoft fornisce varie versioni del suo sistema operativo per i server: NT, XP professional, Windows server 2003.

Sul server gira un programma "web-server", che puo' essere Apache, IIS della Microsoft od altri. Questo programma fornisce pagine al client, in genere attingendo informazioni da un database, che puo' essere sul server stesso o su un'altra macchina, e fa le pagine "al volo", quando sono richieste, in base alle necessita'. Il server, utilizzando il sistema dei cookie, simula una connessione continua col client, riceve informazioni e richieste dal client, tramite moduli web (forms), e scrive i dati ricevuti nel database.

Il software che permette al server di fare pagine al volo e di collegarsi al database e' il PHP oppure l'ASP della Microsoft. Si tratta di veri e propri linguaggi di programmazione, utilizzati per creare procedure di interfacciamento, il client non vede il PHP, ma solo le pagine HTML che le procedure PHP (che corrono sul server) gli preparano. Sul server ci sono infatti pagine web che contengono, mischiati, codice HTML ed istruzioni PHP che operano sulla pagina stessa; l'interprete PHP sul server esamina la pagina, esegue il codice PHP contenuto, e quindi manda al client la pagina HTML risultante.

Il server gestisce anche collegamenti criptati con le banche per i pagamenti con carte di credito. I sistemi piu' sicuri non conservano i dati delle carte di credito nel database, ma li mandano direttamente alla banca, che li controlla e gli risponde con un benestare alla transazione.

Questo schema viene spesso identificato dall'acronimo WAMP :Windows+apache+mysql+php, oppure LAMP: Linux+apache+mysql+php, ed e' anche utilizzato su siti web amatoriali, per realizzare forum, notiziari etc. con costi ridotti. Si parla oggi di CMS (content management system) o di "portali" per indicare prodotti integrati che, secondo questo schema, permettono di realizzare siti web con alto gradi di interattivita' e contenuti dinamici.
Si trovano gia' pronti pacchetti software gratuiti basati su PHP per realizzare queste cose, ma esistono anche diversi prodotti commerciali. Il php ha avuto recentemente grande sviluppo e diffusione contiene moltissime funzioni, che lo rendono un linguaggio molto versatile, dedicato alle tecnologie web.




Schemi analoghi a questo possono essere realizzati utilizzando il linguaggio Java, della Sun. Java puo' correre sia sul lato client che sul lato server, ed anche stabilire connessioni di rete fra client e server senza utilizzare l'http. Ha anche funzioni per interfacciarsi con diversi database. E' un linguaggio molto completo, utilizzato costruire sistemi commerciali client-server di grosse dimensioni.
Le applet Java sono programmi Java inviati dal server al client in forma di Byte-code (una specie di pre-compilato) ed eseguiti sul client.
I "Java servlet" sono invece programmi Java che corrono sul server ed a cui vengono inoltrate le richieste dei clients, sono questi programmi che generano le pagine che vengono poi mandate ai clients. La struttura di un servlet e le sue funzioni di base sono in gran parte gia' definite e pronte per l'uso, l'utente deve solo scrivere alcune routines per adattare il servlet alle sue necessita'.
I servlet sono fatti partire da apposite componenti del server web, quali: "Apache Tomcat", JBOSS, JRUN della Macromedia, od altre; sono queste componenti che inizializzano i servlets, e gli passano le richeste e gestiscono le connessioni, ricordando le richieste precedenti dei clients.
Le "Java Server Page" (JSP) sono pagine web che contengono insieme specifiche html e codice java; analogamente a quanto avviene con il linguaggio PHP. Le pagine, sul server, vengono trattate da un compilatore, che le usa per generare un servlet. Ci sono molte classi Java gia' pronte per lavorare con le JSP.




Sempre in quest'ottica si pongono le tecnologie AJAX (Asynchronous JavaScript and XML), usata da certe applicazioni di google, e molto di moda nel 2007; AJAX sfrutta il fatto che il browser puo' lavorare in modo asincrono rispetto alla visualizzazione della pagina; effettua quindi collegamenti al server, mentre le pagine vengono mostrate, in modo da fornire all'utente vere e proprie applicazioni invece che pagine web statiche. Per far questo utilizza un misto di HTML, XML, CSS e Javascript e, per fare le richieste asincrone, l'oggetto Javascript: XMLHttpRequest, introdotto inizialmente dalla Microsoft nell'ambito delle sue tecnologie ASP ed ora adottato dalla maggior parte dei browser. Si tratta di una tecnologia abbastanza complessa, resa difficile dal fatto che i browser si comportano in modo diverso nell'intendere la pagina e visualizzarla. Sono ad ogni modo disponibili tool Javascript gia' pronti che facilitano il lavoro.


Zope e' un altro prodotto utilizzato per costruire applicativi web: integra un web server ed un database, inoltre ha funzionalita' simili ad un linguaggio di scripting dal lato server. Utilizza il linguaggio Python

Ruby on Rails, che utilizza il linguaggio Ruby, e' un altro prodotto per costruire applicazioni web in modo facile e veloce, molto di moda nel 2007.




Un altro acronimo venuto di moda nel 2002-2003 e'SOA, che sta per: "service oriented architecture". Il termine e' un po' vago ed indica la tendenza a costruire sistemi che forniscano ai clienti servizi via rete, piuttosto che a fornire al cliente computers, su cui implementare i servizi.

Anche qui, in genere, vediamo strutture client-server, con server multipli e sistemi per individuare i servizi in modo automatizzato. Il client, al solito, e' un browser, tipo Explorer o Mozilla, il protocollo di trasporto e' HTTP, quello del web. I dati viaggiano codificati in XML, organizzati secondo standard appositi, come SOAP: "service oriented architecture protocol". Sui server corrono programmi dedicati, spesso scriti in Java, che forniscono servizi ai diversi client (application servers).

Queste architetture, spinte da grosse ditte come Sun, IBM ed altri, attorno al 2003 vanno rimpiazzando vecchi sistemi di comunicazione fra aplicativi commerciali (CORBA, DCOM).