Introduzione alla programmazione lato server (A. Veneziani) - Sito Web del prof ...

Pagina creata da Giovanni Gargiulo
 
CONTINUA A LEGGERE
Introduzione alla programmazione lato server                   (A. Veneziani)

Origini del Web
Originariamente il Web (nato nel 1990 al CERN per opera di Tim Berners Lee) non aveva capacità interattive
con l’utente così avanzate come le conosciamo oggi. Associato all’idea di WWW (Word Wide Web – ragnatela
mondiale) stanno inizialmente i concetti di:
      Sito
      Hyperlink
      Pagina
      Pubblicazione
      Usufruibilità delle informazioni in forma grafica

Sito – Le informazioni sul WWW sono distribuite sulla rete, ma sostanzialmente concentrate in nodi detti
comunemente “siti”. Ogni sito è una concentrazione di uno o più server WWW capaci di erogare pagine
Web in base alle richieste che pervengono al sito stesso.

Hyperlink – La famosa “ragnatela” mondiale è permessa e composta da una serie di link logici tra le risorse
che permettono collegamenti tra le stesse in modo da associare informazioni in qualche modo correlate.
Queste correlazioni logiche corrispondono ad effettivi link che il sistema WWW permette tra le pagine Web,
e che quindi le mettono in correlazione razionalmente.
Una caratteristica notevole del Web è che i link possono collegare pagine di siti diversi, quindi il loro spazio
di azione corrisponde all’intero WWW.

Pagina – E’ l’unita elementare di informazione sul Web. Il sistema di informazione del Web si suddivide in
unità dette pagine (proprio in analogia al mondo reale delle pubblicazioni). Ogni pagina è rappresentata sulla
macchina server da un file. Esse sono usualmente collegate tra loro tramite hyperlink.
La formattazione e l’impaginazione di una pagina Web è definita tramite un apposito linguaggio detto HTML
(HyperText Markup Language).

Pubblicazione – Con il Web e le informazioni in esso contenute appare più evidente il concetto di
“pubblicazione”. Usualmente contenuti messi sul Web (ossia caricati e resi visibili tramite le macchine di un
sito), sono pubblicati (e quindi resi pubblici) a chiunque “navighi” il sistema del WWW. Ciò sottende che il
Web è di norma un sistema in cui le informazioni sono visibili da tutti, esattamente come accade ad un libro
o un giornale, con la caratteristica aggiunta che di norma gran parte dei contenuti presenti sul Web sono
erogati in forma gratuita.

Usufruibilità in forma grafica – Le prime versioni del WWW non contemplavano un sistema grafico di
visualizzazione, ma ben presto ci si rese conto che il WWW si adattava ottimamente ad essere utilizzato
tramite navigatori che operavano con interfaccia grafica. Questo permise di potenziare notevolmente
l’utilizzabilità del WWW e ampliare il suo campo di applicazione.
Nel periodo della nascita del WWW infatti si stavano diffondendo calcolatori personali dotati di interfacce
grafiche e questo indusse in modo naturale ad estendere il Web a questa nuova funzionalità.
Il primo browser (software di navigazione sul Web) che permise questo tipo di visualizzazione di una pagina
WWW, fù Mosaic (1994).

Il WWW come sistema client / server
Il WWW è un sistema software costruito per operare su una rete di comunicazione di dati. Come molti altri
software nati per operare in rete, esso per funzionare utilizza una architettura detta client / server.
                                                   Pagina 1
Numerosi altri applicativi di rete utilizzano un architettura analoga.
In tale architettura il software opera in rete suddividendo i compiti dell’applicazione in due parti, una parte
client (nel caso del WWW quello che viene chiamato comunemente navigatore o browser) e una parte server,
comunemente chiamata WWW server o Web server.
Alla parte client, la più conosciuta al grande pubblico viene assegnato il compito di presentare i dati, e quindi
visualizzare le pagine Web e permettere l’interazione con l’utente.
La parte server, invece, ha il compito di erogare i contenuti presenti su un certo sito.
In pratica si tratta di un meccanismo di richiesta-risposta nel quale:
     a) una richiesta parte dal client Web
     b) essa viene trasmessa via rete al server WWW desiderato
     c) il server riceve la richiesta ed eroga la risorsa (tipicamente una pagina Web) se disponibile
     d) la risorsa viene ritrasmessa sulla rete
     e) il client riceve la risorsa e deve formattarla o eseguire del codice di programma, se essa ne contiene
