Programmare il Web


Home Page | Commenti | Articoli | Faq | Documenti | Ricerca | Archivio | Storie dalla Sala Macchine | Contribuire | Login/Register

Questo articolo vuole essere un punto di inizio per una serie di articoli e documenti relativi alla programmazione e sviluppo di applicazioni Web-Based.

La programmazione di applicazioni con interfaccia incentrata sul Web ha iniziato a prendere "piede" solo da alcuni anni a questa parte, in Italia specialmente, solo negli ultimi due anni, fondamentalmente si tratta di un passo addizionale nella creazione di applicazioni che sono in grado di ricevere e scambiare informazioni attraverso il Web Browser, applicazioni che sono state ideate inizialmente al solo scopo di rendere piu' "interattive" le pagine Web.

Siccome ne faremo molto uso, e se ne sente spesso parlare, sara' meglio fare una piccola digressione per spiegare il significato di molti dei termini utilizzati.

Web o WWW - Identifica un particolare "servizio" disponibile sulla rete Internet, cioe' la consultazione on-line di documenti pubblicati da societa' e/o privati. In molti casi (e soprattutto negli ultimi tempi) il Web ed Internet sono stati molto confusi al punto tale che quando si parla di Internet spesso si parla solo di Web.

Web Browser o Browser - Identifica un programma installato sul nostro computer che consente di accedere al Web, richiedere e consultare un documento Web pubblicato.

Web Server - Identifica un computer, collegato alla rete Internet, che offre il servizio Web ad altri computer che vi si collegano, quindi consente la consultazione dei documenti in esso contenuti.

Documento Web o Documento HTML o Pagina Web o Pagina HTML - identifica il singolo documento consultabile con un Browser, molto spesso chiamato "pagina" perche' all'aspetto e' una unica pagina di documento, in alcuni casi una pagina moooooolto lunga...

HTTP - E' l'insieme di caratteristiche che devono essere rispettate da un Web Server e da un Web Browser per poter "colloquiare" tra di loro e scambiarsi documenti attravero Internet.

HTML o Linguaggio HTML - E' l'insieme di caratteristiche che devono essere rispettate da un documento per poter essere visualizzato da un browser in modo corretto.

Quando il Web fu' ideato, esso era fondamentalmente un sistema molto economico di pubblicare dei documenti. Documenti con un minimo sistema di impaginazione e di presentazione grafica, ma pur sempre documenti di tipo statico.

Il Web presentava delle pagine a video ne' piu' ne' meno come potrebbero essere stampate in un libro, solo che non c'e' nessun bisogno di trovare un editore e farlo stampare per pubblicarlo. Basta trovare un computer che fornisca un po' di spazio (ed in questo momento ce ne sono tanti).

In seguito pero', molte societa', soprattutto commerciali, avvertirono la necessita' di trasformare un documento "statico" in qualche cosa di piu' efficiente, che consentisse un certo "dialogo" con la persona che sta' dall'altra parte del video e legge il documento.

"In fondo", ragionarono i commerciali, "il Web e' un po' una brochure pubblicitaria, pero' potremmo fargli fare qualche cosa di piu' che presentare delle parole e delle fotografie".

Le basi erano gia' state piantate, occorreva solo trovare un sistema per portare "la vita" nella pagina.

La prima soluzione approntata fu' l'uso di CGI. Acronimo che sta' per Common Gateway Interface.
Questo non e' un linguaggio di programmazione, ma un "metodo" che consente ad un server Web di richiamare un programma residente sullo stesso computer, tale programma accetta dei parametri (che sono forniti dallo stesso Web server) e li usa per effettuare determinate elaborazioni o calcoli, quindi "risponde" ritornando al Web Server un documento preparato "al volo" contenente i risultati della elaborazione. In questo modo e' possibile mettere un documento sul Web che non e' una pagina "statica", ma viene calcolata e prodotta al momento in base a determinati parametri.

Per rendere migliore la comunicazione con l'utente occorreva pero' che questo potesse anche fornire dei dati attraverso il Web, venne "esteso" pertanto lo standard HTTP, in modo da incorporare elementi in grado di accettare l'input dell'utente. Sono state cosi' aggiunte alle pagine Web delle "caselle di testo" dove l'utente puo' scrivere, Bottoni da premere, liste da cui si puo' scegliere eccetera eccetera.
Tutte queste informazioni vengono poi "spedite" al Web Server che invia i corrispondenti dati all'applicativo CGI per la successiva elaborazione.

Questo ha consentito una prima fase di "interattivita'": l'utente puo' introdurre i propri dati in una pagina Web e questi sono ricevuti dal server che li puo' elaborare tranquillamente, per poi rispedire all'utente il risultato della sua elaborazione.

