Appunti sul funzionamento
dell’architettura client/server
Questa dispensa rappresenta una schematizzazione degli argomenti che verranno
approfonditi in laboratorio quali il Mysql e il PHP
Classe 5B – Itis “G.Marconi” - Jesi
Docente: Mantini Stefania
INDICE
1
L'HTML E LE PAGINE STATICHE
2
LE PAGINE WEB DINAMICHE
3
WEB SERVER
Impiego dei Server Web
4
PIATTAFORME SOFTWARE
LAMP
WAMP
XAMPP
5
CGI
4
DBMS
Database relazionali e RDBMS
MYSQL
5
Il linguaggio PHP
Appunti sul funzionamento dell’architettura client/server - pag. 2
L'HTML e le pagine statiche
Lo standard ormai stabilito per la diffusione di documenti sul web è il linguaggio HTML
(HyperText Markup Language). Il linguaggio HTML permette di definire la presentazione
del documento nonché dei link ipertestuali verso altri documenti attraverso dei tag
d'impaginazione.
Il W3C,l'ente incaricato di standardizzare le norme relative a internet ha attualmente (inizio
2001) specificato la versione HTML 4.01.
Il DHTML (Dynamic HyperText Markup Language) di cui si sente spesso parlare non è
davvero un linguaggio. Si tratta in realtà di un insieme di linguaggi complementari all'HTML
che permettono di rendere più dinamica una pagina web. Questi linguaggi sono:
 Il linguaggio HTML 4.0 o superiori
 Il Javascript, che permette di effettuare delle operazioni sul browser del client
 Il DOM (Document Object Model) che definisce un'arborescenza di oggetti
rappresentante la struttura del documento. Questo permette soprattutto di poter
manipolare l'insieme degli oggetti contenuti nel documento.
 I fogli di stile (CSS - Cascading StyleSheets), che raggruppano in uno stesso
documento le definizioni degli stili di ogni tag di una pagina web o di un intero sito.
Le pagine web dinamiche
Viene detta «pagina web dinamica» una pagina web costituita da un file di testo che
contiene del codice HTML ed eventualmente delle immagini e dei link verso altri
documenti.
Un sito costituito da pagine web statiche sarà qualificato come «sito web statico ». Un
sito web statico è sufficiente quando contiene una dozzina di pagine ma il suo uso e il suo
aggiornamento possono scontrarsi rapidamente con i seguenti limiti :
 una manutenzione difficile dovuta all'obbligo di modificare manualmente ciascuna
pagina (soprattutto nel caso in cui tutte le pagine hanno lo stesso menu)
 l'impossibilità di rinviare una pagina personalizzata secondo il visitatore
 l'impossibilità di creare una pagina in modo dinamico a seconda delle entry di
un database
 ecc.
Ragione per cui delle soluzioni che permettono di automatizzare la generazione di pagine
web lato server sono state attuate.
Esistono numerose soluzioni che permettono di usare un linguaggio di script sul server
web, fra cui i più diffusi sono:
 Il primo cronologicamente è il CGI (Common Gateway Interface) consisteva
nell'interpretare dei programmi (generalmente scritti in perl o in linguaggio C), poi di
far loro rinviare un contenuto compatibile con il protocollo HTTP.
 Il linguaggio ASP (Active Server Pages) di Microsoft a permesso di semplificare la
scrittura di tali script manipolando degli oggetti in VBScript.
 Il linguaggio PHP (Hypertext preprocessor) usa un suo proprio linguaggio (derivato
da C++ e da Perl) e permette numerose funzionalità (equivalenti a quelle della
tecnologia ASP).
 Il linguaggio JSP (Java Server Pages) la più recente fra queste tecnologie. Permette di
