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