Quindi:
      il software tramite il quale l’utente Web effettua la richiesta delle pagine volute è il navigatore (ad
         esempio Mozilla Firefox (open), Internet Explorer, Google Chrome)
      il software che permette alle pagine Web ed altre risorse presenti sul WWW server di essere erogate
         è il server WWW. (ad esempio Apache (open), Microsoft IIS – Internet Information Server, Tomcat
         (scritto in Java, open))
Vi è a questo proposito da notare che:
      usualmente un WWW server può essere consultato da più client WWW in modo contemporaneo
         (soprattutto se il sito è sottoposto ad un certo “traffico”).
      il server WWW è un software che intrisecamente lavora con sottoprocessi paralleli, in quanto esso
         ha la necessità di esaudire in modo indipendente e parallelo le varie richieste provenienti dai client.

Linguaggi di programmazione per il Web
Attualmente esistono due tipi di linguaggi sul WWW:
      linguaggi lato client
      linguaggi lato server
Inizialmente il WWW era un sistema sostanzialmente passivo, che non prevedeva la presenza di numerose
parti di codice di elaborazione; tuttavia con la sua evoluzione in vari campi, anche questa caratteristica
cambiò. Oggigiorno il Web ha numerose opzioni che permettono la sua programmazione in modo esteso e
diffuso. La possibilità di programmare il Web ha permesso di estendere la sua utilità e quindi il suo uso a
settori prima non previsti.
Il più diffuso e famoso dei linguaggi lato client è JavaScript, che permette di programmare numerose
interazioni con la pagina Web. Il codice di tale linguaggio è “affogato” nella pagina Web stessa e risulta
leggibile in essa (in chiaro). Javascript è un linguaggio interpretato, ed il suo interprete risiede sul browser
stesso che stà visualizzando la pagina in cui esso è contenuto.
Il codice Javascript deve essere distinto dall’altro presente sulla pagina utilizzando due appositi tag:
  ….  tra i quali viene posizionato il codice da eseguire.
Per motivi di sicurezza Javascript non può accedere di norma al disco locale della macchina e ad altre risorse
hardware, oltre a non poter connettersi, sempre per motivi di sicurezza, a risorse server, quali i DBMS.
Sostanzialmente Javascript può interagire con la pagina Web ed i suoi sottoelementi, in cui è ospitato il suo
codice. La sua esecuzione è dunque confinata all’interno del browser stesso.
Proprio per queste limitazioni di base, è stato necessario affiancare dei linguaggi lato server a quelli lato client
già considerati. Di questi tre molto noti sono:
      ASP creato da Microsoft
         Non open source, gira sul server IIS Micorsoft ed è interpretato.

                                                     Pagina 2
Il suo uso è’ tipico di WWW server basati su piattaforma Microsoft
       JSP estensione Web del linguaggio Java
        Può girare su Tomcat un server WWW open source
        scritto tutto in Java.
        Come tutto il software scritto in Java è portatile tra diversi
        sistemi operativi sul quale sia installabile il Java runtime
        e la Java Virtual Machine.
       PHP progetto open source, che pian piano ha acquisito
        grande popolarità tra i programmatori Web. E’ un linguaggio interpretato.
        Permette di creare pagine portatili tra più piattaforme.

Pagine WWW contenenti linguaggio lato server possono compiere, seguendo regole e condizioni proprie del
Web, elaborazioni complesse e estrazioni di dati dai DB.
Il loro utilizzo và da qualche singola pagina effettuante semplici operazioni realizzabili in modo analogo anche
con Javascript, a complesse applicazioni Web costituite da gruppi di numerose pagine attive coordinate e
cooperanti, contenti codice atto a realizzare un unico applicativo e scopo.
L’elaborazione di una pagina Web attiva (ossia una pagina contenente codice PHP o ASP o altro), si svolge sul
server stesso, al momento della richiesta della risorsa, che in questo caso viene scansita alla ricerca del codice
da eseguire. Eseguito il codice lato server esso in numerosi casi produrrà degli output (programmati) che
renderanno in alcuni punti della pagina i risultati della elaborazione da svolgere.
Immaginiamo la frequente situazione di un sito di ecommerce; in questo modo il programmatore invece di
creare una serie di pagine tutte simili, contenenti i dati dei vari prodotti, scritte una da una a mano, potrà
creare una o poche pagine che lavorando in modo parametrico generanno al volo una serie di pagine, tutte
simili, capaci presentare uno qualunque dei numerosi prodotti del sito.