usare tutta la potenza di Java per creare delle pagine web dinamiche.
Appunti sul funzionamento dell’architettura client/server - pag. 3
Web server
Prima di spiegare che cos’è e a che cosa serve un Web server, è opportuno chiarire alcuni
concetti di base.
Nel Web, la
comunicazione (intesa
come scambio di file) tra
terminali diversi, avviene
attraverso dei sistemi di
trasmissione denominati
protocolli, tra i quali il più
conosciuto è il protocollo
HTTP (Hyper Text
Transfer Protocol). Il
funzionamento di questo
protocollo prevede che
l’utente richieda
l’accesso a determinate risorse (input), attraverso la digitazione di URL o cliccando su link.
Queste risorse gli vengono poi inviate (output), quando disponibili, generalmente sotto
forma di pagine HTML o di immagini.
Con questa procedura, l’utente non fa altro che comunicare al browser, installato sul suo
computer (client), il percorso che deve intraprendere per reperire le informazioni cercate
ospitate su di un computer differente (server).
Dopo questa piccola spiegazione,
possiamo quindi definire un server come
un elaboratore che contiene e fornisce
file.
Con il termine specifico di Web server,
quindi, parliamo di un computer che ha la
funzione di ospitare e fornire siti internet
formati sia da pagine statiche (contenenti
solo codice HTML) che dinamiche
(contenenti codice come il PHP e ASP).
La distinzione tra questi due tipi di pagine è molto importante per capire qual è la specifica
funzione di un server Web.
Una semplice pagina HTML non richiede particolari interventi da parte di un Web server, in
quanto il codice viene già interpretato dal browser installato sul computer client; il discorso
invece cambia in presenza di codice PHP o ASP (pagine dinamiche) utilizzato per
produrre dei comportamenti e per generare dinamicamente codice HTML. È in questo
secondo caso che l’intervento e la mediazione di un Web server è necessario.
Giunti a questo punto, possiamo quindi definire un Web server come un software installato
all’interno di un computer (server), con lo scopo di elaborare pagine web e di generare
contenuti in modo dinamico.
Appunti sul funzionamento dell’architettura client/server - pag. 4
I Web server al momento più diffusi sono: Apache HTTP Server (sviluppato da Apache
Software Foundation) e IIS (sviluppato da Microsoft).
Impiego dei Server Web
I server web sono servizi destinati ad ospitare siti web o prestazioni specifiche che
vogliono fornire agli utenti della rete Internet.
In particolare sono adatti a supportare siti o progetti web con caratteristiche ed esigenze
particolari:






progetti web che richiedono molto spazio sul disco rigido, ad esempio per la
pubblicazione di grossi volumi di contenuti in formato testo, files grafici, files video e
files multimediali in generale;
progetti che devono gestire numerose visite giornaliere e quindi devono essere
supportati da sistemi efficienti e veloci nello smaltire le richieste degli internauti;
progetti che necessitano di servizi particolari come ad esempio connessioni sicure
di tipo HTTPS; oppure elevato grado di protezione dei dati.
nei casi in cui vogliamo creare un Gamezone Server, un Server Email o un Server
News.
se decidessimo noi stessi di offrire servizi di hosting gratuiti o a pagamento.
in tutti i casi in cui i complementari servizi di hosting non sono sufficientemente
adeguati.
Ma se volessimo interagire con l’utente, permettere di fargli delle domande ed ottenere
delle risposte, magari memorizzarle e conservarle per la sua prossima visita? Per poter
fare cose del genere un Web server propriamente detto non è più sufficiente. Avremo
bisogno di inserire della logica dietro alle
semplici pagine HTML, degli algoritmi che ci
permettano, ad esempio, di effettuare dei calcoli
o tenere a memoria dei valori. Questo è
permesso dagli Application server.
Nello scegliere la piattaforma non siamo sempre
liberi, possiamo essere coinvolti in un progetto in
cui tutto è già stato impostato, ad esempio. Con
vincoli del genere l’unica cosa da fare è adattarsi
e sviluppare nel linguaggio che impone la
condizione.
Se invece saremo noi a scegliere l’AS, potremo sceglierlo tenendo conto anche dei
linguaggi che vorremo utilizzare per scrivere pagine Web ed applicazioni. Cominciando
proprio da queste ultime, le 2 famiglie più diffuse che si contendono la supremazia del
Web sono Java e DotNet.
Le due tecnologie hanno parecchio in comune, questo anche perchè il Framework .NET
ed i relativi linguaggi di programmazione sono stati sviluppati molto dopo la nascita di
Java e se ne avverte l’influenza positiva. Ma se è vero che ci sono molti punti in comune,
è altrettanto vero che si tratta di piattaforme ben distinte.
Scegliere una piattaforma infatti non significa solo scegliere un linguaggio di
programmazione, ma anche tutto ciò che lo circonda. Chi usa la tecnologia Microsoft
Appunti sul funzionamento dell’architettura client/server - pag. 5
.NET e C#, ad esempio, avrà a che fare con il Framework .NET, con il Web server IIS e
con tutte le estensioni (o filtri)ISAPI che gli permettono di svolgere le funzioni di
application server.
IIS arrivato alla versione 6, vanta una fetta pari al 20% di tutti i server presenti nel Web.
Chi invece predilige J2EE ha una gamma più larga di scelte. Infatti esistono versioni
della JVM sia per Windows sia per Linux ed anche il principe degli AS, Jakarta Tomcat, è
disponibile per entrambi i sistemi operativi.
Inoltre possiamo scegliere di usare Tomcat in coppia con IIS o Apache su sistemi
Microsoft o su Apache per sistemi Linux.
Questo application server open source è usato per quasi il 70% dei server della rete
mondiale ed è la soluzione ottimale per chi sceglie di utilizzare Java e JSP per realizzare
il codice delle pagine Web e della logica.
Il punto forte della coppia Apache-Tomcat sta nel fatto che, essendo open source,
vantano sul supporto delle migliaia di comunità di sviluppatori online sparsi nei cinque
continenti.
Oltre a quelli appena citati vi sono tantissimi altri AS di tantissime case produttrici di
software ed altri open source. Quasi tutti gli altri sono prodotti molto professionali e
quindi rivolti ad una nicchia di clienti di fascia alta, grosse aziende o grandi
organizzazioni.
PIATTAFORME SOFTWARE
L.A.M.P.
LAMP è un acronimo che indica
una piattaforma software per lo sviluppo
di applicazioni web che prende il nome dalle
iniziali dei componenti software con cui è
realizzata.
I componenti di base, da cui prende il nome,
sono:




Linux: il sistema operativo;
Apache: il Server Web;
MySQL o MariaDB, database
management
system (o database server);
Perl, PHP e/o Python: i linguaggi di scripting.
Appunti sul funzionamento dell’architettura client/server - pag. 6
WAMP
I componenti di base, da cui prende il nome, sono:




Windows: il sistema operativo che deve
essere già installato sul PC;
Apache: il Web server;
MySQL: il database management system (o
database server) con SQLite e relativi toolkit
grafici;
PHP. Perl e/o Python: i linguaggi di scripting.
Di fatto WAMP è la versione adattata per Windows
della piattaforma AMP, così come LAMP è quella adattata per GNU/Linux.
XAMPP
XAMPP è una piattaforma software gratuita costituita da Apache HTTP Server,
il database MariaDB e tutti gli strumenti necessari per utilizzare i linguaggi di
programmazione PHP e Perl.
Il nome è un acronimo dei programmi sopra citati: la X sta per cross-platform, la A sta
per Apache HTTP Server, la M sta per MariaDB, la P sta per PHP e l'ultima P sta per Perl.
Su queste piattaforme si appoggiano spesso siti web e altre piattaforme di sviluppo web
dinamico (CMS) comeWordpress, Drupal e Joomla!
CGI
In informatica Common Gateway Interface (acronimo CGI, in italiano: interfaccia
comune, nel senso di standard, per gateway), è una tecnologia standard usata dai web
server per interfacciarsi con applicazioni esterne generando contenuti web dinamici.
Appunti sul funzionamento dell’architettura client/server - pag. 7
Il CGI è la prima forma di elaborazione lato server implementata: quando ad un web
server arriva la richiesta di un
documento CGI (solitamente
con estensione .cgi, .exe o .pl)
il server esegue il programma
richiesto e al termine invia al
web browser l'output del
programma. Il file CGI è un
semplice programma già
compilato (codice oggetto) e la
risposta viene acquisita
attraverso standard output. L'acquisizione dei parametri può avvenire attraverso variabili
d'ambiente, passaggio di parametri sulla riga di comando o lo standard input a seconda
della mole di dati e delle scelte del programmatore.
CGI è attualmente usato solo con il protocollo HTTP anche se in futuro potrebbe essere
esteso ad altri protocolli. La directory predefinita degli script CGI è /cgi-bin/ su sistemi IIS,
anche se a volte è preferibile modificarla, per evitare i frequenti attacchi dai bot sui file in
quella cartella.
I linguaggi di programmazione usati sono generalmente C/C++ e Perl. Alcuni applicativi
utilizzano la tecnologia FastCGI per introdurre nuovi linguaggi di scripting, interpretati e
non compilati, come ad esempio PHP. L'altra possibilità è utilizzare librerie, ma variano in
base al server web e al sistema operativo utilizzato, diminuendo così
la portabilità del software.
DBMS
Un DBMS è un servizio software, realizzato in
genere come server in esecuzione continua,
che gestisce uno o più database. I programmi
che dovranno interagire quindi con una base di
dati non potranno farlo direttamente, ma
dovranno dialogare con il DBMS. Esso sarà
l’unico ad accedere fisicamente alle
informazioni.
Quanto detto implica che il DBMS è il componente che si occupa di tutte le politiche di
accesso, gestione, sicurezza ed ottimizzazione dei database.
Database relazionali e RDBMS
I DBMS esistenti non sono tutti della stessa tipologia. Al giorno d’oggi, ad esempio, si
parla molto di DBMS NoSQL, nati per venire incontro alle esigenze dei più recenti servizi
Web. Eppure un filone molto nutrito di DBMS, cui si deve il funzionamento della maggior
parte dei prodotti informatici esistenti oggi, è quello dei cosiddetti RDBMS (Relational
DBMS), ispirati dalla Teoria Relazionale.
Questa nacque nel 1970 ad opera del britannico Edgar F. Codd. Nonostante i 40 anni
abbondanti trascorsi, i suoi principi si dimostrano tuttora attuali.
Appunti sul funzionamento dell’architettura client/server - pag. 8
Un database relazionale è costituito da tabelle, ognuna delle quali è composta da righe
identificate da un codice univoco denominato chiave. Le tabelle che compongono il
database non sono del tutto indipendenti tra loro ma relazionate da legami logici.
La figura seguente mostra un esempio di database finalizzato a custodire i dati di una
biblioteca.
Figura 1. Tabelle in un database relazionale
Il database ha due tabelle: Autori e Libri. Ognuna di esse ha una colonna di
nome id contenente l’identificativo univoco, la chiave primaria, che permette di
riconoscere una riga senza possibilità di confusione. I valori nel campo id_autore della
tabella Libri permettono di associare un autore alle sue opere. Ad esempio, “I Promessi
Sposi” e “Il Conte di Carmagnola” hanno nel campo id_autore il valore 1, cioè la chiave
primaria che nell’altra tabella permette di riconoscere il loro autore, Alessandro Manzoni.
Questo legame creato tramite chiavi prende il nome di relazione.
Esistono vari tipi di relazioni. Quello appena descritto è un esempio direlazione uno-amolti, in quanto ad un autore possono corrispondere più libri. Nel nostro esempio si è
assunto che un libro possa avere un solo autore, ma sfruttando relazioni di tipo differente
si potranno rappresentare situazioni più vicine alla realtà.
Protagonista importante di questa guida, e strumento fondamentale nell’interazione con i
DBMS relazionali, è il linguaggio SQL (Structured Query Language). Si tratta di un
formalismo che permette di indicare al DBMS quali operazioni svolgere sui database che
gestisce. Tramite SQL si può attivare qualsiasi tipo di operazione, sia sui dati che sulla
struttura interna del database, sebbene le principali (e più frequenti) operazioni ricadono
in una delle seguenti quattro tipologie: inserimento, lettura, modifica e cancellazione di
dati, tipicamente indicate con l’acronimo CRUD (Create-Read-Update-Delete).
Appunti sul funzionamento dell’architettura client/server - pag. 9
MySQL
MySQL è un RDBMS open source e libero, e rappresenta una delle tecnologie più note
e diffuse nel mondo dell’IT. MySQL nacque nel 1996 per opera dell’azienda svedese
Tcx, basato su un DBMS relazionale preesistente, chiamato mSQL.
Il progetto venne distribuito in modalità open source per favorirne la crescita.
Dal 1996 ad oggi, MySQL si è affermato molto velocemente prestando le sue capacità a
moltissimi software e siti Internet. I motivi di tale successo risiedono nella sua capacità di
mantenere fede agli impegni presi sin dall’inizio:

alta efficienza nonostante le moli di dati affidate;

integrazione di tutte le funzionalità che offrono i migliori DBMS: indici,
trigger e stored procedure ne sono un esempio, e saranno approfonditi nel corso
della guida;

altissima capacità di integrazione con i principali linguaggi di programmazione,
ambienti di sviluppo e suite di programmi da ufficio.
Il linguaggio PHP
Come abbiamo visto nel capitolo
precedente, il termine Web
server indica in generale il
software per la gestione di un
computer host, o server di rete,
basato sul protocollo HTTP
(HyperText Transfer Protocol),
che è il principale protocollo del
Web.
PHP è un linguaggio che estende le funzionalità del Web server consentendo
l’interpretazione di file con estensione .php contenenti il codice dell’applicazione.
L’interprete PHP viene aggiunto al server Web come un modulo esterno. In questo modo
le funzionalità del server Web vengono ampliate: oltre ai file con estensione .html può
gestire file che hanno estensione .php. Questo nuovo tipo di file contiene, oltre ai
marcatori HTML, anche il codice del linguaggio PHP (script).
Quando il client richiede una pagina con estensione .php, il server Web non spedisce al
browser direttamente il file; prima interpreta le istruzioni scritte in PHP, recupera gli
eventuali dati richiesti prelevandoli dai file o dai database del server e in seguito restituisce
una pagina Web visualizzabile dal browser.
Poiché questa pagina è costruita al momento della richiesta, si chiama pagina dinamica
oppure pagina Web lato server.
Tra le operazioni che possono essere codificate in PHP ci sono le interrogazioni e gli
aggiornamenti di un database in modo da poter recuperare le informazioni da visualizzare
nelle pagine Web. PHP non si limita a gestire solo i database, ma può eseguire altre
operazioni come leggere e scrivere da file di testo o da un documento XML, oppure
spedire messaggi di posta elettronica (email).
PHP (acronimo di PHP: Hypertext Preprocessor, preprocessore di ipertesti) è un software
che può essere liberamente installato e utilizzato. È possibile prelevare la versione più
recente dal sito Internet www.php.net.
Appunti sul funzionamento dell’architettura client/server - pag. 10
Esistono versioni per i sistemi operativi Linux, Windows, Mac OS X e per i più diffusi
server Web, quali Apache e Microsoft IIS (Internet Information Services).
Il programmatore PHP può anche sviluppare e testare le applicazioni in ambiente
Windows e poi distribuirle e rilasciarle su un sistema Linux senza effettuare modifiche.
In fase di sviluppo del software è opportuno disporre di ambienti integrati (anche con
licenza GNU per il software libero) denominati spesso come LAMP (Linux, Apache,
MySQL, PHP), WAMP (Windows, Apache, MySQL, PHP) o MAMP (Mac OS X, Apache,
MySQL, PHP), a seconda del sistema operativo utilizzato. Essi forniscono un Web server
locale Apache con PHP e un server MySQL per i database.
Esempi di software di questo tipo sono EasyPHP (www.easyphp.org), Uniform Server
(www.uniformserver.com) e XAMPP (www.xampp.org). Di questi software esiste anche
una versione portable che può essere attivata direttamente da una chiavetta o da un disco
esterno USB.
In questo modo il programmatore PHP può collaudare le pagine Web utilizzando un Web
server di sviluppo sul proprio computer locale.
Il lavoro di programmazione di pagine PHP è sicuramente facilitato dall’uso di ambienti
integrati di sviluppo (IDE, Integrated Development Environment), per esempio Netbeans
PHP, che forniscono strumenti per l’evidenziazione delle parole chiave del linguaggio con i
colori, il completamento automatico delle istruzioni, il suggerimento contestuale della
sintassi, la segnalazione di errori, ma anche un Web server di sviluppo per il testing delle
pagine PHP.
Per la sua versatilità e le sue funzionalità, il linguaggio PHP si è diffuso rapidamente
diventando uno dei linguaggi di scripting più utilizzati per costruire applicazioni Web.
Fonti
Appunti docente
http://it.ccm.net/contents/276-webmastering-i-linguaggi-del-web
https://it.wikipedia.org/wiki/Server_web
http://www.html.it/pag/16728/gli-application-server-pi-diffusi/
https://it.wikipedia.org/wiki/LAMP_(piattaforma)
https://it.wikipedia.org/wiki/WAMP
https://it.wikipedia.org/wiki/Common_Gateway_Interface
https://it.wikipedia.org/wiki/XAMPP
Appunti sul funzionamento dell’architettura client/server - pag. 11