Il guaio restava lo scrivere i programmi che elaboravano i dati, questi potevano essere fatti in modo molto semplice se si trattava di elaborazioni semplici, ma diventavano molto complicati se l'elaborazione era molto complicata.

Inizialmente poi, tutti i Web Server erano ampiamente basati su macchine UNIX, molto potenti, i programmi CGI venivano di solito realizzati utilizzando le capacita' intrinseche di Unix di elaborazione dei dati, oppure utilizzando PERL, un "linguaggio" inventato inizialmente per rendere piu' rapida la creazione di stampe ed elenchi, le cui caratteristiche maggiori sono l'efficienza e la difficolta' a capire cosa fa' il programma dopo 5 minuti che lo si e' scritto...

Tutt'ora, tutti i Web Server supportano i CGI, questo a testimonianza di come tale soluzione sia stata impiegata in maniera estesa nel passato.

Ma le cose hanno iniziato a cambiare, soprattutto con l'arrivo di Microsoft Windows come sistema operativo per i Server.

Le specifiche CGI sono pensate infatti principalmente per macchine UNIX, dove tutte le informazioni vengono introdotte attraverso la tastiera a "linea di comando", cioe' digitando comandi direttamente, mentre in Windows la "linea di comando", praticamente, non esiste.

Microsoft fece una prima mossa introducendo lo standard WinCGI, che in sostanza "rivisitava" lo standard CGI facendo pero' passare tutte le informazioni mediante la scrittura e lettura di files sul disco del server, ovviamente una soluzione che rendeva piuttosto macchinosa la creazione dei CGI e soprattutto l'interazione con gli stessi.

Un secondo passo venne fatto con la creazione ed il rilascio delle specifiche delle ISAPI, cioe' un'interfaccia diretta per l'accesso e la comunicazione con IIS, il Web Server di Microsoft.
Utilizzando le ISAPI e' possibile ricevere le informazioni direttamente dal Web Server e "rispondere" direttamente, ottenendo una maggiore efficienza. Per contro pero', le ISAPI possono essere utilizzate solamente scrivendo una apposita DLL in C/C++, cosa che non e' alla portata di qualunque programmatore, soprattutto perche' richiede un compilatore in grado di farlo, inoltre una DLL malfatta potrebbe anche portare al blocco del Server, con conseguenze piuttosto spiacevoli...

Le ultime versioni di Visual Basic, l'ambiente di programmazione con linguaggio Basic-Like di Microsoft, sono in grado di produrre anche DLL, quindi e' possibile anche usare questo ambiente per le ISAPI.

Nel frattempo pero', anche il resto del mondo si evolveva, in particolare vedevano la luce una serie di linguaggi e tecnologie piu' o meno orientate all'ambiente Web, tra le quali Java di Sun Microsystem.

Java, inventato da Sun Microsystem, e' un linguaggio di programmazione Object-Oriented estremamente efficiente e, soprattutto, portabile. Questo significa che un programma scritto in Java su un computer Unix puo' essere utilizzato senza nessun cambiamento (o quasi) su un computer con Windows.

Java e' un vero linguaggio, dotato di un compilatore efficiente che genera codice che viene poi interpretato da un apposito programma- interprete.

Interprete, compilatore e documentazione sono disponibili gratuitamente direttamente sul sito internet della Sun (java.sun.com).

Una delle caratteristiche di Java e' che puo' facilmente produrre dei programmi che si integrano nei documenti HTML e vengono "eseguiti" direttamente nel Browser dell'utente. Tali programmi sono denominati Applet.

Inizialmente gli Applet erano utilizzati per lo piu' solo per realizzare effetti grafici, poi pero' hanno cominciato ad apparire Applet sempre piu' efficienti e sofisticati, con capacita' di eseguire compiti piu' complessi, rendendo la pagina molto piu' "attiva".

In fondo, se lo scopo della pagina e' calcolare un tasso di ammortamento, cosa importa se il calcolo viene fatto da un CGI sul server piuttosto che da un Applet Java direttamente nella pagina ? Anzi, essendo fatto il calcolo direttamente nel Browser, si risparmia una chiamata al Server e quindi il tutto e' molto piu' veloce.

Un'altra applicazione di Java si ebbe quando la giovanissima societa' Netscape, madre dell'omonimo Browser, integro' un sottoinsieme del linguaggio direttamente nel suo Browser, permettendo quindi ad un documento HTML di contenere un mini-programma che potesse essere eseguito direttamente nella pagina. Il sottoinsieme del linguaggio e' denominato JavaScript, a differenza di Java, il programma viene eseguito dal browser al momento, mentre le Applet devono essere prima compilate con il compilatore.

