INDICE
Introduzione............................................................................................................... 4
Capitolo 1: Il Web 2.0.................................................................................................. 8
1.1 Storia ed evoluzione del World Wide Web............................................................... 8
1.2 Il Web 2.0: definizione e concetti di base............................................................. 10
1.2.1 Il Web 2.0 per la collaborazione, l'esempio di Wikipedia................................... 12
1.2.2 Il Web come piattaforma ............................................................................ 13
1.2.3 La valorizzazione dell'intelligenza collettiva.................................................... 16
1.2.4 L'importanza delle informazioni e della loro distribuzione................................. 17
1.2.5 Usabilità................................................................................................... 19
1.3 Tecnologie del Web 2.0 ..................................................................................... 20
1.4 Esempi di applicazioni Web 2.0........................................................................... 23
Capitolo 2: Progetto desktop@UniFe............................................................................. 30
2.1 Scopo del progetto............................................................................................ 30
2.1.1 La metafora del desktop.............................................................................. 30
2.1.2 Il desktop sul PC........................................................................................ 30
2.1.3 Il desktop sul Web...................................................................................... 31
2.2 Specifiche di progetto........................................................................................ 33
2.3 Architettura del sistema..................................................................................... 35
2.3.1 Lato server dell'architettura......................................................................... 36
2.3.2 Lato client dell'architettura.......................................................................... 37
2.4 Fasi di progetto................................................................................................ 41
Capitolo 3: Tecnologia................................................................................................ 44
3.1 Architettura AJAX.............................................................................................. 44
3.1.1 Architettura: modello classico e modello AJAX a confronto............................... 44
3.2 I quattro principi portanti di AJAX........................................................................ 47
3.2.1 Il browser ospita un'applicazione, non pagine................................................. 47
3.2.2 Il server produce dati, non contenuto............................................................ 49
3.2.3 Le interazioni dell'utente con l'applicativo devono essere fluide e continuative ....50
3.2.4 Disciplinare il codice................................................................................... 51
3.3 Alternative ad AJAX........................................................................................... 51
3.3.1 Soluzioni basate su Macromedia Flash .......................................................... 51
3.3.2 Java Web Start e tecnologie relative ............................................................ 52
1
3.4 Tecnologia AJAX............................................................................................... 53
3.5 Il linguaggio JavaScript...................................................................................... 53
3.6 Manipolazione e scambio dati via XML.................................................................. 55
3.6.1 XML Schema Definition............................................................................... 56
3.7 Definire lo stile di presentazione delle informazioni tramite XHTML e CSS..................57
3.7.1 XHTML...................................................................................................... 57
3.7.2 CSS.......................................................................................................... 58
3.8 Interazione dinamica tramite il DOM.................................................................... 59
3.9 Caricare i dati in modalità asincrona sfruttando tecnologie XML............................... 60
Capitolo 4: Struttura dati di desktop@UniFe .................................................................. 65
4.1 Introduzione.................................................................................................... 65
4.2 Tipi di dato generico.......................................................................................... 66
4.3 Tipi di dato complessi........................................................................................ 67
4.4 Costruzione della pagina.................................................................................... 75
4.5 Elementi.......................................................................................................... 76
Capitolo 5: Realizzazione dell'applicazione client............................................................. 81
5.1 Introduzione.................................................................................................... 81
5.2 Framework AJAX .............................................................................................. 81
5.2.1 Prototype.................................................................................................. 82
5.2.2 Script.aculo.us........................................................................................... 82
5.3 Accessibilità del Web desktop............................................................................. 83
5.3.1 Interfaccia utente accessibile....................................................................... 83
5.3.2 Compatibilità di XMLHttpRequest.................................................................. 84
5.3.3 Rendere JavaScript accessibile..................................................................... 84
5.4 Sviluppo del lato client di desktop@UniFe............................................................. 86
5.4.1 Classe AjaxLogin........................................................................................ 86
5.4.2 Classe WordProc........................................................................................ 88
5.4.3 Classe HomePage....................................................................................... 89
5.4.4 Classe Win................................................................................................ 90
5.4.5 Classe ReduceWin ..................................................................................... 91
5.4.6 Classe Home............................................................................................. 92
5.4.7 Classe Module............................................................................................ 95
5.4.8 Classe Page............................................................................................... 97
5.4.9 Classe FeedReader..................................................................................... 98
2
5.4.10 Classe ToDoRow....................................................................................... 98
Capitolo 6: Conclusioni e sviluppi futuri......................................................................... 99
Bibliografia.............................................................................................................. 101
Note bibliografiche................................................................................................ 101
Testo di riferimento.............................................................................................. 102
Ringraziamenti......................................................................................................... 103
3
Introduzione
Il termine Web 2.0 si riferisce alla transizione del World Wide Web da semplice collezione di siti
Web a completa piattaforma in grado di servire applicazioni Web agli utenti finali [ORY]. Il Web 2.0
è una nuova visione del World Wide Web che ha da poco iniziato a influenzare il modo di lavorare e
interagire con le informazioni in rete. Non è un software specifico, né un marchio registrato, ma il
tentativo di dare un nome a un insieme di approcci per sfruttare Internet sotto un'altra veste rispetto a
quella consolidata da tempo, grazie a un gruppo di innovazioni emergenti.
Una delle intuizioni alla base del Web 2.0 è lo svincolare completamente le applicazioni che usiamo
quotidianamente dal computer sul quale girano. In questo modo verrà tutto trasportato su Internet: la
rete come punto centrale di utilizzo del software sia perché i dati sono esposti in essa sia perché il
software stesso risiede nella rete. Per creare un documento basterà aprire il browser, scrivere quello
che vogliamo (nel caso di un documento Word ad esempio) e salvarlo direttamente sul Web.
Svincolando l’applicazione dal computer, i documenti creati saranno accessibili sempre, da ogni
luogo e da qualsiasi piattaforma o sistema operativo.
Una delle principali conseguenze derivanti dall’introduzione di questa nuova concezione del Web è
che siti come i cataloghi on-line non sono più una scatola a tenuta stagna dei contenuti che ospitano.
Le applicazioni Web stanno diventando servizi aperti che possono essere composti, aggregati o
miscelati in nuovi servizi e in nuove applicazioni, collocando così il Web al centro dell' interazione
fra l'utente e il software sia in termini di locazione dei dati che in termini di locazione del codice
sorgente.
La parola chiave del Web 2.0 è architettura della partecipazione, ovvero un sistema basato sulla
collaborazione e cooperazione degli utenti. I servizi e gli strumenti del Web 2.0 trasformano ogni
utente da consumatore a partecipante, da utilizzatore passivo ad autore attivo di contenuti, messi a
disposizione di chiunque si affacci su Internet, indipendentemente dal dispositivo che utilizza.
L'obiettivo del Web 2.0 è quello di avere un utilizzo del World Wide Web orientato alle interazioni
sociali, alle reti sociali. Un'applicazione Web 2.0 è un social software, uno strumento attraverso il
quale gli utenti possono creare, condividere e fruire informazioni liberamente in modo cooperativo. In
quest'ottica il vecchio concetto dei siti Web personali si sta evolvendo verso il fenomeno dei blog, la
pubblicazione di contenuti on-line evolve verso un contesto di partecipazione, i sistemi di gestione dei
contenuti evolvono nel sistema dei wiki il cui esempio più famoso è Wikipedia. Wikipedia è
un'enciclopedia on-line, multilingue, a contenuto libero, redatta in modo collaborativo da volontari,
4
nel senso che le voci possono essere modificate da chiunque: chiunque può diffondere quel che sa,
mettendo a disposizione le proprie conoscenze e competenze.
Oggi gli utenti vogliono poter accedere alle informazioni contenute sulla rete da qualsiasi posto senza
problemi di sincronizzazione, senza dover eseguire continui update del software, ecc...
Un'applicazione sviluppata per il Web non ha bisogno di essere continuamente aggiornata su un
numero N di client e non necessita installazione o delivery attraverso packaging e supporti
multimediali, i costi calano vertiginosamente e le possibili evoluzioni del software aumentano in
maniera analoga.
Il progetto desktop@UniFe dell'Università di Ferrara si colloca appieno nel contesto del riuso del
Web 2.0, in quanto si propone di progettare e realizzare un Web desktop, un servizio che aggrega tutti
i servizi Web dell'Università di Ferrara in un'unica pagina. Questa pagina ha il compito fornire uno
spazio virtuale che diventa in pratica il portale personale di accesso al Web per ogni utente, sfruttando
le tecnologie che il Web 2.0 ha introdotto e che permettono di creare applicazioni Web che
assomigliano alle applicazioni desktop, e la diffusione di una rete a banda larga, ma soprattutto
affidabile, unita alle modalità di accesso ubiquo al Web (Wireless, Mobile). L'Università di Ferrara
distribuisce vari servizi ai propri utenti: posta elettronica, spazio Web, liste d'iscrizione agli esami,
spazio disco virtuale, news di ateneo. Scopo finale del progetto è quello di permettere a ogni utente di
configurarsi e personalizzarsi i propri contenuti in una pagina aggregando su uno spazio di lavoro
virtuale tutti i servizi forniti dall'Ateneo ed eventualmente integrando anche servizi forniti da provider
esterni. Si vuole dare la possibilità agli utenti di sfruttare un ambiente desktop [DSK] simile
all'interfaccia grafica dei comuni sistemi operativi indipendentemente dal luogo in cui vi accedono,
dalla piattaforma e dal software che questa ha installato.
Il desktop è la rappresentazione della scrivania sul monitor, è un'interfaccia grafica che rappresenta
l'area di lavoro dell'utente, in cui sono presenti i propri documenti e cartelle e da cui si possono
lanciare gli applicativi di cui l'utente necessita per il lavoro quotidiano. Il modello di desktop a cui
siamo tutti abituati è però un modello locale, supportato dal particolare sistema operativo residente sul
nostro pc. Scopo del suddetto progetto, è quello di virtualizzare il concetto di desktop in modo che
questo sia fruibile indipendentemente dal dispositivo e dalla piattaforma che si andrà a utilizzare.
Immaginiamo il Web desktop con una barra strumenti e delle icone simili a quelli che trovate in
ambienti desktop come KDE, GNOME, MS Windows o MacOS, con diverse applicazioni eseguibili
in finestre che possono essere ridimensionate, trascinate, minimizzate e ripristinate. Lo scopo del
progetto è di creare un ambiente desktop sul Web rendendo applicazioni come word processor,
5
calendario, client di posta elettronica o la gestione di un file system disponibili dovunque e in qualsiasi
momento. S'immagini di avere a disposizione un vero e proprio sistema operativo, presente sempre e
ovunque, con tanto di applicazioni pronte all'uso, accessibili con l'ausilio di un semplice browser in
qualunque parte del mondo ci si trovi, che non richiede installazione e manutenzione alcuna da parte
dell'utente finale, permettendogli di scegliere i contenuti che intende visualizzare all'interno della
propria area personalizzata. I vantaggi che questa applicazione porta all'utenza sono vari tra cui:
•
fornire un unico punto di accesso per tutti i servizi con un singolo login;
•
servizi raggiungibili ovunque attraverso il Web;
•
dati raggiungibili ovunque attraverso servizi Web;
•
aggregazione e integrazione dei servizi per fornire un'interfaccia comune, in modo da
aumentare l'usabilità degli strumenti;
•
accesso tramite diverse piattaforme e diversi dispositivi che supportano un browser, superando
problemi di eterogeneità sia hardware che software;
•
gestione dei dati affidata all'esterno del proprio pc permettendo, per esempio, di avere un
backup automatico e trasparente dei dati sui quali l'utente sta lavorando.
All'interno del progetto desktop@UniFe si vuole realizzare un prototipo di un Web desktop che
funzioni da aggregatore di servizi Web lato client, che è lo scopo di questa tesi.
Per realizzare il lato client del Web desktop abbiamo studiato lo stato dell'arte delle applicazioni Web
2.0 facendo uno studio sui servizi che potremo incorporare, assieme a chi ha esposto questi servizi
lato server, cercando di capire quali sono le possibilità che ci si propongono.
L'orientamento Web 2.0 ha comportato lo sviluppo di un'architettura a servizi, oggetto di una
precedente tesi, incapsulando le funzionalità del sistema informativo dell'Università di Ferrara.
Scopo di questa tesi è di creare le basi, il nucleo, di un'applicazione lato client per aggregare e
comporre quei servizi che sono esposti lato server. Per la realizzazione dell'applicazione sono stati
scelti gli strumenti più idonei, e in particolare questi strumenti dovranno permettere di estendere le
funzioni che andremo a creare in modo semplice. Il set di servizi iniziale infatti dovrà essere arricchito
di ulteriori servizi forniti dal sistema di gestione dei contenuti usato all'interno di questo Ateneo,
Plone [PLN], che dovrà in futuro essere quindi integrato.
Il Web desktop si presenterà come una pagina Web con uno sfondo che contiene delle icone e una
barra degli strumenti per mandare in esecuzione gli applicativi che verranno resi disponibili. Questi
6
saranno contenuti in finestre che si sovrappongono sullo sfondo e potranno essere ridimensionate e
trascinate sullo schermo tramite meccanismi di drag&drop. Diverse applicazioni potranno essere in
esecuzione contemporaneamente (finestra aperta) o in pausa (finestra minimizzata a icona) e
dovranno essere facilmente personalizzabili dall'utente. Dovrà essere possibile, ad esempio, scegliere i
contenuti dei canali RSS, scrivere documenti, gestire le proprie caselle di posta eletronica, gestire un
file system creando e distruggendo directory e in queste salvare o eliminare i propri file.
Ovviamente la nostra applicazione dovrà memorizzare lo stato in cui l'utente ha personalizzato la
propria area di lavoro in modo da poterla ripresentare inalterata. Per farlo è necessario un meccanismo
di comunicazione dello stato dell'applicazione da client a server e viceversa.
Non da ultimo ci siamo posti il problema della sicurezza dei dati personali che inevitabilmente
transiteranno dal browser verso il server e viceversa, come per esempio i dati per autenticarsi sul
servizio (user e password). Infine abbiamo provveduto a testare e a correggere l'applicazione per
renderla fruibile a diversi browser.
7
Capitolo 1: Il Web 2.0
1.1 Storia ed evoluzione del World Wide Web
Il World Wide Web (WWW) è una rete di risorse di informazioni, basata sull'infrastruttura di Internet.
Il World Wide Web nacque nel 1989 presso il CERN di Ginevra (Centro Europeo di Ricerche
Nucleari, il più importante laboratorio di Fisica in Europa), su idea di Tim Berners-Lee e di Robert
Cailliau che, per permettere ai ricercatori di condividere la documentazione scientifica in formato
elettronico ed indipendentemente dalla piattaforma migliorandone la comunicazione e la
cooperarazione, definirono standard e protocolli per scambiare documenti su reti [WWW]. Il sistema
era basato sul linguaggio di marcatura HyperText Markup Language (HTML) per la rappresentazione
delle informazioni ipertestuali dei documenti, e sul protocollo HyperText Transport Protocol (HTTP),
che a sua volta si basa sul protocollo di trasmissione dati TCP/IP, per il trasporto delle informazioni.
Questi standard e protocolli supportavano inizialmente la sola gestione di documenti ipertestuali
statici, vale a dire file testuali arricchiti d'informazioni di formattazione visualizzabili e, soprattutto,
navigabili utilizzando opportune applicazioni (browser o Web browser). Questo approccio può essere
definito Web 1.0 in cui l'interazione dell'utente con la pagina era limitata a causa:
•
del linguaggio HTML i cui unici elementi di interattività sono i collegamenti ipertestuali
(hyperlink) verso lo stesso documento, o documenti collocati sullo stesso server Web, o su altri
server, e le form per inviare informazioni;
•
del paradigma di funzionamento dell'architettura client/server basata su di un meccanismo di
richiesta/risposta in cui il client (browser) esegue una richiesta e il server (server Web)
restituisce la risposta. A ogni richiesta effettuata il browser rimane bloccato in attesa della
relativa risposta e non possono esistere richieste multiple effettuate dallo stesso browser. La
risposta è una pagina HTML che viene caricata dal browser in sostituzione della precedente
pagina.
Per superare le limitazioni del progetto iniziale, fin da subito furono definiti strumenti capaci di
generare pagine HTML dinamiche (ad es. utilizzando dati estratti da un Database). La prima soluzione
di questo tipo furono le CGI (Common Gateway Interface). Attraverso una CGI è possibile richiedere
ad un Web server di invocare un'applicazione esterna e presentare il risultato come una qualsiasi
pagina HTML. Questa soluzione, sebbene molto semplice da realizzare, presenta numerose
limitazioni di progetto (l'applicativo esterno viene eseguito ad ogni richiesta utente e non è prevista
8
alcuna ottimizzazione, non vi è alcuna gestione dello stato della sessione). Per dare al Web una
maggiore interattività e dinamicità sono state perseguite due strade. Da un lato sono state aumentate le
funzionalità dei browser attraverso un'evoluzione del linguaggio HTML e la possibilità
d'interpretazione di linguaggi di scripting (JavaScript). Dall'altro si è migliorata l'elaborazione lato
server attraverso una nuova generazione di linguaggi integrati con il Web Server (JSP, PHP, ASP,…)
trasformando i Web Server in quelli che sono oggi più propriamente noti come Application Server.
Questo Web dinamico è stato da alcuni definito Web 1.5.
Nonostante tutte queste evoluzioni, il Web rimane, ancora e soprattutto, una gigantesca biblioteca di
pagine HTML statiche on‐line. Lo standard HTML, se da un lato con la sua semplicità ha contribuito
all'affermazione del Web, dall’altro ha la grossa limitazione di occuparsi solo ed esclusivamente della
formattazione dei documenti, tralasciando del tutto la struttura ed il significato del contenuto. Questo
pone notevoli difficoltà nel reperimento e riutilizzo delle informazioni. La risposta alla mancanza di
strutturazione di HTML è venuta dall'introduzione, da parte del World Wide Web Consortium (W3C)
di Berners‐Lee, di eXtensible Markup Language (XML), un metalinguaggio che consente la creazione
di nuovi linguaggi di marcatura (ad esempio lo stesso HTML è stato ridefinito in XML come
XHTML, eXtensible HyperText Markup Language). La caratteristica innovativa dell'XML è la
possibilità di aggiungere informazioni semantiche sui contenuti attraverso la definizione di opportuni
tag [XML].
Le specifiche XML hanno però una lacuna molto importante: non definiscono alcun meccanismo
univoco e condiviso per specificare relazioni tra informazioni espresse sul Web per una loro
elaborazione automatica (ad es. più documenti che parlano dello stesso argomento, persona,
organizzazione, oggetto), rendendo molto difficile la condivisione delle informazioni. La soluzione al
problema è venuta dal W3C attraverso la formalizzazione del Web semantico [SEM] che viene
considerato l'ideale evoluzione del Web dal machine‐representable al machine‐understandable. L'idea
è di generare documenti che possano al tempo stesso essere letti ed apprezzati da esseri umani, ma
anche acceduti ed interpretati da agenti automatici per la ricerca di contenuti. A tale scopo sono stati
definiti alcuni linguaggi, quali RDF (Resource Description Framework) e OWL (Web Ontology
Language), entrambi basati su XML, che consentono di esprimere le relazioni tra le informazioni
rifacendosi alla logica dei predicati mutuata dall'intelligenza artificiale. Questi standard sono già
disponibili ma continuano ad essere ulteriormente sviluppati insieme a formalismi e strumenti per
dotare il Web di capacità di inferenza. La formazione nel corpo del Web di una vasta rete “semantica”
è, infatti, la condizione chiave per il decollo di un nuovo modo di intendere ed usare il Web.
9
La diffusione di queste soluzioni ha consentito di avviare l'utilizzo del Web come piattaforma
applicativa che oggi trova la sua massima espressione nei Web Service [WSR] alla cui realizzazione e
diffusione sta lavorando l'intera industria mondiale del software, dai grandi nomi commerciali fino
alle comunità Open Source e agli stessi utenti finali. Scopo dei Web Service è supportare
l'interoperabilità tra diverse applicazioni software residenti su diverse piattaforme hardware che
comunicano sulla medesima rete, limitando il più possibile le attività di implementazione,
consentendo di accedere a servizi, resi disponibili tramite interfacce software pubbliche, e di
assemblarli secondo le proprie necessità.
Il Web come lo conosciamo è destinato a scomparire e a lasciare il posto a una nuova concezione
dell'uso del World Wide Web, il Web 2.0, grazie anche ai cambiamenti che negli ultimi tempi sono
avvenuti nell'infrastruttura della rete Internet:
•
La diffusione della banda larga ha infatti portato ad avere velocità di connessione sempre più
elevate e la possibilità di restare collegati per lungo tempo, determinando una notevole
differenza nel tipo di utilizzo che si può fare della rete (o non fare se non si possiede la
connessione veloce), nel tipo di contenuti che si potranno fruire, di applicazioni alle quali
accedere e anche nella semplice velocità di accesso alle informazioni, che in assenza di banda
larga potrebbe anche costituire un gap lavorativo non indifferente.
•
L'ubiquità di connessione, tramite l'evoluzione delle reti wireless e mobili, e la parallela
miniaturizzazione dei dispositivi che possono gestire un browser (notebook, Pda, smartphone,
ecc) consente agli utenti di poter essere sempre on-line, anche in movimento.
1.2 Il Web 2.0: definizione e concetti di base
Il termine "Web 2.0" è stato coniato in una sessione di brainstorming avvenuta tra le società O'Reilly e
MediaLive International. Dale Dougherty della O'Reilly Media e Craig Cline della MediaLive hanno
notato che il Web era lontano dal collasso, come molti ritenevano dopo l'esplosione della bolla
speculativa "dot-com" (ovvero i fallimenti a catena dei portali di commercio elettronico) avvenuta nel
2001. I due ricercatori intravidero che il Web era più importante che mai, con interessanti nuove
applicazioni e siti Web che nascevano con una regolarità impressionante. Il grande entusiasmo
condusse Dale Dougherty a definire questo periodo come la "rinascita" del Web, con un cambiamento
dei ruoli e dei modelli di business. Ma c'è di più. Le società che sono sopravvissute al collasso, come
Google, eBay e Amazon, così come nuove compagnie quali 37signals e del.icio.us [DLC], nonchè
10
fenomeni non commerciali quali Wikipedia [WKP] e BitTorrent [BTR], sembrano avere alcuni aspetti
innovativi in comune. L'esplosione della "bolla dot-com" ha marcato un punto di svolta per il Web, la
nuova era Web 2.0. L'interesse attorno a questo cambiamento fu tale che le società O'Reilly Media,
Battelle, e MediaLive decisero di far nascere una apposita conferenza annuale sul tema, la Web 2.0
Conference, riunitasi la prima volta nell'Ottobre del 2004.
"Web 2.0" si riferisce a una transizione percepita e in atto del World Wide Web da semplice
collezione di siti Web a completa piattaforma in grado di servire applicazioni Web agli utenti finali.
Il fine ultimo del Web 2.0 è svincolarsi dall'architettura client-server che ha caratterizzato il Web fino
a oggi per portarsi verso l'erogazione di servizi basati sul Word Wide Web. L'idea è quella di
centralizzare i servizi e distribuirli sul Web eliminando di fatto l'installazione di software sulla propria
macchina per fruire dell'applicativo remoto tramite un browser. Usare quindi il Web come piattaforma
per lo sviluppo e l'erogazione di servizi. Questa nuova filosofia sta rapidamente cambiando il modo di
avvicinarsi alla fruizione della Rete. La conseguenza principale è lo spostamento dell'ambiente di
lavoro, ma anche di svago e di intrattenimento, dal desktop al Web.
Il Web 2.0 si riferisce a una seconda generazione dei servizi disponibili sul World Wide Web che
permettono agli utenti di collaborare e condividere le informazioni presenti on-line. Alla base di
questo nuovo modo di vedere il Web vi è l'interattività, tutto funziona se e solo se l'utente da semplice
utilizzatore passa alla partecipazione, all'interazione, al concetto di comunità in cui condividere,
rielaborare e ridistribuire contenuti. In questo contesto, vengono valorizzati i contenuti, i servizi e le
tecnologie che meglio sfruttano il cosiddetto network effect, ossia il fenomeno per cui un bene ha un
valore per un consumatore in funzione del numero di altri consumatori che posseggono o utilizzano lo
stesso bene. Il servizio diventa automaticamente migliore se più utenti lo utilizzano.
La tabella di figura 1.1 riassume le differenze concettuali tra il Web 1.0 e il Web 2.0 che saranno
discusse nei paragrafi seguenti.
11
Figura 1.1
1.2.1 Il Web 2.0 per la collaborazione, l'esempio di Wikipedia
La nuova filosofia collaborativa che caratterizza il Web 2.0 trova la sua piena espressione negli
strumenti di comunicazione e condivisione come i wiki. Il wiki è un sito Web che permette agli
utilizzatori di aggiungere contenuti, come in un forum, ma a qualsiasi utilizzatore anche di modificare
i contenuti esistenti. Tradizionali enciclopedie on-line adottano un modello gerarchico del sapere, con
redattori specializzati pagati per popolarne i contenuti. L'enciclopedia Britannica [BRT], le cui voci
sono comunemente considerate accurate, affidabili, e ben scritte, contina ad essere consultata come
opera di riferimento generale, ma risulta un'applicazione Web 1.0. Ad affermarsi nel mondo Web 2.0
è il modello condiviso, in cui gli utenti costruiscono insieme l'enciclopedia, raggruppando liberamente
e gratuitamente saperi e competenze diverse, al servizio di altri utenti, come fa ad esempio Wikipedia.
Wikipedia è un'enciclopedia on-line, multilingue, a contenuto libero, redatta in modo collaborativo da
volontari e sostenuta dalla Wikimedia Foundation, un'organizzazione non-profit. Attualmente è
pubblicata in oltre 200 lingue differenti e contiene voci sia sugli argomenti propri di una tradizionale
enciclopedia che su quelli di almanacchi, dizionari geografici e di attualità. Il suo scopo è quello di
creare e distribuire una enciclopedia internazionale libera nel maggior numero di lingue possibili. Per
consultare Wikipedia è possibile scegliere un argomento tra quelli proposti nella pagina iniziale,
oppure ricercare una singola parola. Se la parola chiave coincide con un articolo già scritto sarà subito
richiamato. Se una voce non esiste ancora l’utente può aggiungere l’argomento nella pagina degli
articoli che si desidera vengano scritti. Ma ecco la grande differenza rispetto alle enciclopedie
tradizionali: se si trova nella consultazione un problema come un errore di ortografia, o una frase poco
chiara, è possibile selezionare la voce, migliorandola, agendo sul link "Modifica" in cima a ciascuna
pagina. Non c’è bisogno di un particolare privilegio di accesso. È possibile, ovviamente, anche
iniziare un nuovo articolo o trovarne uno esistente e aggiungervi un intero nuovo capitolo, come
anche intervenire sullo stile di compilazione di una voce. Ciò che dunque identifica, al di là di ogni
12
altro aspetto, Wikipedia è la sua natura di progetto totalmente decentralizzato e a base democratica.
Questa è la natura propria di ogni wiki. Mentre i siti nella visione Web 1.0 hanno una fondamentale
natura di comunicazione tra un mittente e gli altri (cioè i suoi fruitori o lettori), i wiki fanno di ogni
utente un possibile partecipante di un ampio progetto. Infatti il fruitore può collaborare
pariteticamente a un progetto con e come chiunque altro. Wikipedia infatti è un sistema di copublishing, cioè uno spazio collaborativo di pubblicazione. Consente a un gruppo di lavoro di
collaborare su un progetto, gestendo in comune risorse, documentazione e riferimenti. Non esiste un
"centro" o un "redattore capo" come in una rivista (cartacea o digitale), ma esiste una comunità che
collabora al progetto. Quali sono la novità e il vantaggio di questa dimensione collaborativa? Non si
tratta di una particolarità di tipo tecnologico, ma intellettuale: chiunque può diffondere quel che sa,
mettendo a disposizione le proprie conoscenze e competenze. Così il progetto è, come si suol dire,
bottom-up, cioè si sviluppa dal basso in alto: tanti piccoli contenuti vanno ad aggiungersi a un
progetto generale ampio che cresce, potremmo dire, in maniera biologica. L'aspetto partecipativo di
Wikipedia è ciò che la differenzia dalle enciclopedie tradizionali conferendogli un maggiore tasso di
copertura di nuovi argomenti e ad un maggiore tasso di modifica e correzione di argomenti esistenti.
L’apertura completa alla collaborazione, oltre a essere la caratteristica essenziale di Wikipedia, ne è
anche il limite. Nonostante vari test ne hanno verificato accuratezza e comprensibilità, è vero che i
suoi articoli possono fornire informazioni errate. Non esistendo alcuna reale garanzia di validità e
accuratezza dei contenuti immessi, Wikipedia non può essere considerata come una tra le tante
enciclopedie tradizionali, perché essa non è garantita da nessun comitato scientifico che possa darle
autorevolezza. In ogni momento una pagina può essere oggetto di vandalismo o modificata
dolosamente con informazioni errate, non legali o anche volgari. Questo grave problema viene
controbilanciato dal livello di motivazione della comunità che la Wikipedia sviluppa, per cui gli atti
vandalici, come gli errori, sono in genere rapidamente riparati. Il sistema wiki è stato ideato in modo
da avere correttivi interni. I wiki infatti forniscono la possibilità di rintracciare lo stato di un articolo,
di rivedere i singoli cambiamenti e di discutere i temi, dunque funzionano come software sociali,
facilitando la comunicazione e la collaborazione con altri utenti, valorizzando i membri produttivi e
cooperativi della comunità, permettendo così ai contenuti di qualità di emergere.
1.2.2 Il Web come piattaforma
Il Web si sta trasformando in piattaforma, col significato di utilizzare la rete come un insieme di
servizi, aggregabili a piacere e fruibili via browser. Per molte attività, gli utenti non hanno più bisogno
di istallare del software sul proprio computer, ma possono utilizzare un'applicazione che gira
all'interno del browser. La leadership nell'industria informatica si è trasferita dalle compagnie
13
produttrici di software tradizionale, a nuove compagnie che forniscono servizi su Internet. La rete ha
rimpiazzato il PC nel ruolo di piattaforma dominante nel modo in cui il PC rimpiazzò il mainframe a
suo tempo. In sostanza, con il Web 2.0, il Web diventa di per sé una piattaforma di sviluppo. Per le
persone che lavorano in azienda, il Web è una piattaforma per gli affari. Per chi si occupa di
marketing, il Web è una piattaforma per la comunicazione. Per i giornalisti il Web è una piattaforma
per i nuovi media. Per i tecnici, il Web è una piattaforma di sviluppo software e così via. Per scrivere
un documento non dovremo lanciare un word processor, ma basterà aprire il browser, andare su di un
sito specifico (ad esempio quello di Writely [WRT]), scrivere il nostro testo e salvarlo direttamente su
Internet. Il documento sarà così accessibile ovunque, su qualsiasi piattaforma hardware e software, e
potremo decidere se e come condividerlo con altri.
Il "Web come piattaforma" è un orientamento che trova corrispondenza, a livello aziendale, nella
tendenza a gestire l'integrazione delle infrastrutture di Information Technology (IT) con architetture
orientate ai servizi, chiamate SOA (Service-Oriented Architecture), in cui le funzionalità offerte dai
vari applicativi sono viste come servizi componibili, distribuiti sulla rete [SOA]. Un servizio è una
funzionalità autoconsistente, dove per autoconsistente intendiamo che per usufruire della funzionalità
messa a disposizione dal servizio è sufficiente chiamarlo senza dovere effettuare altre operazioni. Una
SOA è un'architettura software i cui componenti sono fornitori di servizi e al tempo stesso fruitori o
consumatori di tali servizi, così da consentire l'utilizzo delle applicazioni come singole e indipendenti
componenti del processo di business. Agli inizi il Web si presentava come una collezione di siti Web a
se stanti, come fossero luoghi separati, indipendenti gli uni dagli altri, con i propri dati gelosamente
custoditi. Applicazioni nelle quali il Web agiva principalmente da catalogo on-line stanno cambiando,
ora il sito Web tradizionale non è più una scatola a tenuta stagna dei contenuti che ospita. Negli ultimi
anni, con l'avvento della tecnologia XML e dei Web Service è cambiato il modo di progettare i siti
stessi. XML permette di condividere e interpretare il contenuto di documenti tra sistemi diversi, e i
servizi Web forniscono i "punti di attracco" verso le funzionalità offerte da un sito. I Web Service con
la loro interfaccia programmata consentono l'accesso e lo scambio dei dati presenti nel sistema,
comunicando attraverso chiamate a servizi. Il Web 2.0 sposa appieno l'approccio del "ri‐uso", quello
che viene definito come "innovation in assembly". Immaginiamo l’intero World Wide Web come una
immensa libreria software: se sono presenti nel mercato molti e validi componenti, conviene creare
nuove soluzioni semplicemente assemblando componenti preesistenti per creare nuove applicazioni e
nuovi servizi.
La figura 1.2 mostra la nuova visione del Web come piattaforma: gli utenti accedono ad applicazioni
indipendentemente dalla piattaforma e le applicazioni riutilizzano i servizi e le informazioni distibuite
14
sul Web.
Figura 1.2
I vantaggi dell'approccio "Web come piattaforma" sono i seguenti:
•
Interoperabilità fra applicazioni software scritte in diversi linguaggi di programmazione e
implementate su diverse piattaforme hardware, resa possibile dall'uso di standard "aperti"
(open source) per la comunicazione.
•
Distribuire software sempre aggiornato in modo totalmente trasparente all'utente. Ogni volta
che l'utente si connette con l'applicazione Web, scarica e utilizza attraverso il browser l'ultima
versione della porzione di codice di cui ha bisogno, cioè l'interfaccia grafica.
•
Riusabilità data dall'opportunità di costruire un'applicazione prelevando le varie componenti da
luoghi diversi della rete, Internet o quella aziendale, tramite le interfacce software (API,
Application Programming Interface) che queste applicazioni espongono e mediante l'utilizzo
delle funzioni che sono in grado di effettuare (i servizi che mettono a disposizione).
•
Possibilità per l'utente di avere un unico punto di accesso a vari servizi e quindi un'unica
coppia di username e password per autenticarsi.
•
Flessibilità. Un software non monolitico può essere aggiornato anche parzialmente ed in
maniera più semplice modificando solo i servizi interessati senza intaccare la funzionalità
complessiva.
•
Accesso multi-piattaforma. L'accesso all'applicazione è indipendente dall'hardware e dal
sistema operativo utilizzato dagli utenti. Inoltre l'applicativo è accessibile non solo da un
computer ma da tutti quei dispositivi che hanno accesso a Internet e che gestiscono un browser
15
(palmari, cellulari).
•
Ubiquità delle informazioni, mutuata dall'ubiquità di connessione alla rete Internet.
1.2.3 La valorizzazione dell'intelligenza collettiva
Il filo conduttore del Web 2.0 è la collaborazione e la condivisione, l'interazione sociale, culturale e
professionale realizzata grazie alla tecnologia. Il Web 2.0 sono i blog, i wiki, è il filesharing, è tutto
ciò che permette agli utenti di passare dalla semplice consultazione dei contenuti del Web, detta
modalità "read Web" o "one-way Web", alla possibilità di contribuire popolando, condividendo e
alimentando il Web con propri contenuti, detta modalità "read/write Web" o "two-way Web" [TBL].
Gli utenti del World Wide Web hanno iniziato a intrecciare reti e collaborazioni con la forza della
spontaneità, in un processo che è stato in qualche modo favorito sia dalla diffusione dell'etica "open
source" sia dal disinteresse del mondo della finanza e dei grandi gruppi economici, ancora scottati dal
tracollo della prima new economy. In questo contesto vediamo come il vecchio concetto dei siti Web
personali si sta evolvendo verso il fenomeno dei blog, la pubblicazione di contenuti on-line evolve
verso un contesto di partecipazione, i sistemi di gestione dei contenuti evolvono nel sistema dei wiki.
Questi nuovi servizi, che verranno discussi nel capitolo 1.3, collocano gli utenti nello strato più alto
dell'architettura del Web 2.0, mentre il software, composto da dati e funzionalità, occupa gli strati
sottostanti.
L’architettura del Web 2.0 si basa sulla partecipazione degli utenti secondo il principio che gli utenti
creano valore, riprendendo fortemente il paradigma delle reti sociali. Una rete sociale (spesso si usa il
termine inglese "social network") consiste di un qualsiasi gruppo di persone connesse tra loro da
diversi legami sociali, che vanno dalla conoscenza casuale ai vincoli familiari. L'intelligenza collettiva
emerge in presenza di una massa critica di individui che partecipano a un processo che permette loro
di agire da filtro, indicando cosa ha valore e cosa no.
Le applicazioni Web 2.0 devono possedere una sorta di architettura della partecipazione ("architecture
of partecipation"), che sappia dare credito all'intelligenza collettiva degli utenti, sfruttando il network
effect che ne consegue. Nel mondo della rete Internet, uno degli esempi più interessanti in questo
ambito, oltre alla già citata Wikipedia, è rappresentato dalle folksonomy, ossia sistemi che utilizzano
l'input degli utenti per categorizzare dei contenuti: in questo modo si supera la rigidità delle
tassonomie tradizionali, spesso inadeguate a rappresentare realtà dinamiche, in favore di meccanismi
di classificazione costruiti dal basso. Applicazioni Web 2.0 come flickr [FLK] e del.icio.us devono il
loro successo proprio a questa intuizione, lasciando libertà agli utenti di utilizzare un sistema di
16
categorizzazione collaborativo che si basa su parole chiave scelte liberamente, meglio note come
"tag", che possono essere assegnate a ogni entità nel sistema e che diventano patrimonio pubblico di
tutti gli utenti. Si creano così associazioni multiple e correlate, al posto di rigide cartelle. Il vero valore
aggiunto lo si nota nel momento in cui analizziamo globalmente tutti i tag apportati dagli utenti:
scopriamo tantissime nuove fonti di informazione correlate al soggetto di interesse. Un motore di
ricerca classico cerca per metadati forniti dagli sviluppatori del sistema, i nuovi sistemi come flickr e
del.icio.us sfruttano le proprietà derivanti dalle reti sociali dando credito ai metadati aggiunti dagli
utenti.
1.2.4 L'importanza delle informazioni e della loro distribuzione
Nella piattaforma Web 2.0 non esistono entità separate, indipendenti, ma entità che collaborano tra di
loro scambiandosi i dati in varie forme, decentralizzando l'informazione e slegandola dalla sua fonte.
In questa nuova visione del Web il potere risiede nei dati e nella loro distribuzione. Tutte le
applicazioni Web 2.0 hanno creato nuovi servizi innovativi costruiti sulle informazioni, sui dati e sui
servizi esistenti, riutilizzando quelle informazioni in modi non previsti dal loro ideatore originario. La
combinazione di due o più applicazioni Web viene chiamata "mashup" (letteralmente: poltiglia). Un
mashup è un'applicazione Web ibrida, che liberamente combina i contenuti provenienti da più fonti
integrandoli in un'unica esperienza. Il contenuto utilizzato in un mashup è tipicamente preso da terze
parti attraverso API pubbliche o via feed RSS, e usando HTTP come protocollo di rete.
Se gli sviluppatori hanno fornito la API del servizio è possibile costruire un'interfaccia verso il
contenuto di qualunque applicazione Web. Il potere delle open API fornisce l'accesso ad ampi
database informativi proprietari che possono essere utilizzati per creare nuovi mix e combinazioni che
altrimenti non sarebbero possibili. I dati sono il core del sistema, rappresentano la parte essenziale di
queste applicazioni e ne determinano la qualità. Amazon, Google, Yahoo, eBay, Skype, Microsoft e
molti altre società del Web hanno tutte a disposizione API pubbliche che permettono agli sviluppatori
di inventare e creare nuove applicazioni che migliorano i dati e le informazioni preesistenti. Google
Maps è un ottimo esempio dell'importanza dei dati e della loro distribuzione. Attorno a questo
prodotto si sono sviluppati numerosi servizi di valore, mashup creati tra l'applicazione di Google ed
altre sorgenti di dati accessibili via Internet. Il più noto è HousingMaps [HSG], che combina le
informazioni di Google Maps con quelle fornite da Craiglist sugli appartamenti in affitto ed in
vendita, creando un agenzia immobiliare interattiva on-line.
Un'altra importante evoluzione portata dal Web 2.0 è rappresentata dalla content syndication, cioè la
distribuzione organizzata dei contenuti dei siti Web, attraverso l'uso di RSS (Really Simple
17
Syndication, oppure in base alla versione adottata può voler significare RDF Site Summary o Rich
Site Summary) [RSS]. Distribuire i contenuti di un sito significa renderli disponibili, in parte o
integralmente, per l'utilizzo in altri servizi. I feed RSS sono flussi di dati che permettono agli utenti di
ottenere aggiornamenti automatici non appena un sito cambia, anziché controllarlo ogni volta per
avere le ultime informazioni. Tramite i feed RSS è finalmente possibile superare il concetto di sito
monolitico e focalizzare la propria attenzione solo su elementi informativi "atomici". Ogni utente ha la
possibilità di "ritagliare" dal Web le parti di informazione che gli interessano sotto forma di feed RSS
e aggregarle in un'unica interfaccia, come schematizzato in figura 1.3.
Figura 1.3
In questo scenario di riusabilità è importante tutelare i diritti di chi pubblica dati e servizi che poi
vengono distribuiti e riutilizzati liberamente. L'intenzione è quella di evitare i problemi che le attuali
leggi sul copyright, considerate troppo restrittive e addirittura sfavorevoli alla diffusione della cultura
e della conoscenza in ogni disciplina, creano per la diffusione e la condivisione delle informazioni.
Tra la chiusura totale operata dal copyright e un mondo anarchico in cui gli autori assaporano una
libertà senza limiti, ma sono d’altra parte a loro volta sottoposti al rischio dello sfruttamento, occorre
trovare un giusto mezzo. A questo scopo sono nate le licenze Creative Commons. Creative Commons
promuove l'utilizzo di licenze in base alle quali gli autori di opere dell'ingegno (non solo prodotti
software, ma anche immagini, suoni, testi, ecc...) rinunciano all'esercizio esclusivo di alcuni diritti e,
contemporaneamente, concede ai fruitori delle stesse maggiori libertà, che contribuiscono alla
diffusione della cultura e della conoscenza. Le licenze sono sei e possono essere utilizzate anche in
combinazione. La prima prevede l'obbligatorietà di citare sempre il nome dell'autore dell'opera; la
seconda sancisce il divieto di fare un uso ai fini di lucro del lavoro; la terza licenza aggiunge il divieto
di modificare l'originale; la quarta consente la commercializzazone dell'opera presa da internet e la
produzione di opere derivate; la quinta e la sesta contemplano che se si modifica un'opera, bisogna poi
18
farla circolare con la stessa tipologia di licenza dell'originale. La sesta aggiunge anche il divieto di
fare del prodotto un uso commerciale [CRC].
1.2.5 Usabilità
Le applicazioni Web 2.0 abbandonano il paradigma della navigazione sequenziale di pagine tipico del
Web 1.0 per fornire agli utenti una user experience soddisfacente, con un grado di interattività che
finora è stato appannaggio delle interfacce utente delle applicazioni desktop quali possono essere i
fogli elettronici e gli elaboratore di testi. Per esempio inserendo un equazione in un programma di
foglio elettronico posso interagire editando i dati nelle celle, navigare i dati sia con l'utilizzo del
mouse che della tastiera e riorganizzarli con il drag&drop. Contemporaneamente l'applicativo mi
ritorna un feedback visivo delle azioni che eseguo tramite mutazioni della forma del cursore del
mouse, i dati selezionati cambiano colore, i bottoni offrono un tooltip quando sono sotto il cursore del
mouse, ecc... Applicazioni Web tradizionali sono centrate sul paradigma client-server. L'elaborazione
viene fatta dal server ed il client, detto in questo caso thin client, serve solo per visualizzare contenuti
statici. Il maggior inconveniente in questi sistemi è che ogni interazione dell'utente con l'applicazione
deve attraversare il server con conseguente ricaricamento della pagina sul client. Utilizzando il
protocollo HTTP tradizionale, qualsiasi richiesta del browser al server costringe il secondo a
rigenerare e trasmettere una nuova versione di tutta la pagina, anche quando deve essere cambiata
soltanto una linea di testo. Il browser, dal canto suo, rimarrà bloccato, senza poter restituire il
controllo all'utente, finchè non avrà ricevuto tutta la pagina e avrà finito di renderizzarla
completamente. Dato che molto codice HTML della prima pagina è identico a quello della seconda,
viene sprecata moltissima banda e dato che una richiesta al Web server deve essere trasmessa ad ogni
interazione con l'applicazione, il tempo di reazione dell'applicazione dipende dal tempo di reazione
del Web server. Questo comporta che l'interfaccia utente diventa molto più lenta di quanto dovrebbe
essere. Una delle regole basilari nel progettare interfacce utente è che quando l'utente esegue
un'azione l'interfaccia risponde immediatamente, pena la distrazione e la disorientazione dell'utente
che sposta l'attenzione dall'operazione che ha in mente all'interfaccia che non risponde. Le nuove
applicazioni Web prendono il nome di Rich Internet Applications (RIA). Trasferendo parte della
logica applicativa dal server al client e trattando le operazioni lente, come le comunicazioni col server,
in background le RIA hanno il pregio di fornire all'utente una risposta appagante dal punto di vista
della semplicità, della completezza e della interattività della fruizione, oltre che del tempo di risposta,
permettendo all'utente di continuare il suo workflow potendo eseguire altre azioni.
19
1.3 Tecnologie del Web 2.0
Alla base della rivoluzione Web 2.0 troviamo tecnologie quali XML, API, Web Service, RSS,
podcast, tag, AJAX.
•
XML
Lo standard HTML, se da un lato con la sua semplicità ha contribuito all'affermazione del
Web, dall'altro ha la grossa limitazione di occuparsi solo ed esclusivamente della
formattazione dei documenti, tralasciando del tutto la struttura ed il significato del contenuto.
Questo pone notevoli difficoltà nel reperimento e riutilizzo delle informazioni. Per rendersi
conto di questo è sufficiente eseguire una ricerca utilizzando uno dei molti motori di ricerca
disponibili in rete e ci si accorgerà che, delle migliaia di documenti risultanti dalla query,
spesso solo una piccola percentuale è d'interesse per la ricerca che s'intendeva fare. Ad
esempio, per un qualsiasi motore di ricerca, non esiste alcuna differenza fra il termine Rossi
nel contesto "Il Sig. Rossi" ed il termine "rossi" nel contesto "capelli rossi", rendendo la
ricerca molto difficile. La soluzione è lo standard XML, un metalinguaggio derivante
dall'SGML (Standard Generalized Markup Language) che consente la creazione di nuovi
linguaggi di marcatura (ad esempio lo stesso HTML è stato ridefinito in XML come XHTML).
La caratteristica innovativa dell'XML è la possibilità di aggiungere informazioni semantiche
sui contenuti attraverso la definizione di opportuni tag.
•
API
API è l'acronimo di Application Programming Interface, in italiano interfaccia di
programmazione dell'applicazione. Indica ogni insieme di procedure disponibili per i
programmatori, di solito raggruppate a formare un set di strumenti specifici per un determinato
compito. È un metodo per ottenere un'astrazione, di solito tra l'hardware e il programmatore, o
tra software a basso e alto livello. Possono essere private o pubbliche: si può dire che le API di
un certo programma o servizio consentono agli sviluppatori di creare software o servizi a
complemento di quel programma o servizio [API].
•
Web Service
I Web Service sono un sistema software progettato per supportare l'interoperabilità tra diversi
elaboratori su di una medesima rete. Caratteristica fondamentale di un Web Service è quella di
offrire un'interfaccia software descritta in un formato automaticamente elaborabile utilizzando
la quale altri sistemi possono interagire con il Web Service stesso attivando le operazioni
20
descritte nell'interfaccia tramite appositi "messaggi". Scopo dei Web Service è di limitare il più
possibile le attività di implementazione, consentendo di accedere a servizi software resi
disponibili in rete, assemblarli secondo le proprie necessità e pagarli soltanto per il loro
utilizzo effettivo, metodologia individuata nella terminologia anglosassone come pay per use,
on demand software, just in time software, on tap software.
•
RSS
RSS è un formato per la distribuzione automatica dei contenuti di un sito Web basato su XML,
da cui ha ereditato la semplicita, l'estensibilità, la flessibilita. RSS ha rappresentato un
significativo passo in avanti nell'architettura del Web, consentendo non soltanto di collegarsi
ad un servizio, ma di sottoscriversi ad esso, ricevendo delle notifiche ogni qual volta il servizio
cambia di stato. Questo avviene attraverso la creazione di un feed RSS sempre aggiornato
appena i nuovi contenuti si rendono disponibili. Un feed consiste in un documento in cui sono
presenti sia i contenuti, sia metainformazioni (metadati) che descrivono i contenuti stessi. La
fruizione di un documento RSS è un processo molto semplice. Le modalità più diffuse sono
due: attraverso appositi software che interpretano un feed permettendo agli utenti di
visualizzarne i contenuti (feed reader), o integrando i contenuti del feed all'interno di un sito
Web (feed aggregator). Il tutto senza necessità di navigazione in Internet, senza iscriversi a
newsletter o altro e senza inviare alcun dato personale. RSS è diventato lo standard de facto
per l'esportazione di contenuti Web: i principali siti di informazione, i quotidiani online, i blog
più popolari, i fornitori di contenuti in generale, tutti sembrano averlo adottato.
•
Podcast
Un Podcast è una semplice registrazione digitale audio o video allegata ad un feed RSS,
pubblicata sul Web per chiunque si abboni ad una trasmissione periodica e scaricabile
automaticamente da un apposito programma client gratuito [PDC]. La differenza rispetto alla
classica distribuzione audio/video che da anni si fa sul Web è data da due novità:
l'automatismo nelle operazioni di download dei nuovi contenuti e la possibilità di creare un
proprio palinsesto personalizzato. Un broadcast indica una trasmissione radio/tv tradizionale,
ascoltabile ad una determinata ora decisa dall'emittente, quindi sincrona e on-line. Uno stream
indica una risorsa audio/video fruibile in qualsiasi momento tramite un collegamento internet
al sito dell'emittente (Video/Audio on demand) quindi: asincrona e on-line. Un podcast indica
una risorsa audio/video fruibile in qualsiasi momento, scaricata automaticamente in formato
mp3 (o altro) dal sito dell'emittente, quindi: asincrona, off-line e nomadica. Gli strumenti
necessari per registrare un podcast sono alla portata di molti, se non di tutti: un microfono, un
21
banale software per la registrazione audio e un editor di testo per creare il feed RSS che lo
incapsula.
•
Tag
Internet è uno sterminato mare di informazioni nel quale sta diventando ormai difficile
"pescare" i contenuti che ci interessa leggere, ascoltare o guardare. I tag (etichette) sono la
soluzione al problema. Ogni volta che un utente crea qualche contenuto da diffondere in rete in
un blog o in un forum (testo, audio e video) è bene che associ alcuni tag, ovvero parole chiave
che facilitano enormemente il reperimento di informazioni. Sempre più spesso, nei siti Web
2.0 appaiono le cosiddette "tag clouds" (nuvole di tag), che sono rappresentazioni degli
argomenti trattati in un forum o un blog. Le parole chiave sono visualizzate con diverse
dimensioni di carattere: a dimensione più grande, corrisponde una maggior discussione di quel
determinato argomento [TAG].
•
AJAX
Il Web 2.0 è costruito con tecnologie come AJAX (Asynchronous JavaScript and XML), un
approccio di sviluppo Web in grado di creare applicazioni Web dinamiche ed interattive
usando una combinazione di:
✔
HTML (o XHTML) e CSS (Cascading Style Sheets) per la parte visiva.
✔
DOM (Document Object Model) modificato attraverso JavaScript per mostrare
dinamicamente le informazioni e interagirci.
✔
L'oggetto XMLHttpRequest per interscambiare e manipolare dati in modo asincrono
tra il browser dell'utente e il Web server (in genere viene usato XML e XSLT, anche
se le applicazioni AJAX possono usare altre tecnologie, come l'HTML preformattato,
testo semplice, JSON o JSON‐RPC come alternativa a XML/XSLT).
Questa miscela di tecnologie permette alle pagine di funzionare più come applicazioni per il
desktop, che come pagine di contenuto statico antiquate che troviamo di solito sul Web.
Tramite i siti potenziati con AJAX, gli utenti possono interagire con le informazioni nelle
singole pagine come se stessero usando un'applicazione, abbandonando la vecchia metafora
del Web come percorso di navigazione sequenziale in mezzo a pagine statiche [AJX].
22
1.4 Esempi di applicazioni Web 2.0
Il Web 2.0 ha preso corpo negli ultimi mesi, iniziando ad interessare moltissime aziende, che
intravedono nuove possibilità commerciali. Vediamone qualche esempio:
•
CloudMark [CLD] è un altro prodotto che sfrutta l'intelligenza collettiva, creando filtri anti‐
spam collaborativi, ovvero come aggregazione delle decisioni individuali prese da ciascun
utente sulle proprie email, classificandole come spam o meno.
•
Meebo [MEB] è uno strumento basato su AJAX per utilizzare contemporaneamente più servizi
di instant messaging. Meebo abilita gli utenti ad usare AIM, MSN, Yahoo ed altri servizi di
instant messaging in una sola schermata, con un'unica lista di amici. Il sito permette agli utenti
di semplificare la loro esperienza con l'IM in una piattaforma, eliminando il fastidio di dover
usare più programmi in una volta. Ancora nella sua fase iniziale, attualmente Meebo soffre di
problemi di prestazioni lente, ma gli ideatori del sito promettono di correggere tutti gli errori.
Una volta fatto, questo sarà un uso conveniente, popolare ed utile delle API.
•
DropCash [DRC] è un sito per organizzare e monitorare una campagna di beneficenza e rende
possibile promuovere una raccolta di fondi, monitorarla e mostrare i suoi progressi. Creato con
l'API di PayPal, utilizza il sistema di verifica Typekey ed è anche disponibile la funzione
DropCash Parser, che permette agli utenti di personalizzare la loro pagina per la
visualizzazione della campagna di raccolta fondi. E' uno strumento utile per le associazioni di
beneficienza (come per la raccolta dell'Uragano Katrina), ma anche per gli sviluppatori di
software. Infatti, ogni campo che ha a che fare con la proprietà intellettuale facilmente
riproducibile (come film, televisione, musica o software) in questo modo possono assicurare
un pagamento sufficiente per i loro lavori. Ad esempio, i produttori di un film potrebbero
specificare una cifra prima di fare uscire il film e non farlo uscire fino a che la campagna di
raccolta fondi non sia conclusa. In questo modo, gli studi perderebbero meno rispetto alla
pirateria, in quanto il film sarebbe parzialmente pagato e non importerebbe se fosse copiato
attraverso la rete o venduto di contrabbando per strada. Questa idea potrebbe aiutare a risolvere
alcuni dei problemi che stanno affrontando la TV e l'industria cinematografica e potrebbe
facilitare il percorso per la futura televisione on-line.
•
Google Suggest è un'applicazione che completa il campo di ricerca di Google con
suggerimenti di ricerche simili. Vuole rendere più facile e più conveniente la ricerca
suggerendo argomenti che potrebbero risultare utili per gli utenti. Ma in questa applicazione
23
apparentemente semplice c'è di più. E' un ottimo esempio dell'uso di AJAX all'interno del
browser, in quanto porta nuove informazioni senza dovere aggiornare la pagina e rendendone
più facile l'accesso. La tecnologia è affascinante anche perché i suggerimenti del testo
reagiscono in fretta a ciò che digita l'utente, alterandosi costantemente con le parole che si
formano sullo schermo. Sebbene questo sia stato possibile per anni con le applicazioni per il
desktop, Google Suggest mostra l'abilità di auto-completamento attraverso le tecnologie del
Web 2.0. E' uno strumento utile anche per chi si occupa di marketing e per i blogger, in quanto
fornisce un riferimento per determinare quali frasi hanno la più alta popolarità relativa,
permettendo a chi si occupa di marketing di creare su misura i loro titoli in base a quelle parole
chiave.
•
Google Calendar [GCL] è un servizio di calendario Web based che offre un vasto set di
funzionalità che rende facile tener traccia della tua programmazione e condivide i calendari
con altri. Attraverso un'interfaccia molto pulita Google Calendar visualizza un "minicalendario" sulla sinistra dello schermo che mostra il mese corrente, e un pannello a destra che
mostra il giorno corrente, la settimana, il mese, i prossimi 4 giorni o una lista di tutti i tuoi
eventi programmati. Puoi inoltre importare i calendari che usano i formati iCal o CSV. Il
nuovo Google Calendar è disponibile a chiunque abbia un account Google gratuito.
•
Multiply [MLT] ti offre un modo semplice per condividere tutti i tipi di contenuto digitale
incluse foto, blog, video, musica o altro, tutto in un unico semplice posto. Con Multiply, puoi
condividere e discutere i tuoi file con chiunque appartenga al tuo "social network" ed anche
essere allertato quando c'è qualcosa di nuovo. Il tuo sito Web personale su Multiply
(yourname.multiply.com) ti permette di condividere molti contenuti senza dover installare
niente e con uno spazio di storage illimitato; inoltre fornisce degli account personalizzati per
chi ha un livello di attività mensile molto alto.
•
HousingMaps, un grande indicatore del potenziale dell'universo del Web 2.0, dove i siti
esistenti ed i software possono essere facilmente manipolati o intrecciati per fornire un nuovo
servizio che non sarebbe possibile con i siti originali. Questa applicazione online gratuita è un
ottimo sommario visivo di due servizi liberi disponibili sul Web. Il primo è Craigslist, il
popolare servizio pubblicitario online libero che sta sottraendo molta pubblicità dai giornali
tradizionali. Craigslist offre un'interfaccia molto semplice da utilizzare con differenti punti di
vista sulle categorie. L'altro è Google Maps, un servizio interattivo di visualizzazione mappe
che fornisce un accesso diretto a mappe zoomabili e viste satellitari su tutto il pianeta.Ora, se
24
tu estrai da Craiglist tutte le pubblicità riguardo all'affitto di un appartamento e le mixi con
Google Maps avrai un eccezionale mappa visuale di chi sta affittando cosa. Quando visitiamo
HousingMaps.com ci troviamo di fronte a una mappa degli Stati Uniti come illustrato in figura
1.4.
Figura 1.4
La prima cosa che possiamo fare è muoversi ovunque sulla mappa, semplicemente cliccando
e trascinando il mouse nel punto che desideriamo. Possiamo cliccare uno dei palloncini verdi
che indicano le città sulle quali il servizio è attivo. Una volta che clicchiamo sulla città
specifica, ci sarà offerta l'opzione di selezionare tra più appartamenti da affittare, acquistare,
case sfitte e subaffitti, come mostra la figura 1.5.
Figura 1.5
Una volta selezionata la categoria preferita, possiamo zoommare e vedere tutte le case della
25
categoria selezionata visualizzate con palllini gialli e rossi. Sulla parte sinistra dello schermo
possiamo vedere la mappa attuale della città selezionata con i pallini colorati piazzati nei
luoghi precisi. Nella parte destra dello schermo abbiamo una lista di tutti gli appartamenti
selezionati. I più recenti prima, i più vecchi dopo. L'utente può decidere lui stesso come
classificarli cliccando sulle etichette della colonna disponibili in alto. Queste includono
immagini, prezzi, numeri di stanze da letto, descrizioni, data della casa e città, come si vede
dalla figura 1.6.
Figura 1.6
I cerchietti gialli indicano che la casa è disponibile. Per vederla basta passare con il mouse
sopra un palloncino giallo, e vedrai le foto pubblicate di quel luogo con informazioni chiave
come la grandezza, il numero di stanze, il costo, la locazione, come mostra la figura 1.7.
26
Figura 1.7
La mappa può essere visualizzata anche attraverso una foto satellitare che ti permette
chiaramente di verificare le strade principali, le altre costruzioni e le infrastrutture pubbliche.
Guardare la locazione della casa attraverso una foto satellitare ti permette di verificare se si
trova vicino a parchi, centri commerciali, autostrade e altri servizi. Un esempio è raffigurato
in figura 1.8.
27
Figura 1.8
Un punto di vista ibrido, la "hybrid view", che mixa l'immagini via satellite e le informazioni
sulla mappa, offre il meglio dei due punti di vista, come si vede in figura 1.9.
Figura 1.9
Per velocizzare la ricerca della casa Housingmaps.com rende disponibili in alto nel pannello
di visualizzazione due semplici selettori di categoria che ti permettono di decidere prima la
locazione e il prezzo della casa che stai cercando. I due filtri sono organizzati in modo
semplice da usare attraverso drop-down menu e forniscono un modo intuitivo di ricercare
28
nella tua casa, come mostrato in figura 1.10.
Figura 1.10
Un set extra di filtri opzionali (visualizzati solo se lo desideri), ti permette di specificare altre
keyword che restringono la ricerca, tanto quanto la capacità di specificare il numero delle
stanze, la disponibilità delle immagini e se i cani e i gatti siano accettati.
29
Capitolo 2: Progetto desktop@UniFe
2.1 Scopo del progetto
Il progetto desktop@UniFe ha come obiettivo la realizzazione di un Web desktop, ovvero mira a far
confluire i servizi di base che il generico utente utilizza nel normale uso del PC in un unica pagina
Web facilmente personalizzabile. Applicazioni come un word processor, un client di posta elettronica,
un file system, sono così resi accessibili dovunque e in qualsiasi momento tramite un semplice
browser. Il fine ultimo è di accorpare il Web desktop direttamente nel Content Management System
(CMS, sistema di gestione dei contenuti) che si è adottato per il portale di ateneo. Il progetto raccoglie
gli spunti forniti dalla nuova filosofia che sta nascendo nella comunità degli sviluppatori, il Web 2.0,
in cui si vede il Web non più come semplice contenitore di siti ma come piattaforma per lo sviluppo e
la distribuzione di servizi.In questo capitolo andremo a definire il concetto di Web desktop prendendo
spunto dal concetto di desktop che siamo soliti utilizzare nel PC.
2.1.1 La metafora del desktop
Il desktop è un'interfaccia grafica nel quale lo schermo del computer appare come un piano di lavoro
(desktop, in inglese, si riferisce al piano della scrivania) su cui sono posizionati oggetti grafici
(finestre, icone) che corrispondono a oggetti come applicazioni, file, directory, device fisici..., coi
quali l'utente interagisce tramite mouse e tastiera. Gli oggetti sul desktop possono essere
metaforicamente aperti, chiusi, spostati, archiviati, gettati nel cestino, e tutte queste azioni avviano
processi che la macchina esegue sui programmi o dati a cui le icone sono collegate: esecuzione di
applicazioni, accesso, salvataggio, cancellazione di dati in una porzione di memoria, spostamento di
dati da una porzione di memoria all'altra, e così via. Si tratta di una metafora che ha come obiettivo
quello di fornire un accesso facile e intuitivo agli elementi del sistema sfruttando l'analogia tra la
scrivania come banco di lavoro dove posizionare documenti, cartelle e strumenti di lavoro, come
penne, matite e gomma, disposti in un ordine logico, e l'ambiente desktop come rappresentazione
virtuale delle risorse hardware e software a disposizione nel sistema. Il desktop è un concetto recente
divulgato in larga scala da Windows 3.1, anche se già presente su PC targati Apple/Macintosh, e
oramai presente come interfaccia di tutti i sistemi operativi dotati di interfaccia grafica.
2.1.2 Il desktop sul PC
L'ambiente desktop a cui siamo abituati è quindi un'astrazione relativa alla macchina fisica su cui è
30
residente il sistema operativo.
La conseguenza è che questo modello di desktop è legato alle risorse hardware e software della
piattaforma (Windows, Linux, Mac, ...) che lo implementa. I limiti di questo modello sono:
•
la gestione del sistema è a carico dell'utente che deve preoccuparsi di effettuare la
configurazione e l'aggiornamento dell'ambiente desktop per ogni singola macchina;
•
la fruizione dei servizi non è ubiqua, l'utente può accedere al proprio ambiente desktop solo
attraverso la macchina che lo ospita e non tramite una piattaforma, o un dispositivo, differente;
•
un sistema operativo per personal computer non è tollerante ai guasti (fault tolerance), a
esempio se la macchina va in crash non esiste un meccanismo automatico di backup con
conseguente perdita di dati;
•
difficile sincronizzazione dei dati fra i vari ambienti desktop dei diversi dispositivi utilizzati
dall'utente, per esempio dal computer di casa a quello dell'ufficio, dal portatile al palmare.
2.1.3 Il desktop sul Web
Portare il desktop sul Web significa disaccoppiare l'ambiente desktop dalla macchina fisica in modo
che l'utente si disinteressi del luogo dove andrà a salvare i propri dati e dove sono residenti gli
applicativi perchè tutto questo sarà sempre fruibile ovunque e su qualsiasi dispositivo: l'utente può
accedere al proprio ambiente di lavoro da qualunque piattafoma, hardware e software, che sia dotata
di un collegamento alla rete Internet e di un browser. Lo scopo è di creare un'applicazione Web
contenente gli strumenti di produttività di uso comune, similmente alla metafora del desktop classico.
Per farlo sfruttiamo al posto del PC il sistema distribuito World Wide Web come piattaforma per
aggregare i servizi che questa piattaforma offre e integrarli con i servizi Web pubblicati dal sistema
informativo dell'Università di Ferrara, componendoli in un unico servizio. Il Web desktop si
presenterà come una pagina Web con uno sfondo che contiene delle icone e una barra degli strumenti
per mandare in esecuzione gli applicativi che verranno resi disponibili. Questi saranno contenuti in
finestre che si sovrappongono sullo sfondo e potranno essere ridimensionate e trascinate sullo
schermo tramite meccanismi di drag&drop. Gli applicativi che abbiamo pensato inizialmente di
aggregare al servizio sono quelli base con cui ognuno ha familiarità e che usa quotidianamente:
•
strumenti tipici di Office;
•
client di posta;
•
un file system;
31
•
un calendario;
•
un lettore di feed RSS.
Diverse applicazioni potranno essere in esecuzione contemporaneamente (finestra aperta) o in pausa
(finestra minimizzata a icona) e dovranno essere facilmente personalizzabili dall'utente. Dovrà essere
possibile, ad esempio, scegliere i contenuti dei canali RSS, gestire un file system creando e
distruggendo directory e in queste salvare o eliminare i propri file. Ovviamente la nostra applicazione
dovrà memorizzare lo stato in cui l'utente ha personalizzato la propria area di lavoro in modo da
poterla ripresentare inalterata. Una volta stabilito il goal del nostro progetto vediamo ora di stabilire in
dettaglio le motivazioni e le specifiche a cui la nostra applicazione dovrà attenersi. In figura 2.1
mostriamo lo schema di principio dell'applicazione.
Figura 2.1
L'Università di Ferrara distribuisce vari servizi ai propri utenti: posta elettronica, spazio Web, liste
d'iscrizione agli esami, spazio disco virtuale, news di ateneo. Questi servizi sono raggiungibili via
32
Web in modo indipendente, ognuno tramite un proprio sito dedicato e quindi ognuno con una propria
interfaccia grafica e un proprio sistema di autenticazione. Sfruttando le tecnologie che il Web 2.0 ha
introdotto, il nostro progetto di Web desktop mira ad accorpare tutti questi servizi Web, con i
conseguenti vantaggi:
•
fornire un unico punto di accesso per tutti i servizi con un singolo login;
•
manutenzione centralizzata del sistema: l'aggiornamento dei software avviene sul server e
risultano trasparenti all'utente che scarica all'interno del browser solo l'interfaccia
dell'applicativo;
•
aggregazione e integrazione dei servizi per fornire un'interfaccia comune, in modo da
aumentare la facilità d'uso degli strumenti;
•
virtualizzazione dell'area di lavoro: servizi e dati sono raggiungibili ovunque e con dispositivi
diversi;
•
effettuare backup automatici dei dati sui quali l'utente sta lavorando, in modo trasparente
all'utente;
•
riusabilità di servizi esistenti.
Questa soluzione porta anche degli svantaggi, quali:
•
i costi di gestione del sistema sono a carico degli amministratori dell'infrastruttura server;
•
l'applicazione è inutilizzabile se l'utente non ha accesso a Internet;
•
è necessario che la macchina client abbia la potenza di calcolo necessaria all'elaborazione di
applicativi complessi;
•
è necessario avere un browser aggiornato per poter fruire delle potenzialità degli strumenti
messi a disposizione dal Web 2.0.
2.2 Specifiche di progetto
In primo luogo stabiliamo che l'autenticazione al sistema avverrà da parte di utenti le cui credenziali
per l'accesso, in termini di username e password, sono già presenti nel sistema informativo
dell'Università di Ferrara. L'ateneo infatti si incarica di fornire un'identità digitale a tutti gli strutturati
e studenti che ne fa parte. Esisterà quindi un unico punto d'ingresso al sistema in cui tutti gli utenti si
autenticano e la vista dell'applicazione che si presenta a essi sarà la stessa, a meno delle
personalizzazioni sui contenuti, non esistendo tipologie di utenti differenti (ad esempio i ruoli di
amministratore, editore, autore presenti in un Content Management System).
33
Entrando nel dettaglio del progetto andiamo ora a stabilire le specifiche a cui l'applicazione dovrà
rispondere:
•
Autenticazione centralizzata: una caratteristica importante e che darà un valore aggiunto
notevole all'applicazione sarà l'autenticazione centralizzata, ovvero immettentendo una sola
volta la propria username e password l'utente potrà utilizzare tutti i servizi nella propria area di
lavoro senza doversi riautenticare.
•
Utilizzo di standard aperti e di software open source: l’adozione di software open source porta
normalmente a un risparmio economico in termini di costi per licenze, ma anche di costi per
gli aggiornamenti. In termini di interoperabilità, il software e gli standard aperti sono più adatti
delle loro controparti proprietarie. Lo scambio di dati e funzioni tra prodotti diversi implica
difatti, in generale, la realizzazione di interfacce, e in caso di software e standard proprietari
solo chi detiene il codice sorgente può realizzare tali interfacce.
•
Modularità e semplicità di estensione: il sistema dovrà basarsi su una struttura estremamente
flessibile, questo per garantire l'inserimento di nuovi servizi in modo semplice e pratico, senza
dover rimaneggiare l'architettura del sistema e dei dati ogni volta. La modularizzazione dei
componenti del sistema (nel pieno rispetto dei nuovi canoni del Web 2.0), garantisce una
relativa libertà di sviluppo di ogni modulo, senza creare colli di bottiglia nel processo di
sviluppo. È facile intuire come un'architettura modulare consenta una facilità di estensione
molto superiore a un software monolitico: l’aggiunta di una o più funzionalità a un modulo,
entra in gioco solo all’interno del modulo stesso; l’aggiunta di nuovi moduli, non
necessariamente determina un cambiamento di tutto il sistema, ma più verosimilmente,
soltanto di alcuni moduli che vanno a interagire con i nuovi.
•
Sicurezza: dovendo far transitare dati sensibili tra l'interfaccia client e il server, come ad
esempio per l'autenticazione, dovremo prestare particolare attenzione per fare in modo che
questi dati siano protetti, inoltre essendo l'applicazione personale dovremo garantire un elevato
grado di sicurezza in modo che non sia possibile appropriarsi dell'identità virtuale altrui. In
sostanza non dovrà essere possibile per l'utente X consultare i dati privati dell'utente Y.
•
Personalizzazione contenuti: tramite appositi menù l'utente può decidere quali contenuti
inserire nei vari servizi offerti dal Web desktop. La nostra applicazione, sfruttando il profilo
dell'utente (username e password), gestisce la memorizzazione del proprio stato. Le
personalizzazioni che un utente può fare nel proprio ambiente desktop sono riproposte al
34
successivo accesso al sistema.
•
Integrazione servizi esterni: l'applicazione dovrà potersi interfacciare anche a servizi forniti da
terzi come ad esempio caselle di posta personali su altri domini.
•
Usabilità: l'utente dovrà interagire con il Web desktop con la stessa facilità d'uso con cui è
abituato a interagire con un ambiente desktop tradizionale e i relativi applicativi.
•
Comunicazioni asincrone: le operazioni lente in un'interfaccia ben progettata sono eseguite in
background permettendo all'utente di continuare il suo lavoro potendo eseguire altre azioni.
Per fare ciò le comunicazioni fra client e server dovranno avvenire in modo asincrono. Nelle
comunicazioni asincrone, il processo mittente può invocare l'inizio della comunicazione e
continuare nella propria esecuzione senza attendere che il processo che riceverà il messaggio
abbia effettivamente invocato la primitiva di ricezione.
•
Indipendenza dal dispositivo: l'applicazione dovrà poter essere fruibile dai diversi terminali
che sono abilitati ad accedere al WWW dal momento che sono sempre più numerosi i
dispositivi che hanno un browser installato, o che possono installarlo (personal computer,
palmari, smarphone, ecc...). Questi dispositivi sono diversi fra loro e soprattutto hanno
differenti schermi e differenti modalità di interagire con l'utente finale per cui occorre fornire
ad ognuno di essi una vista dedicata del Web desktop.
Condizione necessaria per la fruibilità della applicazione sarà di avere una rete a banda larga ma
soprattutto affidabile. Per la realizzazione dell'applicazione dovremo scegliere gli strumenti più
idonei, ed in particolare questi strumenti dovranno permettere di estendere le funzioni che andremo a
creare in modo semplice.
2.3 Architettura del sistema
Il sistema che abbiamo pensato è un servizio fruibile via Web tramite un browser. La paginaapplicazione che il browser carica porta con sé una serie di meccanismi lato client che servono per
l'interazione con l'utente e con l'application server. Verso l'utente, infatti, sono previsti meccanismi di
personalizzazione dell'interfaccia semplici e intuitivi che sono giocoforza implementati sul lato client
dell'applicazione. Il client dialoga con il nostro application server tramite un linguaggio comune a
entrambi. La figura 2.2 mostra schematicamente l'architettura del nostroWeb desktop che è composta
da un lato client e da un lato server e che descriveremo separatamente.
35
Figura 2.2
2.3.1 Lato server dell'architettura
L'application server è il server su cui girano le nostre applicazioni e che le espone come servizi Web
incapsulando le funzionalità che l'Università già forniva singolarmente. Esso è anche responsabile del
meccanismo di autenticazione e, in base all'utente che ha effettuato il login, invia al client i dati del
relativo Web desktop. Inoltre l'application server è l'unico punto di contatto della nostra applicazione
verso l'esterno. L'application server si comporta da proxy server occupandosi di andare a reperire le
informazioni sui servizi residenti su server terzi. In modo da aggirare le restrizioni sulle
comunicazioni verso i server esterni al dominio da quello su cui risiede il nostro Web desktop dovute
alle impostazioni di sicurezza dei comuni browser. I servizi Web pubblicati dal back-end
dell'architettura del progetto desktop@UniFe vengono descritti tramite il protocollo REST
(REpresentational State Transfer), non tramite i protocolli SOAP (Simple Object Access Protocol),
36
WSDL (Web Services Description Language), UDDI (Universal Description Discovery and
Integration) tipici dell'architettura dei Web Service. REST è un'alternativa a SOAP per fornire servizi
Web con XML. La soluzione REST puo' essere sintetizzata come "XML su HTTP" ed è più indicata
in scenari, come il nostro, in cui i servizi non devono essere pubblicati all'esterno [RST]. Ci troviamo
di fronte a un'architettura a servizi: la logica applicativa è scomposta e modularizzata in un insieme di
singoli servizi presentati ad applicazioni client che li consumano selettivamente e le comunicazioni fra
i componenti client e server dovranno avvenire tramite messaggi asincroni.
2.3.2 Lato client dell'architettura
Il client è l'interfaccia del Web desktop, il punto di aggregazione delle funzionalità esposte
dall'application server in un'unica pagina-applicazione contenuta all'interno del browser. Per fare
evolvere il browser da comune strumento di navigazione in un ambiente fortemente interattivo esso
sarà esteso nelle funzionalità da un engine allegato alla pagina-applicazione e che verrà gestito dal
browser stesso all'interno del proprio ambiente di esecuzione. Si nota dalla figura 2.2 che rispetto alle
tipiche architetture a 3 livelli delle applicazioni Web, come quella raffigurata in figura 2.3, dalla
nostra architettura è assente il Web server. Infatti il lato server non invia al lato client pagine HTML
ma piuttosto dati. Di conseguenza il lato client dell'applicazione non è un "thin client" tipico delle
applicazioni Web con architettura a 3 strati costituito dal browser che visualizza le pagine che il Web
server gli spedisce all'interno di un percorso di navigazione. Il lato client dell'applicazione è un "fat
client", un client "intelligente", composto dal browser e da quella logica che governa l'interfaccia
utente e che permette una gestione aggregata e personalizzabile dei servizi Web.
37
Figura 2.3
38
Dal punto di vista della progettazione del lato client possiamo modellare l'architettura del progetto
seguendo il pattern architetturale Model-View-Controller (MVC) il cui schema è rappresentato in
figura 2.4. Con il termine Model si individua la rappresentazione dei dati dell'applicazione e le regole
di business con cui tali dati vengono acceduti e modificati. La View è la vista del modello. Uno stesso
modello può quindi essere presentato secondo diverse viste. Il Controller è colui che interpreta le
richieste della view in azioni che vanno a interagire con il Model aggiornando conseguentemente la
view stessa. L'intento del pattern MVC è di disaccoppiare il più possibile tra loro le parti
dell'applicazione adibite al controllo, all'accesso ai dati e alla presentazione [MVC]. Questo approcio
porta a innegabili vantaggi come:
•
indipendenza tra il livello dei dati (model), la logica di presentazione (view) e quella di
business (controller);
•
separazione dei ruoli e delle relative interfacce;
•
viste diverse per il medesimo model;
•
semplice supporto per nuove tipologie di client: bisogna scrivere la vista ed il controller
appropriati riutilizzando il model esistente.
39
Figura 2.4
Dal punto di vista del client, rifacendoci alle figure 2.2 e 2.4:
•
il model è riconducibile ai servizi Web esposti dall'application server. Ha la responsabilità di
gestire la logica di business del Web desktop.
•
la view è l'interfaccia grafica (GUI) del Web desktop, renderizzata dal browser. Gestisce la
logica di presentazione dei dati avendo il compito di costruire gli elementi dell'interfaccia
grafica che rappresentano il mezzo mediante il quale gli utenti interagiscono con il sistema e di
delegare al controller l'esecuzione dei processi richiesti dall'utente dopo averne catturato gli
input;
•
il controller è l'engine in esecuzione all'interno del browser che ha la responsabilità di
trasformare le interazioni dell'utente con la view in azioni eseguite dal model. Esso
implementa la logica di controllo dell'applicazione realizzando la mappatura tra input
40
dell'utente e processi eseguiti dal model e selezionando le schermate della view richieste.
2.4 Fasi di progetto
Questa tesi si concentra sullo sviluppo del lato client del Web desktop, vediamone le fasi principali.
Come prima cosa sono state stabilite le tecnologie che andremo a utilizzare per l'implementazione del
lato client del nostro applicativo. Una volta stabilita la base tecnologica dovremo decidere la struttura
dati che servirà come modellazione dell'ambiente desktop dell'utente per memorizzarne lo stato.
Questa struttura dati sarà alla base delle comunicazioni client/server, ricordando, come da specifiche,
che la struttura dovrà essere flessibile e facilmente espandibile. La struttura è stata concordata di
comune accordo fra chi ha esposto i servizi Web (lato server del Web desktop), oggetto di una
precedente tesi, e chi ha sviluppato l'interfaccia (lato client del Web desktop), oggetto di questa tesi.
Assumendo quindi l'esistenza di servizi Web e di una struttura dati comune fra client e server, il passo
successivo sarà quello di implementare il client stesso.
Per farlo come primo passo si è costruito il prototipo dell'interfaccia grafica del Web desktop, e
successivamente la logica che la governa, rimanendo slegati dal lato server e simulando, per il
momento, le comunicazioni del controller con il model. In dettaglio ecco le attività della fase di
prototipazione dell'interfaccia:
•
creazione dell'ambiente desktop con drag&drop degli oggetti che contiene, che sono icone e
finestre;
•
gestione del comportamento delle finestre che possono essere ridotte a icona e ridimensionate;
•
inserimento di un menu a scomparsa per mandare in esecuzione gli applicativi disponibili
all'interno dell'ambiente.
Una volta che avremo a disposizione il prototipo potremo andare a fare una prima fase di test per
controllare se l'applicazione è fruibile o meno dai vari dispositivi e dai vari browser che abbiamo
stabilito in fase di specifica, se questa fase non verrà superata si dovrà tornare alla fase di
prototipazione.
Finita la fase di test si andrà a sviluppare alcuni dei servizi di cui si è discusso con la relativa logica di
controllo, come:
•
home page: si tratta di un servizio che dà agli utenti la possibilità di costruirsi una propria
41
home page personalizzata, un luogo in cui l'utente può mettere solo il contenuto che vuole, che
si autoaggiorna ed è sempre disponibile. Permette agli utenti di aggiungere fonti di
informazioni esterne importando canali di news in formato RSS tramite un lettore di feed RSS
integrato, tenere monitorati vari account di posta in modo analogo alle news in RSS, scrivere
note in promemoria analogamente a quanto si fa con un post-it, gestire liste di cose da fare,
ecc... Queste funzionalità saranno contenute in aree della pagina, moduli, che possono essere
riorganizzati tramite drag&drop all'interno della home page stessa, aggiunti, eliminati, ridotti a
icona, ecc...
•
word processor: editor di documenti simile a MS Word o OpenOffice Writer.
Una volta integrati questi primi servizi si ripeteranno i test, analogamente alla prima fase.
Dopo aver realizzato un prototipo con i primi servizi aggregati passiamo alla realizzazione della
persistenza delle personalizzazioni dell'ambiente basandosi sulla struttura dati che modella il Web
desktop. Infatti, in seguito all'autenticazione dell'utente, il server (componente model) è responsabile
di fornire all'utente autorizzato la propria scrivania virtuale, memorizzata su database, per permettere
al componente view di presentarla graficamente. Per fare ciò la view implementerà un parser che
trasformerà la struttura dati suddetta in componenti che un browser è in grado di interpretare e
visualizzare. Viceversa il controller è responsabile di interpretare ed aggiornare questa struttura in
seguito all'interazione col proprio desktop da parte dell'utente, con lo scopo di comunicarne al model i
cambiamenti.
Terminata l'integrazione e la sincronizzazione fra client e server possiamo passare alla fase di beta
testing da parte degli utenti. Nel frattempo si potrà continuare ad aggregare tutti i servizi che si
vorranno sviluppare formando un ciclo di integrazioni e test potenzialmente illimitato, in linea con il
concetto di perpetual beta insito nella filosofia del Web 2.0.
La Figura 2.5 schematizza le fasi di progetto seguite per la realizzazione del lato client del Web
desktop.
42
Figura 2.5
43
Capitolo 3: Tecnologia
3.1 Architettura AJAX
Abbiamo accennato alla tecnologia AJAX nella sezione 1.3, parlandone come una delle tecnologie
che formano le basi del Web 2.0. Si parla molto di AJAX e delle possibilità che offre nel
miglioramento delle applicazioni Web, in quanto è in grado, con relativa semplicità, di ridurre il gap
esistente tra le applicazioni desktop, ricche dal punto di vista grafico e veloci nei tempi di risposta, e
quelle Web. Dopo il grande successo di alcune applicazioni Web realizzate con questa tecnica (ad
esempio Gmail, Google Maps, Google Suggest, Flickr), AJAX è diventato molto popolare e si sta
diffondendo capillarmente. La più grande sfida nel creare applicazioni con AJAX non riguarda
l'aspetto tecnico (le tecnologie utilizzate sono stabili e mature), ma la capacità dei designers di
dimenticare e disimparare il modello classico di applicazione Web-based a favore di un nuovo
modello.
3.1.1 Architettura: modello classico e modello AJAX a confronto
Come rappresentato sul lato sinistro della figura 3.1, le applicazioni Web classiche funzionano in
questo modo: l'utente effettua una HTTP REQUEST verso il server a fronte di una specifica azione
sull'interfaccia grafica (clic su un bottone, su un link, su un' immagine, ecc.); il server riceve i dati,
effettua una elaborazione e prepara la RESPONSE spedendo al client una nuova pagina Web che
andrà a sostituire (o a ricaricare) la pagina precedente presente sul browser dell'utente. La
caratteristica di questa modalità di colloquio è che c'è sempre qualcuno che deve aspettare: il server
aspetta sino a quando un client non effettua una richiesta e un client aspetta sino a quando il server
non ha concluso l'elaborazione e preparato la pagina HTML di output.
Per ridurre questi tempi di attesa è stato studiato un nuovo modo di scrivere le applicazioni Web:
AJAX elimina quel meccanismo di start‐stop‐start‐stop intrinseco nella natura di ogni interazione sul
Web, introducendo un intermediario, un AJAX engine, tra il server e l'interfaccia utente.
Un'applicazione AJAX sposta lo strato di presentation logic dal lato server al lato client trasformando
il browser da thin a fat client, come mostrato sul lato destro della figura 3.1.
44
Figura 3.1
Invece di caricare una pagina, all'inizio della sessione, il browser carica un AJAX engine, scritto in
JavaScript e di norma posto in un frame nascosto. Questo motore è responsabile sia di effettuare
dinamicamente il rendering dell'interfaccia utente, sia di comunicare con il server in base a particolari
eventi (scrittura in un campo TEXT, selezione di un elemento di una COMBO, ecc.). Per rendere le
interazioni fra client e server asincrone le azioni che normalmente richiederebbero una richiesta HTTP
prendono la forma di una chiamata JavaScript al motore AJAX. Tutto ciò che non richiede di passare
dal server viene gestito dal motore. Se il motore necessita di alcune informazioni dal server le richiede
in modo asincrono rispetto al browser, usando SOAP o altri tipi di servizi Web XML‐based, senza
creare momenti di stallo tra l'utente e l'applicazione. Le risposte del Web server sono elaborate dal
client JavaScript, in background rispetto all'utente. Il risultato è un'interfaccia più interattiva. La figura
3.2 sottolinea le differenze fra le tempistiche dei due modelli.
45
Figura 3.2
I progressi ottenuti da AJAX rispetto alle tradizionali tecnologie sono:
•
riduzione del consumo della banda;
•
navigazione lineare e semplice;
•
maggiore concentrazione dell’utente sui contenuti;
•
applicazioni Web simili ai tradizionali software desktop.
Sfruttando questi vantaggi, AJAX garantisce un'ininterrotta interazione dell'utente con l'applicazione
Web (end‐user productivity), l'utilizzo di un modello asincrono (efficient background processing),
accesso via browser a Web services (Web service access, reuse, interoperability, and SOA
integration), indipendenza dalla piattaforma (browser and operating system agnosticity). Inoltre il
motore AJAX può essere rilasciato come un framework, in modo da non doverselo creare da soli
46
(developer productivity). Tutte queste potenzialità, fanno di AJAX una delle basi che crea un nuovo
spazio, ricco e promettente, su cui sviluppare soluzioni software. Richiede soltanto un browser, si basa
su standard, e valorizza le architetture orientate ai servizi.
AJAX, come la maggior parte dei nuovi approcci, porta con sé alcuni problemi. Il principale consiste
nel fatto che se da un lato non è richiesto alcun plug‐in, dall'altro AJAX richiede che JavaScript sia
supportato dal browser e quindi abilitato (lo stesso problema del periodo in cui DHTML non era
supportato da tutti i browser). Come conseguenza di questo fattore, l'uso della tecnica AJAX impone
una complessa fase di testing, in quanto non basta testare il funzionamento dell'applicazione in sé, ma,
utilizzando tecnologie non ancora universalmente adottate da tutti i browser, come appunto
JavaScript, CSS, XMLHttpRequest, e DOM, occorre testarla su tutte le versioni dei browser che si
vuole adottare.
3.2 I quattro principi portanti di AJAX
I quattro principi fondamentali dell'architettura delle applicazioni AJAX sono riassunti in questo
capitolo, sottolineando le differenze rispetto all'architettura delle applicazioni Web classiche.
3.2.1 Il browser ospita un'applicazione, non pagine
Nel modello classico di applicazione Web centrato sulla pagina il browser è un terminale ignaro di
quello che succede nell'applicazione che ospita. I controlli che fornisce quali il bottone “Back”, la
cronologia della navigazione, ecc.., hanno lo scopo di gestire la navigazione fra pagine dell'utente.
Esso non ha informazioni su dove si trova l'utente nel suo workflow, tutte le informazioni sono
mantenute sul server, solitamente nella sessione dell'utente. Quando l'utente si autentica vengono
creati sul server vari oggetti, tipo il carrello della spesa e le credenziali del cliente nel caso di un sito
di commercio elettronico. Allo stesso tempo l'home page viene servita al browser in uno stream di
markup HTML che mescola assieme parte di contenuti standard, detti "boilerplate", che rimane uguale
fra una pagina e l'altra, e contenuti personalizzati, come gli elementi recentemente visualizzati dal
cliente. Ogni volta che l'utente interagisce col sito un nuovo documento, contenente la stessa miscela
di contenuti generali e personali, viene inviato al browser, come illustra la figura 3.3. Siccome il
browser non è capace di operare diversamente sostituisce la vecchia pagina con la nuova. Quando
l'utente esegue il logout o chiude il browser l'applicazione termina e distrugge la sessione dell'utente
perdendo ogni informazione che il cliente vorrebbe ritrovare al prossimo login, se non è già stata
salvata su memoria persistente.
47
Figura 3.3
In un'applicazione AJAX quando l'utente si autentica al suo browser viene inviata un'interfaccia la cui
maggior parte è costituita da codice JavaScript. Quest'interfaccia persiste per tutta la durata della
sessione, come raffigurato in figura 3.4. Siccome persiste per tutta la sessione dell'utente è possibile
utilizzarla per memorizzare lo stato dell'interazione dell'utente con l'applicativo, ad esempio salvando
il contenuto del carrello della spesa nel browser piuttosto che sul server.
In un'applicazione Web classica il workflow dell'utente è stabilito da codice residente lato server e
l'utente si sposta da una pagina all'altra con un modello d'interazione caratterizzato dal ricaricarsi
dell'intera pagina e dalla conseguente contemporanea attesa dell'utente. Un'applicazione Web
potenziata con AJAX invece ha definito il workflow dell'utente, almeno parzialmente, sul lato client
dell'applicativo.
48
Figura 3.4
3.2.2 Il server produce dati, non contenuto
Quando un utente, per esempio, aggiunge un prodotto nel suo carrello della spesa elettronico
l'applicazione dovrebbe semplicemente aggiornarne il prezzo totale. Come già notato, un'applicazione
Web classica eroga una nuova pagina composta sì dal prezzo totale del carrello aggiornato, ma anche
di contenuti che erano già presenti nella vecchia pagina. Diversamente un'applicazione AJAX è in
grado di aggiornare il singolo elemento della pagina/applicazione che contiene il dato evitando
l'overhead generato dalla ritrasmissione del resto della pagina che rimane immutata. In sintesi in
un'applicazione AJAX al login dell'utente viene caricato nel browser un'applicazione client complessa
col vantaggio poi di attingere solamente dati nelle successive comunicazioni col server come
evidenziano le figure 3.5(A) e 3.5(B) che graficano le differenze fra la comunicazione client/server,
rispettivamente, in un'applicazione Web classica e un'applicazione AJAX. Più tempo dura
l'interazione, maggiore è il risparmio di banda di un'applicazione AJAX rispetto a una classica
49
applicazione Web come si vede dal grafico in figura 3.5(C).
Figura 3.5
3.2.3 Le interazioni dell'utente con l'applicativo devono essere fluide e continuative
Le applicazioni Web tradizionali forniscono agli utenti due meccanismi di input: cliccare hyperlink o
compilare form. Quando questi moduli di input vengono inviati, viene spedita una richiesta al Web
server. Il server Web agisce in base a ciò che è stato trasmesso dal modulo e risponde bloccando o
mostrando una nuova pagina. Dato che molto codice HTML della prima pagina è identico a quello
della seconda, viene sprecata moltissima banda. Dato che una richiesta fatta al server Web deve essere
trasmessa ad ogni interazione con l'applicazione, il tempo di reazione dell'applicazione dipende dal
tempo di reazione del server Web. Questo comporta che l'interfaccia utente diventa molto più lenta di
50
quanto dovrebbe essere, interrompendo il workflow dell'utente. Inoltre mentre invia i dati l'utente si
trova in una sorta di limbo: aspettando il refresh la vecchia pagina rimane ancora visibile, permettendo
all'utente di interagire con essa causando risultati non predicibili. Spesso si considera scontato che
l'utente aspetti il caricamento della pagina, senza considerare che quando un utente sta lavorando deve
mantenere l'attenzione fissa al suo lavoro, tutte le volte che viene distratto perderà sicuramente del
tempo utile. Perciò occorre minimizzare le possibilità di distrazione e di interferenza all'interno
dell'applicazione. Il tempo di tolleranza per l'attesa è 2 secondi con l'eccezione che gli utenti
aspetteranno di più se c'è un feedback di mezzo. Le applicazioni AJAX, alternativamente, possono
processare lato client le interazioni dell'utente tramite l'AJAX engine ed eventualmente comunicare
col server in maniera asincrona. Ciò permette all'utente di continuare ad interfacciarsi con l'applicativo
contemporaneamente alle comunicazioni client-server che stanno avvenendo in background, ed
eventualmente fornirgli un feedback visivo riguardo lo stato di queste ultime.
3.2.4 Disciplinare il codice
Le classiche applicazioni Web fanno già uso di JavaScript ma solamente per la scrittura di piccole
funzioni integrate nelle pagine HTML che interagiscono con il DOM del browser per compiere
determinate azioni non possibili con il solo HTML statico, come aprire una nuova finestra, controllare
i valori nei campi di ingresso, cambiare le immagini al passaggio del mouse, ecc... Con l'avvento delle
applicazioni AJAX invece il codice JavaScript oltre ad essere presente in maggiore quantità ha la
necessità di persistere per tutta la durata dell'applicazione. Per evitare che lo script, cioè l'applicazione
client, si blocchi, sovraccarichi la memoria, ecc..., occorre progettarlo robusto, mantenibile e
performante servendosi delle tecniche e delle conoscenze tipiche della programmazione orientata agli
oggetti che finora, nell'ambito della progettazione di sistemi Web, erano usate solamente lato server.
3.3 Alternative ad AJAX
AJAX non è il solo approccio possibile per creare interfacce di applicazioni Web dall'interazione
paragonabile alle applicazioni desktop.
3.3.1 Soluzioni basate su Macromedia Flash
Macromedia Flash è un sistema per realizzare video interattivi utilizzando un formato grafico
compresso. Questi video interattivi sono programmati in ActionScript, un linguaggio di scripting
simile a JavaScript. L'inconveniente di questa tecnologia è che, diversamente da AJAX, richiede
l'installazione di uno specifico plugin perchè il browser possa interpretarla [MFL].
51
3.3.2 Java Web Start e tecnologie relative
Il software Java Web Start vi permette di scaricare ed eseguire applicazioni Java dal Web. È un
componente di Java Runtime Environment (JRE) e viene installato con JRE, si avvia automaticamente
quando viene scaricata per la prima volta un'applicazione Java che utilizza la tecnologia Java Web
Start e memorizza localmente (cache) l'intera applicazione sul computer. Perciò ogni ulteriore avvio
avviene in modo pressoché immediato, dal momento che tutte le risorse necessarie sono disponibili
localmente. Ogni volta che si avvia l'applicazione, Java Web Start controlla il sito Web
dell'applicazione per verificare se è disponibile una nuova versione e, in tal caso, la scarica e l'avvia
automaticamente. Le applicazioni avviate con Java Web Start verranno eseguite, per impostazione
predefinita, in un ambiente chiuso ("sandbox") con un accesso limitato ai file e alle connessioni in
rete. In tal modo, le applicazioni che utilizzano Java Web Start preservano la sicurezza e l'integrità del
sistema. Un'applicazione potrebbe richiedere accesso illimitato al sistema; in questo caso, Java Web
Start visualizzerà una finestra di dialogo con un avviso di sicurezza quando l'applicazione viene
avviata per la prima volta. L'avviso di sicurezza conterrà informazioni sul fornitore che ha sviluppato
l'applicazione; se si sceglie di considerare affidabile il fornitore, l'applicazione verrà avviata. Le
informazioni sull'origine dell'applicazione si basano sulla firma digitale del codice. La differenza
fondamentale rispetto alle applet è che in questo caso il browser viene utilizzato semplicemente ed
esclusivamente per il download dei file necessari alla applicazione per essere eseguita. L'esecuzione
infatti avviene all'interno di una JVM esterna al browser, in maniera del tutto analoga ad una
applicazione Java installata sulla macchina locale. La tecnologia Java Web Start si basa
essenzialmente sull'idea di poter utilizzare un'applicazione standalone “remota”, dando allo stesso
tempo all'utente la possibilità di non dover sempre passare per il browser Web per poterla utilizzare.
Essa consente inoltre di aggiornare in continuazione il software senza rendere necessaria una nuova
installazione che molto spesso è pesante e difficoltosa [JWS]. Un sistema analogo è proposto anche
dalla piattaforma .NET di Microsoft, chiamato No Touch Deployment. Il grosso inconveniente di
questo tipo di approccio è che necessita di avere un ambiente di runtime preinstallato. Certamente
anche AJAX e Flash richiedono un ambiente di esecuzione per essere lanciati, ma il loro runtime
risulta essere il browser, disponibile sulla quasi totalità delle piattaforme, mentre Java Web Start e No
Touch Deployment richiedono l'installazione di framework che non essendo distribuiti per tutte le
piattaforme sconsigliano l'uso di queste tecnologie per fornire servizi Web pubblici.
52
3.4 Tecnologia AJAX
Il termine "AJAX" è stato coniato da Jesse James Garrett di Adaptive Path nel febbraio 2005, e come
dice il termine stesso, AJAX è un insieme di tecnologie, che opportunamente utilizzate assieme,
creano nuove possibilità di sviluppo. AJAX incorpora:
•
presentazione basata su standard attraverso l'utilizzo di XHTML e CSS;
•
interazione e visualizzazione dinamica utilizzando il DOM;
•
manipolazione e scambio di dati via XML e XSLT;
•
recupero asincrono dei dati utilizzando l'oggetto XMLHttpRequest;
•
JavaScript per manipolare il tutto.
3.5 Il linguaggio JavaScript
JavaScript è un linguaggio di scripting piccolo, leggero, orientato agli oggetti, multipiattaforma usato
principalmente per rendere dinamiche e interattive le pagine Web. Amplia le potenzialità di
(X)HTML consentendo l'esecuzione di codice sul client.
JavaScript è un linguaggio client. In altre parole il codice JavaScript è contenuto, oppure viene
caricato, all'interno delle pagine (X)HTML, è visibile da tutti gli utenti e viene eseguito direttamente
dal browser dell'utente senza appesantire il server dove risiede la pagina Web. Il programma viene
messo in esecuzione sulla macchina client quando il documento viene caricato. Per molti aspetti
JavaScript può essere considerato un'estensione dell'(X)HTML perchè arricchisce il formato con una
serie di nuove funzionalità di interattività, con una struttura a oggetti, e con una gestione degli eventi
(come azioni del mouse, timer, chiusura della pagina, ecc...). All'interno dell'ambiente del browser le
funzionalità native del browser quali CSS, DOM e l'oggetto XMLHttpRequest, sono esposti al motore
JavaScript attraverso il quale è possibile controllare la pagina. Javascript è uno strumento per
aumentare l'usabilità di un sito Web.
Un'applicazione AJAX scarica in memoria un intero client composto da dati, presentazione e logica di
controllo del client, quest'ultima implementata tramite il linguaggio JavaScript. Come visualizzato in
figura 3.6 il linguaggio JavaScript è il collante delle tecnologie che compongono AJAX. L'interfaccia
utente del Web desktop è manipolata ed aggiornata tramite JavaScript che modifica il DOM
ridisegnando e riorganizzando continuamente i contenuti presentati all'utente ed elaborando ogni sua
interazione causata da mouse e tastiera.
53
Figura 3.6
Javascript è un linguaggio "cross-platform" e in poche parole è interpretabile su di una qualsiasi
piattaforma che disponga di un browser compatibile.
Alcuni linguaggi di scripting richiedono la compilazione per essere utilizzati, altri come il JavaScript
consentono di essere eseguiti per interpretazione. Il linguaggio JavaScript è interpretato, vale a dire
che per funzionare non ha bisogno di essere convertito in linguaggio macchina poichè gli script sono
richiamati all'interno del codice (X)HTLM e gli stessi necessitano di un browser abilitato a JavaScript
per essere eseguiti. Ogni browser infatti dispone di un proprio compilatore JavaScript che permette di
interpretare ed eseguire codice JavaScript, dunque non è necessario installare plug-in, ma per questo
motivo possono sussistere problemi di compatibilità nell'esecuzione dello script nei vari browser, in
quanto ognuno di questi interpreta il linguaggio con sottili ma importanti differenze.
JavaScript è un linguaggio a oggetti che permette di ridefinire in maniera dinamica le proprietà degli
54
oggetti che formano la pagina Web per realizzare quello che viene chiamato HTML dinamico. Per
JavaScript sono oggetti, ad esempio, le date, i bottoni, le finestre, i moduli... Ognuno di essi deve
avere un nome univoco, che lo distingua dagli altri, alcune proprietà (ad esempio il colore), dei
metodi, cioè le azioni che gli oggetti possono compiere. Tuttavia gli oggetti non sono basati su classi
(ovvero non esiste alcuna distinzione fra una classe e un'istanza); al contrario sono semplicemente
oggetti generali [JSC].
3.6 Manipolazione e scambio dati via XML
XML, eXtensible Markup Language, è un linguaggio estensibile realizzato per poter utilizzare in
modo semplice i documenti strutturati, studiato per il Web e per superare i limiti di HTML, ma con
possibilità di utilizzo in ambienti differenti. Per essere più precisi XML è un metalinguaggio,
contrariamente ad HTML che è un linguaggio predefinito, cioè non ha tag predefiniti ma consente di
definire nuovi metalinguaggi (per esempio esiste oggi la versione HTML in XML).
Rispetto all'HTML che è stato concepito per mostrare informazioni e che si concentra su come le
informazioni appaiono, l'XML nasce per descrivere i dati e si concentra su cosa sono i dati. I
principali obiettivi di XML, dichiarati nella prima specifica ufficiale, sono pochi ed espliciti: utilizzo
del linguaggio su Internet, facilità di creazione dei documenti, supporto di più applicazioni, chiarezza
e comprensibilità. Con queste semplici caratteristiche l'XML fornisce un modo comune di
rappresentare i dati cosicché i programmi software sono in grado di eseguire meglio ricerche,
visualizzare e manipolare informazioni nascoste nell'oscurità contestuale. È per questo che l'XML è
alla base di tutte le nuove specifiche tecnologiche rilasciate dal W3C ed è stato adottato come
standard di rappresentazione dati da tutta l'industria informatica (dai file di configurazione delle
applicazioni alla definizione di formati di interscambio dei dati).
Abbiamo già parlato di XML nel capitolo 1.3. Lo riprendiamo qui per sottolineare la sua utilità
all'interno del nostro progetto come strumento per scambiarsi dati (data interchange) e per rendere
questi dati strutturati (document publishing):
•
Data Interchange: con XML è possibile condividere e scambiare dati in modo indipendente
dall'hardware e dal software. Poiché i dati XML sono memorizzati in formato testuale plaintext, ossia senza caratteri speciali aggiuntivi, XML fornisce un modo di condividere e
scambiare i dati indipendente dal sistema operativo (Mac, Windows, UNIX) e dal software.
Ogni volta che più programmi si debbono scambiare dati, ci sono problemi di compatibilità.
55
Ogni programma ha le proprie assunzioni in termini di caratteri, separatori, ripetibilità di
elementi, differenza tra elementi vuoti e assenti, ecc... XML si propone come la sintassi
intermedia più semplice per esprimere dati anche complessi in forma indipendente
dall'applicazione che li ha creati. Attualmente, per esempio, i sistemi di database contengono
dati in formati incompatibili fra di loro. Fino ad oggi, le società di software hanno investito
molte risorse nello studio e nella realizzazione di programmi per lo scambio di dati su Internet
fra i diversi sistemi. La conversione in XML riduce fortemente la complessità dei programmi e
crea documenti che possono essere letti da molte applicazioni di tipo diverso.
•
Document publishing: XML è ideale come linguaggio per esprimere documenti strutturati e
per esprimerli in maniera indipendente dalla loro destinazione finale. I documenti basati
sull'XML possono essere utilizzati dal Web client elaborando i dati che vi sono contenuti in
differenti processi software non predeterminati. Quindi è possibile, per esempio, sviluppare
applicazioni che richiedono al Web client di presentare viste diverse degli stessi dati. Lo stesso
documento XML può essere preso e trasformato per la stampa, il Web, il telefonino,
l'autoradio.
XML è un metalinguaggio di markup. Non esistono tag XML: i tag vengono definiti dall'applicazione.
La formalizzazione della sintassi di un file XML può avvenire tramite DTD (Document Type
Definition) oppure XML Schema Definition.
3.6.1 XML Schema Definition
XML ha bisogno di definire le regole con cui si dovranno andare a costruire i documenti. XML
Schema Definition (XSD) non è altro che un documento XML che utilizza un insieme di tag speciali
per definire lo schema dei documenti che lo riferiscono, ovvero è un XML che serve per definire la
struttura di un documento XML. Il grande vantaggio di questo approccio è la grande facilità con cui si
possono estendere questi schemi. Una delle principali caratteristiche di XML Schema è la possibilità
non solo di definire il tipo di dato di un elemento, ma anche di poter personalizzare un tipo di dato.
Esistono due categorie di tipi di dato: semplici e complessi. I tipi di dato semplici sono relativi a
quegli elementi che non possono contenere altri elementi e non prevedono attributi. Sono previsti
numerosi tipi di dato predefiniti, a questi possiamo, ad esempio, imporre il vincolo che un elemento
contenga informazioni di tipo stringa, intero, booleano, data, ecc.; è inoltre possibile definire tipi
semplici personalizzati derivandoli da quelli predefiniti: potremmo definire un tipo di dato come
restrizione del tipo stringa, vincolando i valori ad uno specifico insieme di stringhe o ad un pattern
individuato da un'espressione regolare. I tipi di dato complessi si riferiscono alla definizione degli
56
elementi con attributi e che possono contenere altri elementi, la definizione del tipo complesso
consiste generalmente nella definizione della struttura prevista dall'elemento. Se l'elemento può
contenere altri elementi possiamo definire l'insieme degli elementi che possono stare al suo interno
come sequenza, come insieme di valori alternativi o come gruppo. E' inoltre possibile dichiarare tipi
di dato personalizzati e fare riferimento a tali dichiarazioni quando si definisce un elemento, in modo
analogo a come avviene per la definizione di tipi nei linguaggi di programmazione. Questo consente
di rendere più leggibile lo schema e di concentrare in un unico punto la definizione di un tipo
utilizzato diverse volte.
3.7 Definire lo stile di presentazione delle informazioni tramite XHTML e CSS
3.7.1 XHTML
XHTML è HTML riscritto con la sintassi di XML, da cui ne eredita le regole. Il linguaggio prevede
un uso più restrittivo dei tag HTML; solo la struttura della pagina è scritta in XHTML, mentre il
layout è imposto dai cosiddetti CSS. Per sfruttare integralmente le potenzialità dell'XHTML è
necessario usarlo in abbinamento ai CSS, in modo da scrivere un codice per pagine Web in cui la
presentazione è separata dal contenuto.
XHTML serve per ottenere:
•
un codice meglio strutturato;
•
una maggiore portabilità, cioè la fruibilità dei contenuti con dispositivi diversi dai classici
browsers.I contenuti,in questo modo, possono essere visualizzati anche da terminali quali
cellulari WAP/GPRS, palmari, ecc... ;
•
una maggiore accessibilità;
•
una facile integrazione di un documento XHTML con altre applicazioni XML.
Gli elementi che compongono l'interfaccia grafica del Web desktop (menu, finestre, bottoni, ecc...)
sono definiti tramite elementi XHTML generati dinamicamente dal codice JavaScript via DOM. La
struttura dell'interfaccia è così definita univocamente e tramite i CSS è possibile renderla fruibile da
diversi dispositivi senza doverla modificare.
Come per i documenti XML, quale è un documento XHTML, una specifica DTD (Document Type
Declaration) definisce l'insieme di regole mediante le quali un dato documento XHTML può essere
renderizzato, cioè rappresentato correttamente. I tipi più comuni di DTD sono:
57
•
XHTML 1.0 Strict;
•
XHTML 1.0 Transitional;
•
XHTML 1.0 Frameset;
•
XHTML 1.1.
Un documento XHTML che risponde alle specifiche è definito documento valido, ovvero well
formed. Perché un documento possa essere validato, deve contenere un elemento DTD. Il vantaggio
principale è di essere in qualche modo costretti a seguire una corretta scrittura del codice usato per la
creazione dei nostri documenti. Questo ci assicura una maggiore compatibilità con la più vasta gamma
di browser in commercio (opportunamente associati con fogli di stile validi e ben scritti), ma
soprattutto una piattaforma di lavoro già stabile per il futuro dato che si basa su XML [XHT].
3.7.2 CSS
I CSS (fogli di stile in cascata) servono per gestire tutto il layout di un sito Web in modo semplice ed
efficace: uno standard redatto dal W3C per il controllo dell'aspetto visivo delle pagine Web.
Costituiscono l'attuale orientamento che è indirizzato a separare il contenuto dalla presentazione:
HTML o XHTML viene riportato alla sua funzione strutturale, mentre i CSS svolgono il compito di
aggiungere stile alle pagine, organizzando l'aspetto estetico.
La loro creazione si è resa necessaria per separare i contenuti dalla formattazione e imporre una
programmazione più chiara e facile da utilizzare offrendo un modo centralizzato di definire stili di
visualizzazione che possono essere applicati ai vari elementi della pagina. Tramite i CSS è possibile
intervenire sulla formattazione del testo, sulla visualizzazione delle pagine e degli elementi in esse
contenuti.
I CSS nel progetto del Web desktop sono utili, oltre che per definire il layout degli elementi
dell'interfaccia grafica strutturati in XHTML, per superare i problemi dovuti ai diversi modi di
renderizzare i documenti da parte dei diversi browser in circolazione. In particolare si sfrutta un
accorgimento per presentare a Internet Explorer un foglio di stile a esso dedicato, visto che il motore
di rendering di questo browser offre uno scarso supporto ai CSS.
I fogli di stile sono essenzialmente un'insieme di regole per istruire il browser su come debba essere
presentata la pagina web. Le regole dei CSS possono essere specificate in una pagina esterna al
documento a cui le regole devono essere applicate, possono essere specificate nel documento stesso,
oppure possono essere incorporate nei tag (X)HTML. Le regole specificate nei fogli di stile sono
58
specifiche per ogni selettore, che può essere un tag (X)HTML (come body, p, div, ecc...), una classe
(per esempio <div class="nome-della-classe">), o un identificatore (per esempio <div id="nomedello-identificatore">). Per ogni elemento, possono essere definite diverse proprietà. Ogni proprietà
può avere un valore che, in associazione con la proprietà, descrive come il browser debba
rappresentare il selettore. La combinazione XHTML + CSS permette di mantenere completamente
separati forma e contenuto delle pagine, con alcuni grandi vantaggi. Prima di tutto le pagine risultano
significativamente più leggere: l'utente carica tutto ciò che riguarda la grafica (immagini escluse) alla
prima pagina incontrata, successivamente dovrà solo caricarne il contenuto, poiché il resto risiede già
nella memoria del suo browser. I CSS permettono inoltre all'utente di non visualizzare la grafica,
oppure di visualizzarla secondo un foglio di stile personale, per l'accessibilità. Non ultimo: i CSS
permettono di rivoluzionare drasticamente la grafica del sito intervenendo su un singolo file di testo,
oppure, e sono nati per questo, di presentare layout differenti a seconda del media con cui viene
visualizzato il sito Web: computer, stampa, PDA, TV, screen reader, ecc... [CSS].
3.8 Interazione dinamica tramite il DOM
Il DOM è una descrizione di come un documento (X)HTML o XML viene rappresentato tramite un
modello orientato agli oggetti.
Il DOM è una API indipendente da browser, piattaforma e linguaggi di programmazione che fornisce
a script e programmi un insieme di funzioni, metodi e proprietà per accedere e modificare contenuti,
struttura e stile del documento.
In un'applicazione AJAX la maggior parte delle modifiche all'interfaccia utente viene fatta attraverso
l'uso del DOM. Lo script che implementa la logica di controllo dell'interfaccia è un'applicazione
DOM. Un'applicazione DOM (detta anche client application) è un frammento di codice che accede
tramite una DOM implementation a un documento HTML o XML e lo manipola. Una DOM
implementation (detta anche host implementation) è quel frammento di software che gestisce il
documento (X)HTML o XML interpretato (parsed) e lo rende disponibile per l’elaborazione tramite le
interfacce DOM. Per esempio un browser contiene una DOM implementation.
Tutte le proprietà, i metodi e gli eventi disponibili per il programmatore per creare e manipolare le
pagine Web sono organizzate in oggetti. Ad esempio, l'oggetto document rappresenta il documento
stesso, l'oggetto table rappresenta l'elemento tabella e così via, come raffigurato in figura 3.7.
59
Figura 3.7
Questi oggetti sono accessibili tramite linguaggi di scripting. Utilizzando il DOM i programmatori
possono costruire documenti, navigare attraverso la loro struttura, e aggiungere, modificare o
cancellare elementi. Il linguaggio più usato in congiunzione con il DOM è JavaScript. Precisamente, il
codice viene scritto in JavaScript, ma usa la rappresentazione creata con il DOM per accedere alla
pagina Web e ai suoi elementi. Ad ogni modo, il DOM é stato pensato e implementato come
indipendente da qualsiasi linguaggio di programmazione, al fine di rendere la rappresentazione
strutturale del documento disponibile a chiunque, attraverso una singola conforme API. Sebbene in
questo contesto poniamo l'attenzione su JavaScript, le implementazioni del DOM possono essere fatte
da qualunque linguaggio [DOM].
3.9 Caricare i dati in modalità asincrona sfruttando tecnologie XML
XMLHttpRequest (XHR) è un componente del DOM che può essere usato da JavaScript, JScript,
VBScript e altri linguaggi di scripting dei browser per trasferire dati in XML (o in altri formati come
HTML, JSON, testo semplice, ecc...) da e a un back-end server tramite HTTP, come mostra la figura
3.8. La sua classe fu originariamente introdotta in Internet Explorer come un oggetto ActiveX,
chiamato XMLHTTP. Poi browser come Mozilla, Safari ed altri sono seguiti, implementando una
classe XMLHttpRequest che supporta i metodi e le proprietà dell'oggetto originario di Microsoft
ActiveX.
60
Figura 3.8
La caratteristica innovativa di XMLHttpRequest è che permette a un client Web di inviare e ricevere
dati in modo asincrono a un server remoto, rendendo queste comunicazioni in background rispetto
all'interfaccia utente del client. Quando il browser richiede dati dal server viene instanziato un oggetto
XMLHttpRequest. Il browser esegue una richiesta HTTP tramite l'oggetto XMLHttpRequest,
dopodichè continua il suo flusso d'esecuzione, non rimane bloccato in attesa dell'elaborazione del
server. Per permettere questo comportamento l'oggetto XMLHttpRequest lancia una funzione che
rimane “in ascolto” sulla relativa connessione in attesa del messaggio di risposta. Quando la risposta
stessa arriverà, in un qualsiasi istante temporale futuro e non predicibile, verrà invocata questa
funzione di callback che sarà responsabile di gestire il messaggio di risposta, senza ricaricare l’intero
codice (X)HTML della pagina come avviene per le classiche comunicazioni HTTP sincrone. La classe
XMLHttpRequest permette inoltre di lanciare richieste HTTP multiple all'interno della stessa pagina
(X)HTML tramite la creazione di un oggetto per ogni comunicazione [XHR].
Nel progetto Web desktop ogni interazione dell'utente con l'interfaccia viene gestita dal controller
implementato in JavaScript. Per fare una richiesta HTTP al server usando JavaScript, abbiamo
bisogno di un oggetto che fornisca questa funzionalità. Ogni volta che viene effettuata una
comunicazione client/server via JavaScript viene istanziato un oggetto della classe XMLHttpRequest.
Ogni elemento dell'interfaccia del Web desktop necessita di uno o più oggetti di questo tipo che si
occupano di passare e manipolare in maniera asincrona i dati da e verso il server che espone il servizio
Web relativo. Recuperati i dati in background dalla funzione di callback il controller aggiorna gli
elementi dell'interfaccia grafica interessati.
Mentre il protocollo HTTP rappresenta uno standard di interazione tra un Web server e tutti i browser,
61
la stessa cosa non vale per il supporto offerto dai browser per l'utilizzo del protocollo tramite
JavaScript. I principali browser forniscono meccanismi diversi per consentire di interagire con il
server dall'interno di una pagina Web. Questa situazione non rende agevole scrivere codice JavaScript
che sfrutti il protocollo HTTP e che sia indipendente dal browser che lo eseguirà. Perché il protocollo
HTTP sia effettivamente utilizzabile dall'interno di pagine Web tramite JavaScript dobbiamo
necessariamente rendere uniforme l'approccio offerto dai vari browser. Per far questo occorre scrivere
una funzione che individua il tipo di supporto offerto dal browser corrente e restituisce un oggetto per
la gestione del protocollo HTTP che incapsula le differenti implementazioni. Dopo aver individuato
un metodo per sfruttare il protocollo HTTP indipendentemente dallo specifico browser, vediamo come
possiamo gestire le chiamate asincrone al Web server. Se utilizziamo la modalità asincrona (XHR può
comunicare anche in modalità sincrona, rifacendosi al classico paradigma client/server in cui il
browser rimane in attesa della risposta prima di continuare con l'istruzione successiva), dobbiamo
specificare come elaborare la risposta inviata da parte del server a computazione terminata. A questo
scopo designamo una funzione, detta di callback, che viene richiamata non appena il browser riceve la
risposta da parte del server. Dopodichè si possono impostare i parametri relativi alla connessione
HTTP (metodo GET o POST; header del messaggio; eventuali dati da spedire; ecc...) e spedire la
richiesta. Come si vede dalla figura 3.9 l'oggetto XHR spedisce una richiesta diretta al Web server
mediante tre passi:
1. impostazione della funzione di callback;
2. apertura della connessione HTTP;
3. invio della richiesta.
62
Figura 3.9
Vediamo un tipico caso d'uso di interazione client/server asincrona, aiutandoci con la figura 3.10:
1.
L'utente interagisce con l'interfaccia scatenando un evento agganciato a un oggetto
dell'interfaccia, quale può essere un link, un bottone, ecc... (può essere un qualsiasi elemento
(X)HTML esposto dal DOM come oggetto). L'evento è catturato dalla logica implementata in
JavaScript che decide come interpretare l'interazione: se è necessario reperire delle
informazioni lato server imposta una richiesta HTTP utilizzando l'oggetto XMLHttpRequest,
come spiegato precedentemente.
2.
Il server elabora la richiesta e compie l'elaborazione necessaria a soddisfarla. Dopodichè
ritorna i risultati dell'elaborazione in formato XML o in qualunque altro formato di tipo plaintext.
3. Non appena il browser riceve la risposta da parte del server viene scatenato un evento dalla
funzione rimasta ad “ascoltare” la comunicazione. All'evento è stata agganciata
automaticamente la funzione di callback. Siccome il server restituisce al client dei dati e non
delle pagine occorre che la funzione di callback richiami un parser per estrarre i contenuti dal
messaggio di risposta ed eventualmente utilizzarli, via DOM, per immetterli nell'interfaccia
costituita da (X)HTML.
63
Figura 3.10
64
Capitolo 4: Struttura dati di desktop@UniFe
4.1 Introduzione
Il nostro obiettivo è la costruzione di un Web desktop, quindi un area, una pagina Web, nella quale sia
possibile avere un discreto grado di libertà nella personalizzazione della stessa, dove si possano
inserire, eliminare spostare finestre. Queste a loro volta possono contenere vari tipi di informazioni, o
meglio servizi. La logica applicativa del nostro Web desktop è scomposta nei due estremi client e
server dell'architettura. Il server espone i singoli servizi che il client consuma separatamente e in
modo indipendente l'uno dall'altro utilizzando il protocollo REST. Dal punto di vista del client ciò
significa che per qualsiasi richiesta al server occorre costruire una chiamata HTTP asincrona
sfruttando l'oggetto XMLHttpRequest che gestisce la comunicazione in background. Sempre in
background viene gestita la risposta alla chiamata al servizio, risposta fornita nel nostro caso in un
messaggio che ha una codifica XML.
Queste comunicazioni oltre che per soddisfare la richiesta a un particolare servizio sono sfruttate per
permettere ai due estremi client e server di comunicarsi a vicenda i contenuti personalizzati che ogni
utente ha l'opportunità di configurarsi nel proprio ambiente desktop. All'atto dell'autenticazione infatti
il client invoca il servizio Web "Login", e in risposta il server spedisce al browser una struttura dati,
appunto in un file XML, che modella il Web desktop relativo all'utente autorizzato all'accesso.
Tramite un parsing di questa struttura il client costruisce l'interfaccia grafica. In seguito a modifiche
dei contenuti dovute a interazioni dell'utente la logica dell'applicazione residente sul lato client
aggiorna parallelamente sia l'interfaccia grafica che la struttura dati e con lo scopo di mantenere lo
stato dell'applicazione consistente è necessario che il lato client comunichi al lato server queste
modifiche sulla struttura. Questa struttura dati, come tutto il resto del Web desktop, è un prototipo, un
punto di partenza, da espandere in contemporanea all'aggiunta di nuovi servizi.
Il primo set di servizi che abbiamo modellato sono relativi ai contenuti che si possono gestire nel
servizio home page e sono:
•
RSS, ovvero la possibilità di aggiungere n feed alla pagina, ovviamente provenienti da
qualsiasi sito non solo quelli delle news di ateneo.
•
Posta elettronica, l'utente potrà aggiungere n moduli contenenti le proprie caselle di posta
elettronica, o meglio, una volta configurato il modulo con i parametri di connessione, si
65
potranno monitorare tutte le proprie caselle E-mail da un'unica pagina. Anche in questo caso le
caselle di posta elettronica possono essere anche diverse da quelle istituzionali dell'Università.
•
Rubrica, abbiamo pensato alla possibilità di aggiungere uno o più moduli che raccolgano i
contatti che si desidera tenere a disposizione, abbiamo pensato a più moduli considerando che
il singolo utente potrebbe voler distinguere i vari tipi di rubrica, ad esempio la rubrica di
lavoro, degli amici etc. Anticipando quanto diremo in seguito, abbiamo pensato che il modulo
possa memorizzare le card dei contatti in due modi possibili, se si desidera memorizzare un
indirizzo di un utente unife ci sarà l'apposito form di ricerca che restituirà tutti i dati presenti
nei database e quindi riempire automaticamente le informazioni della card, altrimenti, nel caso
di utenti generici, daremo la possibilità di riempire manualmente i campi e di memorizzarli.
•
Post-it, è comodo avere la possibilità di agganciare dei promemoria alla pagina, dei post-it
appunto.
•
To-do, un altro strumento piuttosto comune nelle applicazioni di questo tipo è il to-do list
ovvero la lista delle cose da fare, noi abbiamo previsto che se ne possano aggiungerne più
d'una in modo da non dare limiti all'utente.
Una volta stabiliti i vari tipi di elementi poi dovremo andare a costruire il documento XSD che
rappresenta le regole che la struttura dati del Web desktop dovrà attenersi.
4.2 Tipi di dato generico
In prima istanza andremo a costruire il tipo di dato astratto “modulo” dal quale poi deriveremo i tipi di
moduli che ci serviranno per costruire il nostro documento. Il tipo generico “modulo” contiene le
informazioni generiche che caratterizzano tutti i moduli e in particolare:
•
title: titolo del modulo di tipo stringa, con valore di default “titolo”;
•
visible: identifica se il modulo è o meno espanso o se è collassato, di tipo booleano. Il valore
di default è “false”;
•
id: identificativo univoco del modulo di tipo;
•
inpage: questo booleano indica se il modulo è o meno agganciato alla pagina. Anche in questo
66
caso il valore di default è “false”.
Questo tipo di dato astratto è schematizzato in figura 4.1:
Figura 4.1
Da notare che ogni elemento ha cardinalità pari a uno, ovvero deve essere presente non più di una
volta nella sequenza.
4.3 Tipi di dato complessi
Vediamo ora come abbiamo derivato il tipo complesso modulo per creare i singoli moduli che ci
serviranno per la nostra applicazione:
•
Il modulo RSS oltre alle caratteristiche tipiche dei moduli che deriveremo dalla classe astratta
necessita di ulteriori informazioni che avranno una cardinalità pari a 1:
✔
link: indica a quale andare a prelevare il feed, che sarà di tipo stringa obbligatorio;
✔
aggiorna: è un campo di tipo intero che rappresenta ogni quanti secondi dovrà essere
aggiornato il feed, come valore di default abbiamo scelto 3600 (un'ora);
✔
num: rappresenta voci andremo a visualizzare, anche questo di tipo integer e con valore
di default pari a 10.
Il tipo di dato è mostrato in figura 4.2:
67
Figura 4.2
•
Il modulo e-mail ha bisogno delle seguenti informazioni addizionali:
✔
user: campo di tipo stringa con cardinalità uno ed obbligatorio;
✔
imap: elemento di tipo stringa obbligatorio con cardinalità 1 e con valore di default
“imap.unife.it”;
✔
link: parametro che indica l'indirizzo del client di posta Web per consultare le mail,
sempre di tipo stringa, ma non obbligatorio e con cardinalità massima pari a 1. Questo
elemento non è obbligatorio in quanto non è detto che il server di posta che si sta
andando a configurare abbia un interfaccia consultabile via Web;
✔
tipo: campo di tipo stringa che identifica se la connessione è pop3 o imap, il valore di
default è imap.
In figura 4.3 si può vedere lo schema del tipo di dato:
68
Figura 4.3
•
Il modulo Rubrica, schematizzato in figura 4.4, necessita di informazioni aggiuntive quali:
✔
item: campo di tipo card, con una cardinalità infinita (unbounded).
69
Figura 4.4
Il tipo card è a sua volta composto dagli elementi:
✔
Nome, cognome, e_mail, home_page di tipo stringa, cardinalità pari a 1 e opzionale;
✔
da una sequenza di elementi con cardinalità infinita composta da via di tipo stringa,
num_civico di tipo intero, e da una sequenza innestata opzionale con cardinalità
infinita composta di prefisso, tel e fax tutti di tipo intero opzionali e cardinalità pari a
1.
Quanto detto può essere riassunto come in figura 4.5.
70
Figura 4.5
Queste scelte sono dettate dalla ricerca della generalità nel modulo, in questo modo per il
singolo contatto avremo la possibilità di inserire zero o più recapiti telefonici, eventualmente
l'indirizzo e-mail o della home page. Una visione di insieme del modulo rubrica è visibile in
figura 4.6.
71
Figura 4.6
72
•
Post-it è un modulo contenente un testo, quindi per implementarlo avremo bisogno solo di un
elemento testo di tipo stringa con cardinalità 1 ma limitato a 255 caratteri. Abbiamo fatto
questa posizione di comodo per uniformarci al tipo varchar del database che useremo. Lo
schema è mostrato in figura 4.7.
Figura 4.7
•
to-do, questo modulo non è altri che la classica lista della spesa sarà quindi composto da una
sequenza di campi di testo che saranno o meno chekati per indicare se l' azione è stata o meno
compiuta. In altre parole avremo bisogno una sequenza con cardinalità infinita di:
✔
testo: un campo di tipo stringa, di lunghezza massima 100;
✔
cheked: un elemento booleano con valore di default falso.
Entrambi gli elementi, nella sequenza, hanno cardinalità 1. La figura 4.8 mostra lo schema di
questo tipo di dato.
73
Figura 4.8
•
Per la costruzione della pagina avremo bisogno di un ulteriore tipo di dati: il tipo colonna. Le
motivazioni di questa scelta le daremo per esteso quando parleremo della costruzione della
pagina, per ora è sufficiente dire che questo modello servirà per limitare il drag&drop libero;
gli elementi di questo tipo di dato non sono altro che una sequenza con cardinalità infinita di
scelte dei moduli sopra descritti, l'unico dato aggiunto è l'attributo name di tipo stringa che
servirà all'applicazione client per varie operazioni.
In figura 4.9 diamo una rappresentazione a diagramma del tipo di dato.
74
Figura 4.9
4.4 Costruzione della pagina
Per costruire lo schema generale della pagina abbiamo optato per limitare le posizioni dei moduli
limitandoli in al massimo tre colonne, questo per evitare il drag&drop libero, la motivazione di questa
scelta la si può trovare semplicemente pensando che l'applicazione potrebbe essere fruita da più
dispositivi con risoluzioni dello schermo che possono variare di volta in volta, sarebbe facile allora,
lasciando piena libertà di posizionamento, avere moduli che escono dal view port, o peggio che
vadano a sovrapporsi gli uni agli altri rendendo cosi poco usabile l'applicazione stessa. Quindi la
nostra pagina sarà costituita da un massimo di tre colonne, ma non obbligatoriamente, il cambio di
stile a 1, 2 o 3 colonne sarà gestito da un semplice style switcher residente sull'applicazione client e
memorizzato di volta in volta nel DB, il dato verrà poi reinviato alla sucessiva apertura del servizio
tramite un apposito elemento.
Il documento sarà quindi costituito da:
•
titolo: titolo della pagina, elemento di tipo stringa con valore di default “title” cardinalità 1 ed
obbligatorio;
•
style: un elemento di tipo stringa che indica lo style css da applicare alla pagina;
•
num_col: elemento di tipo intero con cardinalità 1 e valore di default 3, questo campo ha
75
volore ristretto al insieme [1..3];
•
tre elementi colonna di tipo colonnatype due dei quali opzionali.
Lo schema che rappresenta questa struttura è visibile in figura 4.10.
Figura 4.10
4.5 Elementi
Per effetuare le trasmissioni da e per il server abbiamo istanziato degli elementi di comodo, in
particolare:
•
Rss_item di tipo rss per la trasmissione e l'inserimento degli aggiornamenti dei moduli rss
(figura 4.11);
•
Posta di tipo e-mail per l'inserimento dei moduli di tipo posta elettronica (figura 4.12);
•
Card di tipo card per inserire nelle rubriche gli elementi dei contatti (figura 4.13);
•
post-it per l'iserimento dei moduli post it (figura 4.14);
•
to-do per l'inserimento e l'aggiornamento dei moduli to-do (figura 4.15).
76
Figura 4.11
77
Figura 4.12
78
Figura 4.13
Figura 4.14
79
Figura 4.15
80
Capitolo 5: Realizzazione dell'applicazione client
5.1 Introduzione
In questo capitolo descriveremo come è stato sviluppato il lato client del progetto desktop@UniFe.
Prima però occorre fare un paio di considerazioni. La prima riguarda le librerie disponibili per
sviluppare con la tecnologia AJAX. La seconda considerazione riguarda l'accessibilità del Web
desktop.
5.2 Framework AJAX
Con lo scopo di superare le incompatibilità cross-browser introdotte dalle varie tecnologie che
compongono AJAX sono sorte diverse librerie, che inoltre adottano i pattern più comuni per facilitare
l'implementazione di software secondo il paradigma Object-Oriented (OO). Si possono raggruppare
questi framework in tre tipologie:
1.
librerie cross-browser (ad esempio: x library, Sarissa e Prototype): eliminano le incompatibilità
fra i diversi browser introdotte da alcune tecnologie che compongono AJAX, incapsulando il
paradigma di funzionamento di XMLHttpRequest per poter essere utilizzato ad un più alto
livello d'astrazione;
2.
collezioni di widget (ad esempio: Rico, Scriptaculous): costruiti al di sopra delle librerie crossbrowser, sono collezioni di oggetti e di funzionalità di alto livello per facilitare la realizzazione
di interfacce utente e logica applicativa;
3. framework applicativi (ad esempio: DWR, JSON-RPC, SAJAX, BackBase, Echo2, Ruby on
Rails): diversamente dai precedenti questi framework non vengono serviti al browser come file
JavaScript statici ma generano dinamicamente lato server logica JavaScript e contenuti
occupandosi anche della comunicazione Client/Server.
I servizi dell'Università esposti dal lato server sono realizzati incapsulando applicativi precedenti che
funzionano correttamente da tempo e non c'è bisogno di reimplementarli. Abbiamo così escluso i
framework descritti al terzo punto, più adatti ad uno sviluppo di un'applicazione Web ex-novo. Per la
realizzazione del lato client quindi è stato fatto uso di Prototype come libreria cross-browser e di
Scriptaculous per la realizzazione di alcuni componenti dell'interfaccia grafica e del relativo
81
comportamento.
5.2.1 Prototype
Prototype è una libreria JavaScript scritta da Sam Stephenson con l'intento di estendere il linguaggio
JavaScript stesso permettendo agli sviluppatori di utilizzare uno stile di programmazione
maggiormente orientato agli oggetti. Prototype facilita l'utilizzo di concetti object-oriented come le
classi o le ereditarietà in Javascript. Supporta AJAX tramite un oggetto che incapsula le differenti
implementazioni dell'oggetto XMLHttpRequest. L'oggetto AJAX è un oggetto predefinito, creato
dalla libreria per raggruppare e semplificare l'intrincato codice che sviluppa le funzionalità AJAX.
Questo oggetto contiene un numero di classi che stabiliscono l'incapsulamente logico di AJAX. La
libreria contiene molti oggetti e funzioni di utilità. L'obiettivo ovvio è quello di evitare di scrivere del
codice ripetitivo.
5.2.2 Script.aculo.us
Script.aculo.us è una libreria di componenti UI sviluppata basandosi sulla libreria, di più basso livello
d'astrazione, Prototype. Si divide principalmente in "Visual effects" e "Drag'n'drop" che stanno per
effetti di rollover e di trascinamento. Script.aculo.us permette di usare molti effetti grafici, efficaci
sull'impatto utente-sito, che possono essere applicati agli elementi del DOM come cambi di
dimensioni, posizione e trasparenza. Gli effetti possono essere combinati fra loro per fornire effetti
grafici complessi e alcuni sono già disponibili con la libreria. La sintassi per usare un effetto è:
new Effect.Effetto( element, required-params, [options] );
Dove:
•
Effetto = nome dell'effetto desiderato;
•
element = può essere this o l'Id di un altro elemento (per esempio <div id="lay"></div>, in
questo caso "lay");
•
required-params = dipende dall'effetto chiamato. Molti effetti non richiedono parametri;
•
options = vari parametri che possono essere aggiunti all'effetto. Durata, FPS etc...
Esempio:
new Effect.Opacity('my_element', { duration: 2.0, transition: Effect.Transitions.linear, from:
1.0, to: 0.5 });
82
Script.aculo.us implementa anche la funzionalità di drag&drop abilitando tutti i figli di un elemento
del DOM al drag&drop, rendendoli “draggable”, all'interno di un'area, “droppable”, che li contiene.
5.3 Accessibilità del Web desktop
L'accessibilità, in informatica, indica la possibilità per un utente di fruire con facilità di un servizio o
di una risorsa. Il termine è comunemente associato alla possibilità anche per persone con ridotta o
impedita capacità sensoriale, motoria, o psichica, di fruire dei sistemi informatici e delle risorse
software a disposizione.
5.3.1 Interfaccia utente accessibile
Un primo passo per rendere l'interfaccia grafica del nostro Web desktop accessibile è l'adozione di
standard. Questo ci permette ora e nel prossimo futuro di avere, se non la certezza, almeno il maggior
grado di probabilità che la nostra interfaccia grafica sarà visualizzata senza problemi. Ciò significa
nella pratica ridurre i tempi ed i costi di realizzazione e di manutenzione ed inoltre dotare l'interfaccia
di "una vita più lunga". Allo stesso tempo questa scelta (unita ad una buona progettazione) comporta
anche giovamenti all'accessibilità del nostro sito rendendo le pagine visibili da tutti e con diversi tipi
di browser o device. La conformità agli standard rende più semplice l’uso del Web alle persone con
speciali necessità. I non vedenti possono fare in modo che il computer gli legga le pagine Web ad alta
voce. Chi ha problemi di vista può ottenere pagine modificate e ingradite per una lettura più agevole, e
le persone che usano dispositivi palmari possono accedere al Web tanto facilmente quanto quelli che
usano workstation di fascia alta. I motori di ricerca, per esempio, possono realizzare una più efficace
indicizzazione dei siti. La scrittura di codice specifico per ciascun browser spesso duplica o triplica il
lavoro di creazione delle interfacce Web e il risultato lascia sempre a desiderare, specialmente dopo la
creazione di nuovi dispositivi d’accesso alla rete. Senza la guida degli standard Web, questa
situazione potrà solo peggiorare.
Una tra le possibili soluzioni è quella di impiegare XHTML Strict per la codifica delle pagine e i CSS
per la costruzione dell’aspetto dell'interfaccia. In particolare per permettere che l'applicazione sia
fruibile attraverso diverse risoluzioni dello schermo, e di coseguenza attraverso diversi dispositivi, si è
scelto di realizzare un layout liquido (detto anche layout fluido), tramite CSS, con proporzioni
percentuali degli oggetti che lo compongono. Un'interfaccia Web caratterizzata da un layout liquido è
un'interfaccia Web che occupa sempre tutto lo spazio disponibile della finestra del browser, qualunque
83
sia la risoluzione del monitor. Sostanzialmente una pagina Web di questo tipo si adatta allo spazio
disponibile sullo schermo. Ridimensionando la finestra del browser anche la pagina Web verrà
ridimensionata rispettando le proporzioni degli oggetti al suo interno ed evitando lo scrolling
orizzontale. Un layout che rispetta queste caratteristiche risulta innanzitutto usabile, ma soprattutto
accessibile: permette una corretta visualizzazione dei menu secondari espandibili che abbiamo
adottato e della conseguente area principale le cui dimensioni sono per forza relative allo stato del
relativo menu secondario, espanso o compresso.
Nonostante l'aderenza agli standard Web il nostro Web desktop sarà difficilmente aderente alle
specifiche sull'accessibilità. I problemi maggiori riguardano il supporto da parte dei vari browser di
XMLHttpRequest e l'uso massiccio di JavaScript nell'utilizzo di AJAX.
5.3.2 Compatibilità di XMLHttpRequest
Valutiamo la compatibilità: l'utilizzo dell'oggetto XMLHttpRequest vincola l'uso del Web desktop da
parte di chi utilizza le più moderne versioni dei browser, che inoltre implementano questa API
diversamente, impossibilitandoci dal creare un'applicazione Web pienamente accessibile. La figura
5.1 riassume la compatibilità dei browser verso XMLHttpRequest. Come si può notare, a parte
Interner Explorer che ha introdotto il metodo, i browser lo hanno implementato solo da versioni
piuttosto recenti. Fortunatamente, stando alle statistiche che si trovano in rete, chi utilizza browser
alternativi, quindi non IE, tiene aggiornato il proprio browser, mentre chi utilizza Interner Explorer,
sempre stando alle statistiche, usa la versione 6, ovvero l'ultima release. Possiamo quindi
accontentarci di coprire questa fetta di utenti, che rappresenta la maggioranza degli utenti del WWW.
Figura 5.1
5.3.3 Rendere JavaScript accessibile
JavaScript permette agli sviluppatori di incrementare l'interazione, l'elaborazione di informazioni, il
controllo sui contenuti. Contemporaneamente, pone alcune questioni legate all'accessibilità:
84
•
navigazione: impossibilità o difficoltà a navigare attraverso tastiera o tecnologie assistive;
•
contenuti nascosti: visualizzazione di contenuti o funzionalità non accessibili da tecnologie
assistive;
•
controllo da parte dell'utente: scarso controllo sulla modifica automatica dei contenuti;
•
disorientamento: alterazione o disabilitazione delle normali funzionalità del browser,
attivazione di eventi di cui l'utente ha scarsa consapevolezza.
Un'interfaccia Web che includa JavaScript sarà pienamente accessibile se:
•
le funzionalità dello script saranno indipendenti dal dispositivo (cioè che non richiedano solo il
mouse o solo la tastiera);
•
i contenuti saranno accessibili dalle tecnologie assistive.
Sfortunatamente non ci sono trucchi che possano essere usati per risolvere tutte le questioni legate
all'accessibilità che JavaScript pone. L'unico modo per garantire l'accessibilità di JavaScript è valutare
ciascun singolo script ed escogitare specifiche soluzioni per i problemi di accessibilità che esso pone.
Rendere JavaScript accessibile comporta prestare attenzione alle seguenti questioni:
•
quando vengono impiegati i gestori degli eventi (event handlers), ricorrere sempre e solo a
quelli indipendenti dal dispositivo (ad esempio, quelli che non richiedono l'uso del solo
mouse);
•
contenuti e funzionalità che vengono forniti dallo script devono essere resi accessibili dalle
tecnologie assistive;
•
pagine Web che utilizzano gli script devono essere completamente navigabili da tastiera;
•
JavaScript non dovrebbe modificare o ridefinire le normali funzionalità del browser in un
modo tale da creare confusione;
•
nel caso in cui JavaScript non possa essere reso direttamente accessibile, deve essere
predisposta un'alternativa accessibile.
Nel nostro caso non possiamo creare un'interfaccia che utilizzi AJAX senza JavaScript, quindi non
abbiamo pensato a fornire alternative a quegli utenti che accedono al Web desktop con browser che
hanno JavaScript disabilitato. Ciò può sembrare azzardato ma in realtà nelle successive
raccomandazioni sull'accessibilità, le WCAG 2.0, attualmente in working draft, si pensa di togliere
questo punto di controllo anche considerato che ormai le tecnologie assistive per i disabili gestiscono
tranquillamente gli script, che la percentuale di utenti, a livello mondiale, che naviga con gli script
disabilitati e molto bassa (circa un 10% ma in continuo calo) e che anche molte altre applicazioni
85
fanno uso massiccio di programmazione JavaScript lato client, un esempio su tutti sono gli strumenti
di l'e-learning.
5.4 Sviluppo del lato client di desktop@UniFe
La parte centrale dell'applicazione è un motore JavaScript che fa da intermediario fra l'utente, o
meglio il suo browser, e il server Web. Quando ci si connette inizialmente al server, la prima cosa che
viene effettivamente scaricata è un frame, invisibile all'utente, contenente il motore in questione e che
implementa tutta la logica lato client del Web desktop. Inizialmente il nostro motore presenta
all'utente una semplice pagina contenente un form per l'autenticazione, come mostra la figura 5.2, e
viene istanziato un oggetto della classe AjaxLogin per la sua gestione.
Figura 5.2
5.4.1 Classe AjaxLogin
La classe AjaxLogin è responsabile dei meccanismi di autenticazione lato client e della costruzione
86
dell'ambiente desktop. Una volta che l'utente ha digitato le proprie credenziali (username e password)
le può inviare al server su un canale criptato HTTPS. Il server elabora la richiesta e successivamente
risponde in due possibili modi diversi che il client interpreta di conseguenza. In caso di fallimento
dell'autenticazione il client ripresenta all'utente la form iniziale con un messaggio che avvisa che la
procedura di login non è andato a buon fine. Se invece le credenziali sono corrette il server invia al
client, in risposta alla richiesta d'accesso, un file XML contenente la struttura del Web desktop
dell'utente autenticato, come schematizzato in figura 5.3.
Figura 5.3
Il file XML ricevuto viene memorizzato in un'istanza della classe Page. Il client ora può distruggere la
form e rimpiazzarla nella pagina costruendo un ambiente desktop, identico per ogni utente, corredato
di icone e di una barra delle applicazioni posta nella zona inferiore della pagina. La barra delle
applicazioni conterrà le finestre minimizzate e quindi sarà inizialmente vuota, con l'eccezione di un
bottone che permette di accedera a un menu. Il menu è un tipico menu a tendina che rimane in primo
piano sullo schermo e si sovrappone al resto degli oggetti presenti. La figura 5.4 mostra l'ambiente
Web desktop.
87
Figura 5.4
Tramite un click sui bottoni all'interno del menu, o alternativamente tramite doppio click sulle icone, è
possibile mandare in esecuzione le applicazioni vere e proprie, ognuna in una propria finestra grafica.
In particolare per avviare il word processor si istanzia un oggetto della classe WordProc, mentre per
avviare il servizio home page viene istanziato un oggetto della classe HomePage. Sia le icone che le
finestre aperte possono essere trascinate sullo schermo tramite drag&drop. Essendo il browser una
finestra ridimensionabile, oltre ad aver costruito un layout liquido, è necessario che il meccanismo di
drag&drop calcoli dinamicamente le dimensioni dell'area sulla quale vengono trascinati gli oggetti
ospitati dal Web desktop in funzione delle dimensioni del browser, per evitare inconsistenze
nell'interfaccia grafica. Inoltre questa classe è responsabile del meccanismo di logout che deve
assicurarsi della consistenza dell'ambiente desktop fra client e server inviando a quest'ultimo lo stato
memorizzato nell'oggetto Page.
5.4.2 Classe WordProc
Questa classe, all'atto dell'istanziazione di un oggetto di questo tipo, invoca un oggetto della classe
88
Win e costruisce al suo interno l'interfaccia del word processor tramite l'invocazione dell'oggetto
FCKeditor, come visualizzato in figura 5.5. FCKEditor è un editor HTML Open Source WYSIWYG
(visuale) per pagine Web scritto in Javascript. Permette di specificarne una configurazione minimale
con un ridotto numero di pulsanti oppure una standard (sembrerà di usare Microsoft Word), scegliere
il tipo di skin o impostare la lunghezza delle toolbar. Tramite i comandi posti nelle barre degli
strumenti è possibile il salvataggio del documento che si sta editando in un file system remoto.
Figura 5.5
5.4.3 Classe HomePage
Quando si istanzia un oggetto della classe HomePage viene inizialmente creato il layout
dell'interfaccia del servizio, che verrà poi inserita nell'oggetto Win appena invocato a questo scopo. Il
layout che viene generato si ispira alla struttura a tre pannelli tipica della progettazione di pagine
Web, essendo questa applicazione una sorta di home page personalizzata. Come mostrato in figura
5.6, la struttura a tre pannelli identifica in maniera esatta tre zone dell'interfaccia. Questo tipo
d'impaginazione è la più diffusa, poiché si è dimostrata la più usabile dall'utente. Egli infatti comincia
89
a leggere dall'alto e da sinistra (almeno nel mondo occidentale) dove sono presenti i bottoni della
navigazione (zone "1" e "2"), e la maggior parte dello spazio viene lasciato alle informazioni (zona
"3").
Figura 5.6
Dopodochè viene instanziato un oggetto della classe Home che si occuperà di riempire il layout con
menu e contenuti. Una caratteristica importante di questa classe è che permette l'esistenza di una sola
sua istanza.
5.4.4 Classe Win
Il costruttore della classe, quando viene istanziato un oggetto di questo tipo, crea e inserisce all'interno
dell'area del Web desktop una finestra vuota. Sarà compito poi dell'applicazione che ha instanziato
l'oggetto ad avviare successivamente i metodi necessari a caricare nella corrispondente finestra la
propria interfaccia. La finestra è dotata di una barra contenente il titolo dell'applicazione che ospita e
due bottoni, posizionati in alto a destra, che ne permettono la chiusura, eliminando l'oggetto Win in
questione, o la riduzione della finestra in una piccola area sullo schermo all'interno della barra delle
applicazioni. Quest'ultima operazione è svolta tramite l'istanziazione di un oggetto della classe
ReduceWin. Inoltre agendo col mouse sull'angolo inferiore destro della finestra è possibile effettuare
un ridimensionamento dell'area da essa occupata, come mostra la figura 5.7.
90
Figura 5.7
5.4.5 Classe ReduceWin
Quando viene premuto il bottone di riduzione a icona di un oggetto Win viene creato un oggetto della
classe ReduceWin che si occupa innanzitutto di togliere dallo schermo, rendendola invisibile, la
finestra da cui si è scatenato l'evento e, contemporaneamente, di inserire nella barra delle applicazioni
del Web desktop una versione ridotta della finestra, come visualizza la figura 5.8. Questa piccola area
simile a un bottone ricorda all'utente che l'applicazione è in esecuzione anche se momentaneamente in
pausa. Nel frattempo lo stato dell'applicazione è congelato e quando si risveglia l'applicazione,
attraverso un click del mouse sulla finestra ridotta, lo stato viene ripristinato, viene tolta la versione
ridotta della finestra dalla barra delle applicazioni eliminando l'oggetto ReduceWin e viene
ripresentata sull'area del Web desktop la finestra nella versione espansa.
91
Figura 5.8
5.4.6 Classe Home
L'invocazione di un oggetto della classe Home crea e inserisce nell'header del layout creato
dall'oggetto di tipo HomePage una barra comandi il cui bottone principale permette di aprire un menu
a scomparsa sul lato sinistro del layout: riferendoci alla figura 5.6 quando si apre il menu la zona "3"
che racchiude il contenuto informativo vero e proprio si riduce in ampiezza per ospitare il menu che
occuperà così la zona "2", alla sua chiusura la zona "2" scompare e la zona "3" si espande occupando
tutta la larghezza della finestra del Web desktop, come schematizzato in figura 5.9.
Figura 5.9
Il menu laterale è responsabile di gestire l'inserimento di nuovi contenuti nella zona "3" della home
page sotto forma di moduli. Un modulo è un elemento grafico, un'area della home page, che racchiude
una chiamata a un servizio. Per esempio ci sono moduli che funzionano da lettori di news via feed
92
RSS, da configurarne il canale o già sintonizzati su una fonte, lettori di caselle di posta elettronica,
strumenti di utilità tipo un blocco note in cui poter appuntare idee e "appenderle" virtualmente sullo
schermo. Con questi moduli l'utente può interagire scambiandoli di posizione tramite mecccanismi di
drag&drop, eliminandoli dalla home page, o riducendo la loro area sulla pagina in modo simile a
quando si riduce una finestra a icona. La figura 5.10 raffigura un esempio di home page contenente
alcuni moduli e in figura 5.11 viene mostrata la stessa home page con il menu laterale espanso.
Figura 5.10
93
Figura 5.11
Attraverso la barra comandi è possibile per l'utente configurare la propria home page selezionando il
numero di colonne dell'area principale che contiene i contenuti informativi, che possono essere 1, 2 o
3. Tramite il bottone "impostazioni" appare in finestra sotto la barra comandi una select adatta allo
scopo, che poi può essere fatta sparire. Inoltre attraverso due appositi bottoni è possibile ridurre tutti i
moduli a icona o espanderli tutti nella loro massima dimensione senza agire direttamente su ognuno di
essi.
Successivamente alla creazione e all'inserimento della barra comandi e del menu a scomparsa laterale
vengono caricati i contenuti personalizzati dello specifico utente autenticato. Effettuando un parsing
della struttura dati memorizzata nell'oggetto appartenente alla classe Page viene stabilito prima di
tutto il numero di colonne che l'utente ha precedentemente settato e la situazione viene ripresentata
graficamente creando il giusto layout all'interno della zona "3" di figura 5.9. Quindi viene effettuato
un ciclo sulla parte della struttura dati che rappresenta le colonne presenti e, per ogni colonna,
vengono passate in scorrimento le rappresentazioni dei moduli che ognuna di essa contiene. Per ogni
94
struttura che rispecchia un modulo viene istanziato un oggetto della classe Module, dopodichè
vengono richiamati i metodi dell'oggetto Module appena creato per crearne all'interno la giusta
interfaccia in relazione al servizio corrispondente al tipo di modulo in esame. Questi metodi sono
chiamati passandogli i parametri di configurazione che il servizio necessita e che sono contenuti
all'interno della stuttura dati del modulo che si sta analizzando. Infine l'oggetto grafico rappresentato
dall'oggetto Module viene inserito nella home page all'interno della colonna corrispondente a quella
che stiamo ciclando nel file XML.
Un comportamento analogo si ha quando inseriamo nuovi contenuti attraverso il menu laterale: la
funzione scatenata dall'evento legato alla pressione di un bottone si occupa di instanziare un oggetto
della classe Module e a richiamarne i processi per attivare il servizio e disegnarne all' interno del
modulo l'interfaccia.
A ogni interazione dell'utente che modifica lo stato dell'applicazione, sia a livello di contenuti che di
rappresentazione grafica, viene aggiornata la struttura dati memorizzata sotto forma di file XML
nell'oggetto Page e poi vengono richiamati i metodi di quest'ultimo per spedire il file al server.
5.4.7 Classe Module
Il costruttore della classe crea un'area grafica vuota, in modo simile alla classe Win, anch'essa
provvista di una barra contenente il titolo dell'applicazione e di due bottoni, posizionati in alto a
destra, che ne permettono, rispettivamente, la chiusura tramite eliminazione dell'oggetto Module
stesso, e la riduzione dell'area occupata dal modulo sullo schermo. I moduli possono essere
organizzati all'interno della home page tramite drag&drop, differentemente dalla classe Win però gli
oggetti Module non hanno un drag&drop libero ma sono vincolati in posizioni discrete sulle colonne e
fra le colonne che sono presenti in home page. La figure 5.12 mostra la situazione successiva allo
spostamento di un modulo tramite questo drag&drop "discreto" rispetto alla situazione rappresentata
in figura 5.10.
95
Figura 5.12
Se minimizzati i moduli rimangono nella medesima posizione sullo schermo, con le dimensioni
ridotte alla sola barra del titolo, liberando area dello schermo agli altri moduli presenti. La classe
Module, inoltre, è dotata dei metodi necessari per creare l'interfacciamento al servizio lato server che
il modulo incapsula al suo interno. Chi instanzia l'oggetto Module, che sia un gestore dei bottoni del
menu laterale o il parser della struttura dati del Web desktop della classe Home, provvede infatti
successivamente ad attivare quei processi che implementano l'interfaccia al servizio richiesto e ne
gestiscono la logica applicativa, comprese le comunicazioni col server. I metodi permettono a un
modulo di incapsulare uno di questi servizi:
•
lettore di feed RSS: viene gestita l'interfaccia per l'immissione dei parametri necessari alla
fruizione di un feed, come l'url, il numero di item (se non sono già impostati, infatti nel menu
esistono canali di news già pronti all'uso che possono essere inseriti in home page), poi viene
effettuata la richiesta al server, che restituisce il contenuto del feed, in formato XHTML, o un
messaggio d'errore in caso l'indirizzo non sia corretto. Periodicamente uno dei metodi dedicati
al servizio di lettura feed interroga il server per verificare l'esistenza di aggiornamenti del feed
96
e nel caso ci siano aggiorna l'interfaccia del modulo. Per accedere al contenuto di una news
elencata nel modulo si clicca sul titolo corrispondente. In risposta all'evento viene generato un
oggetto della classe FeedReader;
•
lettore di account di posta elettronica: viene gestita l'interfaccia per l'immissione dei parametri
necessari all'accesso a un account di posta, come il mail-server, l'username, la password
(tranne che per il modulo che fornisce le notifiche dell'account di posta d'Ateneo, che
corrispondono a quelle per l'accesso al Web desktop). Essendo questi dei dati sensibili
vengono comunicati al server tramite un canale criptato HTTPS, come per la procedura di
login. Il server in seguito a una richiesta si incarica di accedere al contenuto della casella di
posta configurata e lo incapsula in un feed RSS che restituisce Analogamente al servizio di
lettura feed la casella è monitorata periodicamente alla ricerca di nuovi messaggi;
•
post-it: viene gestita l'interfaccia grafica dell'editor, tramite la libreria Script.aculo.us, e il
salvataggio del testo inserito, tramite l'oggetto della classe Page;
•
to-do: viene gestita l'interfaccia grafica del servizio tramite un vettore di oggetti della classe
ToDoRow: ne viene istanziato uno a ogni pressione del tasto "aggiungi to-do", oppure ogni
volta che il parser nel ricostruire la home page di un utente incontra l'elemento che rappresenta
una entry di una lista to-do.
Ogni volta che viene creato un oggetto Module viene aggiornata la struttura dati del Web desktop. Un
metodo apposito crea e inserisce un elemento XML, che rispecchia il contenuto del modulo inserito in
home page, al file ospitato dall'oggetto di tipo Page, con lo scopo di essere ricostruito dal parser della
classe Home al prossimo accesso dell'utente al sistema, e spedisce il file al server.
5.4.8 Classe Page
Questa classe è utilizzata per memorizzare in una sua istanza il file XML spedito dal server all'atto
dell'accesso al sistema da parte dell'utente e consentirne l'accesso sia in lettura che in scrittura da parte
di tutti gli oggetti presenti. In particolare gli oggetti che modificano i contenuti o la disposizione
grafica degli elementi del Web desktop aggiornano lo stato della struttura dati e attivano il metodo
della classe Page responsabile di comunicare al server il nuovo stato del sistema, tramite l'invio del
file al server.
97
5.4.9 Classe FeedReader
Oggetti di questa classe vengono instanziati quando si vuole leggere il contenuto di una news.
Cliccando il link del titolo di una news presente in un modulo che contiene un feed RSS viene creato
un nuovo oggetto di tipo FeedReader, che apre una nuova finestra invocando un oggetto della classe
Win, e al suo interno si incarica di immettere il contenuto della news interrogando il server, come
mostrato in figura 5.13.
Figura 5.13
5.4.10 Classe ToDoRow
Uno oggetto di tipo ToDoRow quando istanziato crea e gestisce una singola entry di una lista to-do
tramite un editor analogo a quello del modulo post-it. Gestisce inolte il comportamento del bottone
checkbox per "depennare" il to-do, del bottone per l'eliminazione di questo elemento dalla lista to-do
d'appartenenza e il salvataggio del suo stato tramite l'oggetto della classe Page.
98
Capitolo 6: Conclusioni e sviluppi futuri
Siamo partiti dallo studio del Web 2.0 come un nuovo approccio al World Wide Web, sia da parte
degli utenti che degli sviluppaturi. In particolare abbiamo valutato le possibilità che le tecnologie sulle
quali il Web 2.0 si basa offrono per lo sviluppo di applicazioni Web.
In questa tesi abbiamo studiato la situazione del nostro Ateneo in questa nuova ottica e abbiamo
costruito un progetto per aggregare in un'unica applicazione tutti i servizi on-line offerti
dall'Università di Ferrara e anche servizi provenienti da fonti esterne, concludendo con la costruzione
di un prototipo di Web desktop.
In una precedente tesi sono stati esposti lato server un primo insieme di servizi Web.
Per fruire di questi servizi è stata sviluppata un'applicazione Web lato client, fruibile attraverso un
browser standard.
Come primo passo, di comune accordo con chi ha esposto i servizi, sono stati strutturati i dati in modo
da poterli comunicare in modo asincrono tra server e client.
Il passo successivo è stato svilupparegli elementi che compongono l'interfaccia grafica, la view
dell'applicazione.
Successivamente si è implementato il comportamento dell'interfaccia grafica e il suo interfacciamento
coi servizi pubblicati lato server, cioè il componente controller dell'applicazione.
Si è prestata particolare attenzione alla trasmissione di dati sensibili fra client e server su un canale
sicuro e alla sicurezza dei dati sfruttando le sessioni e i cookie.
Un altro aspetto importante che è stato considerato è la consistenza dello stato dell'applicazione fra la
logica lato client del Web desktop e quella lato server che è responsabile della persistenza dello stato.
Il Web desktop essendo stato progettato in maniera modulare potrà essere continuamente aggiornato
con nuovi servizi e funzionalità.
99
Al prototipo mancano ancora alcuni servizi fondamentali quali il file system remoto, un client di posta
elettronica (nel servizio di home page la casella di posta viene solo monitorata, quindi acceduta in sola
lettura).
Il sistema di gestione dei contenuti adottato dall'Ateneo fornisce ulteriori servizi che possono essere
integrati, inoltre potrebbe essere utile integrarlo come strumento per rendere collaborativi i servizi fra
gli utenti del Web desktop.
Così come possono essere inseriti nell'applicazione svariati canali di news in formato RSS sarà
possibile aggregare la moltitudine di servizi che le software house stanno pubblicando sul Web.
100
Bibliografia
Note bibliografiche
•
[ORY] Tim O'Reilly, What is Web 2.0?,
http://www.oreillynet.com/pub/a/oreilly/tim/news/2005/09/30/what-is-Web-20.html, O’Reilly
Digital Media, 2005
•
[GMP] http://maps.google.com/
•
[DSK] http://en.wikipedia.org/wiki/Desktop_environment
•
[PLN] http://plone.org
•
[WWW] http://en.wikipedia.org/wiki/World_Wide_Web
•
[XML] http://www.w3.org/XML
•
[SEM] http://www.w3.org/2001/sw
•
[WSR] http://en.wikipedia.org/wiki/Web_service
•
[WKP] http://wikipedia.org
•
[BTR] http://www.bittorrent.com
•
[BRT] http://www.britannica.com
•
[WRT] http://www.writely.com
•
[SOA] http://en.wikipedia.org/wiki/Service-Oriented_Architecture
•
[TBL] Tim Berners-Lee, Berners-Lee on the read/write Web,
http://news.bbc.co.uk/1/hi/technology/4132752.stm, BBC, 2005
•
[FLK] http://www.flickr.com
•
[DLC] http://del.icio.us
•
[HSG] http://www.housingmaps.com
•
[RSS] http://en.wikipedia.org/wiki/RSS_%28file_format%29
•
[CRC] http://creativecommons.org
•
[API] http://en.wikipedia.org/wiki/Application_programming_interface
•
[PDC] Phillip Torrone, What is Podcasting?,
http://digitalmedia.oreilly.com/2005/07/20/WhatIsPodcasting.html, O’Reilly Digital Media,
2005
•
[TAG] http://en.wikipedia.org/wiki/Tags
•
[AJX] Jesse James Garrett, Ajax: A New Approach to Web Applications,
http://www.adaptivepath.com/publications/essays/archives/000385.php, Adaptive Path, 2005
•
[CLD] http://www.cloudmark.com
101
•
[MEB] http://www2.meebo.com
•
[DRC] http://www.dropcash.com
•
[GCL] http://www.google.com/calendar
•
[MLT] http://www.multiply.com
•
[RST] http://en.wikipedia.org/wiki/REST
•
[MVC] http://en.wikipedia.org/wiki/Model-view-controller
•
[MFL] http://en.wikipedia.org/wiki/Macromedia_Flash
•
[JWS] http://en.wikipedia.org/wiki/Java_Web_start
•
[JSC] http://en.wikipedia.org/wiki/Javascript
•
[XHT] http://en.wikipedia.org/wiki/Xhtml
•
[CSS] http://en.wikipedia.org/wiki/Cascading_Style_Sheets
•
[DOM] http://en.wikipedia.org/wiki/Document_Object_Model
•
[XHR] Drew McLellan, Very dynamic Web interfaces,
http://www.xml.com/pub/a/2005/02/09/xml-http-request.html, 2005
Testo di riferimento
Dave Crane, Eric Pastello, Darren James, Ajax in Action, Manning Publication, 2005
102
Ringraziamenti
Ringrazio innanzi tutto la mia famiglia per avermi dato quest'opportunità.
Vorrei ringraziare il mio relatore Prof. Stefanelli per avermi dato la possibilità di fare questa tesi e per
la sua disponibilità.
Un grazie a tutti gli amici che mi hanno sopportato e alle persone che hanno condiviso qualcosa con
me.
103