CGI una prima forma di elaborazione lato server
Oggi giorno sono largamente diffusi i linguaggi per il Web di cui abbiamo parlato sopra o loro simili. In
passato però la prima forma per ottenere un elaborazione di dati sul server WWW, è stata quella dei
cosiddetti programmi CGI.
Essi erano dei normali compilati, scritti di solito nei comuni linguaggi per applicazioni desktop (C, Pascal e
altri), il programma CGI veniva sviluppato con i normali strumenti desktop (e quindi anche compilato) e
successivamente l’eseguibile risultante veniva inserito in una apposita directory del WWW server che lo
ospitava, in modo tale che fosse atto ad essere “agganciato” ed eseguito dal WWW server, su richiesta di
opportune pagine caricate dal client.
Il meccanismo di elaborazione era complicato dal fatto che i linguaggi utilizzati non erano specifici per il Web
e quindi non avevano funzionalità preprogrammate per gestire alcune problematiche tipiche della
programmazione Web. Inoltre il processo di sviluppo, comprendente la compilazione e il posizionamento
di un eseguibile, era più complesso, come del resto meno immediata era l’individuazione di eventuali cause
di errori nella stesura del programma CGI. Questo ha portato praticamente alla scomparsa di questa tecnica
di programmazione ormai da considerarsi obsoleta.

PHP
Nasce nel 1994 come progetto open source; la sua sintassi di base è piuttosto semplice ed intuitiva e si rifà
per le strutture di base della programmazione alla sintassi del C / C++. Il linguaggio è interpretato e quindi
basta un generico editor di testo per programmarlo. Esistono comunque strumenti software più completi per
effettuare anche un debugging più analitico degli script eseguiti.
L’ambiente di esecuzione è molto flessibile e configurabile ed è in grado di interfacciarsi ai principali Web
server. PHP usualmente viene fatto girare “accoppiato” al WWW server Apache, molto diffuso sull’intera

                                                    Pagina 3
rete Internet e capace di funzionare sul sistema operativo Unix (e derivati quali Linux). Tuttavia esso può
essere facilmente accoppiato e fatto funzionare anche con il WWW server IIS di Microsoft.
Il Web server rileva e gestisce la richiesta di pagine Web, smistando opportunamente all’ interprete le pagine
con codice PHP “a bordo” (il nome del file dovrà sempre avere estensione .php).
Il linguaggio PHP è debolmente tipizzato, questo perché le variabili sono generiche e possono contenere tipi
diversi in momenti diversi del programma. Gli effetti dell’elaborazione PHP si producono tramite stampe da
inserire in vari, opportuni, punti della pagina Web oggetto di elaborazione.
Il codice PHP, come quello Javascript abbisogna di essere separato dal resto del codice, di altra natura,
presente su una pagina Web.
Per far questo si utilizza delimitarlo entro la coppia di tag:

Questa coppia di tag può apparire in più zone di una pagina se la logica del codice scritto lo rendesse
necessario.
PHP nasce come linguaggio basato su una programmazione utilizzante soprattutto funzioni / procedure, ma
attualmente stà evolvendo anch’esso per permettere una programmazione sempre più basata su oggetti.