Un documento HTML che utilizza JavaScript al suo interno per fornire risposte agli utenti viene denominato documento HTML "Dinamico" o Dynamic HTML (DHTML).

Purtroppo le capacita' del DHTML sono piuttosto limitate e non possono superare l'ambiente del Browser in cui il tutto viene eseguito. Cose come accedere ad un database, eseguire delle ricerche etc. e' fuori dalla portata di questa tecnologia.

Ritornando alle Applet, Microsoft rispose quasi immediatamente realizzando una tecnologia equivalente, consentendo al proprio browser Internet Explorer di scaricare dalla rete ed eseguire in locale programmi particolari, denominati ActiveX, inoltre implemento' un proprio sottoinsieme di Java denominato JScript.

A tutt'oggi, le versioni di JavaScript interpretate dai due Browser, sono abbastanza compatibili, ma esistono delle differenze che non possono essere ignorate se si vuole che uno stesso documento sia "leggibile" nello stesso modo da entrambi i browser.

Un passo successivo nel portare Java verso il Web, fu la creazione del progetto Servlets. Realizzato dalla SUN in collaborazione con Apache, completamente gratuito ed ottenibile direttamente dal sito della SUN stessa ( java.sun.com/products/servlets/index.html), consente di creare dei programmi Java che "interagiscono" con il Web Server piu' o meno come fa' un CGI o una DLL ISAPI.

Inoltre, essendo un programma Java completo, una Servlet e' in grado di svolgere molteplici compiti. L'unico ostacolo vero alla diffusione delle Servlets e' che la configurazione di tutti i componenti necessari non e' affatto semplice. Negli ultimi tempi pero', l'interesse per il mondo Servlet/Java si e' acceso notevolmente. Attualmente esistono diversi Web Server che consentono l'esecuzione di Servlet, ed il nuovo standard JSDK consente di sviluppare ed installare un'intera applicazione 'impacchettandola' in un unico file compresso. Questo ha reso la tecnologia Servlet moooolto piu' accessibile ed appetibile per lo sviluppo di applicazioni. Aggiungiamo poi che uno dei principali Web Server Java-compatibile (Caucho Resin) e' anche uno dei piu' veloci esistenti sul mercato...ed e' disponibile ad un prezzo nominale.

