Introduzione alla programmazione lato server (A. Veneziani) - Sito Web del prof ...
←
→
Trascrizione del contenuto della pagina
Se il tuo browser non visualizza correttamente la pagina, ti preghiamo di leggere il contenuto della pagina quaggiù
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