Eprogram informatica V anno Programmare in rete Client e server Lo scambio di informazioni nel mondo Internet è basato fondamentalmente sull’architettura client-server. In base al tipo di applicazione che si vuole realizzare il client e il server possono avere un ruolo differente. Ciascuna delle due componenti può essere: - statica, cioè non rielaborare le informazioni, - dinamica, cioè a fronte di una richiesta viene attivato un programma in grado di effettuare delle operazioni. Scenari possibili Possiamo avere i seguenti scenari: • un client statico che interagisce con un server statico; • un client statico che interagisce con un server dinamico; • un client dinamico che interagisce con un server statico; • un client dinamico che interagisce con un server dinamico. Client statico e server statico 1. Il client statico invia una richiesta al server statico indicando uno specifico URL (Uniform Resource Locator). 2. Il server individua la risorsa richiesta e la invia al client. 3. Il client interpreta il codice HTML e visualizza le informazioni o invia un’altra richiesta al server. Client statico e server dinamico 1. Il client effettua una richiesta. 2. Il server invia al client un’informazione che varia in funzione di parametri digitati dall’utente. Per ottenere l’informazione il server può eseguire direttamente una query SQL oppure attivare un applicativo, tramite componenti software che fungono da middleware. Si dice middleware un software che si interfaccia tra il client e il server. In ambito Internet, il server su cui vengono eseguite queste applicazioni prende il nome di application server. Client dinamico e server statico Il client svolge una parte dell’elaborazione. Vi sono due possibilità di rendere dinamico un client: - In un primo caso, vi è una componente software o un programma Javascript che risiede sul server ed è automaticamente scaricata sul client ed eseguita localmente. - L’altra possibilità è quella di utilizzare i linguaggi di scripting. In questo caso il codice viene inserito all’interno delle pagine HTML e viene interpretato al momento dell’esecuzione. Client dinamico e server dinamico Unisce le potenzialità viste in precedenza: - permette di migliorare l’interazione tra utente e sistema, consentendo un accesso adeguato ai dati e alle applicazioni aziendali. - è il modello attualmente più adottato per lo sviluppo di applicazioni aziendali basate sugli standard Internet (intranet ed extranet). Per realizzare la dinamicità dei client e dei server è necessario scrivere programmi che si attivino quando necessario. Per far questo esistono diverse tecniche: - realizzazione di semplici script interpretabili dai browser, - creazione di veri e propri programmi compilati. Alcune di queste tecniche sono utilizzabili solo dal lato server, altre servono solo per i client, mentre vi sono tecniche che è possibile utilizzare su entrambi i nodi della comunicazione. Pagine dinamiche Per pagina dinamica si intende una pagina il cui contenuto NON è prefissato, ma viene (parzialmente o interamente) generato in tempo reale in base alle richieste dell’utente. L’esempio più chiaro e noto a tutti è quello dei motori di ricerca. Pagine statiche Quando invece digitate nella barra degli indirizzi del browser un indirizzo che finisce per .html quasi sicuramente state vedendo una pagina statica. In questo caso il Web server che chiamate si sta comportando essenzialmente come un hard disk remoto: controlla se la pagina esiste e ve la fornisce così com’è. Programmazione lato client A livello di client vi possono essere dei programmi già compilati, che vengono scaricati dal server ed eseguiti sul client, oppure programmi scritti in un linguaggio di script che vengono interpretati dal client. Applet Con Applet si indicano particolari programmi Java che vengono inseriti nelle pagine HTML mediante l’elemento applet (o object) con alcuni attributi necessari all’esecuzione dell’applet. All’interno dell’elemento applet (o object) possono inoltre essere definiti parametri che vengono passati all’applet in esecuzione. Quando un browser incontra tali tag HTML carica in memoria il programma e lo esegue. Plug-in Si dicono plug-in alcune componenti software che permettono di estendere le funzionalità del browser in modo da consentirgli di interpretare dati in formato particolare. Quando il browser effettua il download di una pagina con dati di un formato che non è in grado di interpretare, verifica se possiede un plug-in in grado di gestirlo. Se necessario, il plug-in può essere scaricato dal server. Alcune funzionalità tipiche sono: la visualizzazione di formati grafici (CAD), l’esecuzione di presentazioni interattive (Flash), l’esecuzione di codice Java (applet). MS ActiveX ActiveX della Microsoft è un insieme di tecnologie che permettono di sviluppare applicazioni software utilizzando il concetto di componente riusabile. Gli oggetti ActiveX sono inseriti all’interno di pagine HTML, ma NON possono essere eseguiti da soli. Devono essere contenuti all’interno di un altro programma e installati sull’hard disk locale. Un oggetto ActiveX deve essere compilato per una piattaforma specifica. Dopo il caricamento di una pagina che lo referenzia, il browser verifica se il controllo è già installato sul client, se non è ancora installato o se ne esiste una versione più aggiornata è scaricato in automatico. I linguaggi di scripting I linguaggi di scripting sono pezzi di codice inseriti in pagine HTML. Introducono estensioni all’interfaccia di una pagina Web o del browser. In questo modo è possibile aumentare le potenzialità interattive di una pagina Web SENZA UNA COMPETENZA DA PROGRAMMATORE. Possono essere eseguiti sia a livello server, sia a livello client. Quando gli script sono eseguiti a livello client non possono accedere alle risorse locali (sono quindi sicuri). I principali linguaggi di scripting sono JavaScript e Visual Basic Script (VBScript). JavaScript Nonostante il nome, il linguaggio JavaScript non ha niente a che fare con il linguaggio Java. Il codice viene inserito direttamente nelle pagine HTML preceduto dal tag <SCRIPT LANGUAGE = “JavaScript”> Il codice è normalmente composto da una serie di function che vengono richiamate in corrispondenza a eventi che occorrono nella pagina. Viene usato principalmente per realizzare form per l’immissione dati, realizzare calcoli su tabelle e per gestire la navigazione sul Web. VBScript Il linguaggio VBScript deriva dal Visual Basic. Come per JavaScript, il codice è inserito in pagine HTML dopo il tag <SCRIPT LANGUAGE = “VBScript”> Le funzionalità offerte sono praticamente le stesse di JavaScript. La principale differenza sta nella portabilità inferiore a JavaScript, in quanto utilizzabile solo con Internet Explorer, e nella fase di apprendimento del linguaggio decisamente più facile di JavaScript. Programmare lato server La programmazione di componenti software per Web application lato server si può basare su diverse tecnologie, le più comuni delle quali sono: • CGI (Common Gateway Interface); • Java servlet; • linguaggi di scripting quali: Active Server Pages (ASP), Java Server Pages (JSP) e PHP (Hypertext Processor). Programmi in CGI I programmi scritti in CGI (Common Gateway Interface) risiedono sul server e hanno la funzione di middleware. A ogni richiesta di uso di un programma CGI, viene creato un nuovo processo che si occuperà di fare da interfaccia tra il client e l’applicazione richiesta. Sono programmi scritti normalmente in linguaggio Perl o PRP. Servelet Le servlet sono componenti Java che vengono eseguite sulla piattaforma server (application server) e possono fornire al client contenuti espressi in HTML, costruiti dinamicamente in fase di esecuzione. A differenza dei programmi CGI, l’esecuzione di una servlet NON richiede la creazione di un nuovo processo a livello di sistema operativo, ma solo di un thread all’interno dell’application server. La servlet diventa quindi parte integrante dello stesso application server. Quando la sessione viene chiusa anche il thread legato alla servlet viene chiuso. JSP Le Java Server Pages (JSP) sono pagine HTML contenenti codice Java che viene eseguito sulla piattaforma server. La prima volta che la pagina è richiamata viene tradotto il codice sorgente Java, la pagina viene compilata sotto forma di servlet, memorizzata su disco e quindi mandata in esecuzione. Ai successivi accessi alla pagina la servlet viene direttamente eseguita in quanto già compilata e memorizzata. ASP Le Active Server Pages (ASP) forniscono un meccanismo con cui è possibile inserire all’interno di una pagina Web il codice che è eseguito sul server a ogni accesso alla pagina. La pagina inviata al browser viene quindi generata dinamicamente in base a specifici parametri forniti in input. La tecnologia ASP è disponibile SOLO sulle piattaforme Microsoft, ma la pagina generata è visualizzabile su QUALSIASI browser. Il codice è interpretato da una componente (ASP.DLL) che opera parallelamente al Web server ed è in grado di gestire più richieste contemporaneamente (multithread). Pagine PHP Le pagine PHP, dal punto di vista funzionale, sono simili alle pagine ASP. Sono pagine HTML che contengono codice scritto in PHP. Può girare praticamente su qualsiasi server Web, su qualsiasi sistema operativo e consente di interagire praticamente con qualsiasi tipo di database. Può essere agevolmente utilizzato per i più svariati tipi di progetti. Quando un comando dello script richiede il reperimento di dati da un database, il server Web preleva i dati dal database e li inserisce nei comandi HTML all’interno del modulo PHP per produrre un documento HTML formattato.