Attualmente i Web Server che supportano Servlet sono svariati, da Apache (http://www.apache.org) a TomCat (sempre di Apache), per passare poi al gia' citato Resin ed a Netscape (iPlanet).

Purtroppo Microsoft e' rimasta insensibile alla cosa, e l'unico sistema per utilizzare questa tecnologia su IIS e' l'utilizzo di un'altro Web Server affiancato ad IIS per la sola interpretazione delle Servlet, o l'uso di congegni alquanto macchinosi e complessi.

L'ultimo passo in questa (infinita) sequenza, e' la comparsa di vari linguaggi di "scripting".

In sostanza, tutte le tecniche per rendere il Web "attivo" si basano sul fatto che un documento HTML richiama in qualche modo il server Web, il quale richiama a sua volta un programma (qualunque esso sia e comunque sia fatto), il quale alla fine produce un altro documento HTML da spedire al Browser che ha iniziato tutto questo.

Ovviamente il passo successivo e': mettere il programma direttamente dentro al documento HTML. Questo e' lo scopo dei linguaggi di Scripting.

Differenza fondamentale tra un linguaggio "normale" ed uno di Scripting e' che il linguaggio normale si basa (di solito) su di un compilatore che "traduce" il programma in qualche cosa di direttamente comprensibile dalla macchina, o comunque di incomprensibile per l'essere umano, un linguaggio di scripting invece rimane comprensibile (piu' o meno), e viene "interpretato" dalla macchina al momento dell'esecuzione.

Microsoft integro' una propria tecnologia di Scripting per il Web inserendo nel proprio Web Server la tecnologia denominata ASP: Active Server Pages, che, in sostanza, consente di inserire dentro ad un documento HTML un "programma" scritto in JScript o in una versione ridotta di Visual Basic, dove e' rimasta la sintassi Basic-Like, ma si e' persa la parte "Visual". Microsoft aggiunse ovviamente le parti necessarie al reperimento delle informazioni inserite dall'utente e alla creazione di un nuovo documento HTML di risposta, in modo che il programma potesse interagire con l'ambiente Web ne' piu' ne' meno come un CGI, l'unica differenza e' che viene inserito direttamente in una pagina HTML. Il successo di ASP e' stato tale che svariate societa' (Chili!Soft per citare la piu' famosa) hanno prodotto moduli aggiuntivi che integrano la tecnologia ASP su Web Server che ne sarebbero sprovvisti, come Apache (www.chilisoft.com).

Da parte di Sun c'e' stata l'introduzione delle JSP o Java Server Pages, dove, in sostanza, il linguaggio usato e' Java. La parte interessante e' la capacita' di richiamare direttamente da questo tipo di script programmi esterni scritti sempre in Java per eseguire operazioni impossibili dall'interno della pagina o con il linguaggio di Scripting. Al momento attuale le JSP sono utilizzabili con gli stessi Web Server che supportano Servlet.

Altro prodotto simile e' PHP, in cui il linguaggio di programmazione utilizzato e' C-Like, PHP e' stato sviluppato nel 97, a partire da un primo "embrione" che utilizzava pesantemente Perl. Le parti interessanti sono la possibilita' di accesso diretto a database esterni usando moduli aggiuntivi all'interprete stesso, PHP puo' quindi essere facilmente esteso, inoltre e' multipiattaforma, puo' funzionare su praticamente tutti i Web Server attualmente esistenti. PHP e la documentazione a corredo sono liberamente scaricabile dal sito php.net.

Vale la pena di fare qualche confronto tra le varie tecnologie a disposizione:

Tecnologia Web ServerCompilatoFree
DHTMLTutti(*)NoSi
CGITuttiSi/NoSi (1)
ServletsTuttiSiSi (2)
ASPIIS/ApacheNoSi (3)
JSPTuttiNoSi (2)
PHPTuttiNoSi

(*) Il DHTML dipende dal Browser e non dal Server.
(1) Il compilatore usato potrebbe non essere gratuito
(2) Su IIS occorre aggiungere moduli aggiuntivi che non sono gratuiti
(3) Su Apache occorre aggiungere moduli aggiuntivi che non sono gratuiti

Come si e' capito, le soluzioni non mancano, l'unica cosa che manca e' il tempo (o la voglia) di sfruttarle tutte.


I commenti sono aggiunti quando e soprattutto se ho il tempo di guardarli e dopo aver eliminato le cagate, spam, tentativi di phishing et similia. Quindi non trattenete il respiro.

4 messaggi this document does not accept new posts
giuliogiulio Di giulio - postato il 28/11/2008 14:17
puoi aggiungere anche Perl , con le stesse caratteristiche di PHP

Ciao

Giulio


Dissento. PHP/ASP et similia sono specificamente pensati per l'uso come linguaggi di scripting per pagine web, Perl no. Come non lo sono altri linguaggi che (di solito) non sono associati con il web ma possono essere usati (C/C++, Python...)


mpittmpitt Di mpitt - postato il 29/12/2008 15:37

E quando si dice "PHP as CGI" cosa si intende?


Che esegui PHP senza usare l'apposito modulo per Apache/quelchee


Anonymous coward@ mpitt Di Anonymous coward - postato il 06/11/2009 00:53

> E quando si dice "PHP as CGI" cosa si intende?
> Che esegui PHP senza usare l'apposito modulo per Apache/quelchee
php == linguaggio interpretato
quindi come fai ad eseguirlo senza il modulo per apache ( alias: interprete...)?

--
Anonymous coward


Davide Bianchi@ Anonymous coward Di Davide Bianchi - postato il 06/11/2009 11:34

> quindi come fai ad eseguirlo senza il modulo per apache ( alias: interprete...)?

Usando l'interprete di php stesso, che non e' il modulo per Apache.

--
Davide Bianchi


Precedente Successivo

Davide Bianchi, lavora come Unix/Linux System Administrator presso una societa' di "sicurezza informatica" (aka: $networkgestapo) di Haarlem. Contatti: mail: davide AT onlyforfun.net , Jabber: davideyeahsure AT gmail.com,

Volete contribuire? Leggete come!.
 
 

Il presente sito e' frutto del sudore della mia fronte (e delle mie dita), se siete interessati a ripubblicare uno degli articoli, documenti o qualunque altra cosa presente in questo sito per cortesia datemene comunicazione (o all'autore dell'articolo se non sono io), cosi' il giorno che faccio delle aggiunte potro' avvisarvi e magari mandarvi il testo aggiornato.


Questo sito era composto con VIM, ora e' composto con VIM ed il famosissimo CMS FdT.

Questo sito non e' ottimizzato per la visione con nessun browser particolare, ne' richiede l'uso di font particolari o risoluzioni speciali. Siete liberi di vederlo come vi pare e piace, o come disse qualcuno: "Finalmente uno dei POCHI siti che ancora funzionano con IE5 dentro Windows 3.1".

Web Interoperability Pleadge Support This Project
Powered By Gort