Basi di dati e DBMS
Dopo aver parlato di pagine attive e software di tipo client / server, è opportuno considerare, dato che è
oggetto del vs. corso, cosa sia una base di dati e cosa sia un DBMS.
Lo scopo di una base di dati (DB - DataBase) in informatica è analogo allo scopo dei files, ossia memorizzare
in modo permanente alcuni dati.
Durante il IV anno abbiamo visto alcuni semplici esempi di elaborazioni che tramite i file permettevano di
memorizzare dei dati in modo permanente, di modo da poterli riutilizzare tra una esecuzione e l’altra di un
programma. Nei casi semplici e con un numero modesto di dati è ovvio che la memorizzazione di essi non
pone particolari problemi; ma se si inizia a pensare a quantità di dati notevoli e strutturati in modo articolato
e complesso, la gestione con i file degli stessi diviene senza dubbio meno facile.
L’introduzione di un apposito software (DBMS – DataBase Managment System) che si occupi di rendere
efficiente e ottimizzata la gestione dei dati permanenti, ha rappresentato un notevole passo avanti nelle
tecniche di programmazione tanto e vero che i DB sono ampiamente usati in numerosissimi software odierni.
Un DBMS quindi è il software che è preposto a gestire ed operare sui DB generati secondo il suo formato.
L’adozione di un DBMS per la gestione dei dati ha sostanzialmente i seguenti vantaggi:
      Permette l’utilizzo di un linguaggio apposito (SQL) per tutte le operazioni svolte sui dati stessi.
      Permette di strutturare i dati in modo razionale e standardizzato (nel nostro caso secondo i criteri
         del modello relazionale)
      Consente al DB di interfacciarsi con tutti i linguaggi (desktop, Web, o per App) abbiano capacità di
         connettersi ed interagire con il DBMS utilizzato, utilizzando una metodica per la gestione dei dati
         uniforme.
      Si fa carico e risolve i problemi di concorrenza (accesso contemporaneo) nell’accesso ai dati
      Possiede semplici procedure per backup e restore delle basi di dati.
      Si fa carico di differenziare l’accesso ai dati, distinguendo vari profili utenti e quindi permessi di
         accesso.
      Permette le transazioni, ossia l’esecuzione (commit) o il fallimento (rollback), di gruppi di operazioni,
         collegate logicamente tra loro, sulla base di dati.

                                                   Pagina 4
Connessioni ad un DBMS
Al contrario del codice eseguito lato client, potenzialmente insicuro, il codice lato server su un certo sito è da
considerarsi sicuro in relazione alle possibili operazioni svolte in quanto programmato dai programmatori
che gesticono il sito stesso o comunque persone note. Ecco perché alle pagine Web attive in generale è
consentito l’accesso ai DB che poi fungono da fonte di dati per le pagine attive stesse.
La connessione ad alcuni DBMS in PHP è particolarmente immediata e semplice.
Nel nostro caso, per tutto il corso, utilizzeremo assieme a PHP il DBMS MySQL; di frequente i due software
sono utilizzati assieme. La connessione tra PHP e MySQL tramite PHP è piuttosto semplice e si appoggia ad
una serie di apposite funzioni già utilizzabili senza particolari configurazioni.

XAMPP
L’uso di MySQL1 assieme al linguaggio PHP è del tutto comune, in quanto esso costituisce una ben nota
piattaforma software per lo sviluppo Web, costituita da:
      Linux (sistema operativo)
      Apache (Web server)
      MySQL (software DBMS)
      PHP (linguaggio Web)
Oppure in alternativa:
      Windows (sistema operativo)
      Apache (Web server)
      MySQL (software DBMS)
      PHP (linguaggio Web)
Tali gruppi di software di sviluppo sono indicati con gli LAMP e WAMP, e costituiscono comunemente delle
piattaforme di sviluppo sostanzialmente open per il Web.
Un pacchetto software che ingloba tali software open (e talora altri) e quindi permette in un sol colpo
l’installazione di una tale piattaforma di programmazione per il Web è il software open source XAMPP.
Esso si configura sostanzialmente come un raggruppamento di software open già esistenti, armonizzato ed
in grado di permettere l’immediato uso degli stessi semplificando le procedure di installazione.

1
  Seppur ritenuto spesso open source MySQL non è mai stato un progetto completamente ed esclusivamente open, in relazione
soprattutto alle licenze applicate. Ultimamente dal software DBMS MySQL, ha avuto origine un progetto software derivato di nome
MariaDB, del tutto open source. Le ultime versioni di XAMPP quindi fanno riferimento a tale software per la tipologia di sw DBMS.
Al momento MariaDB e MySQL sono molto simili e viaggiano in modo del tutto parallelo.
                                                           Pagina 5
Puoi anche leggere