jump to navigation

Offline Web Applications Maggio 21, 2008

Posted by Stefano Pedone in Articolo.
Tags: , ,
trackback

Negli ultimi anni il fenomeno Web 2.0 ha condotto ad una revisione dei modelli di applicazione che, dovendo ora trovare il loro ambiente vitale sul Web, hanno dovuto cambiare le modalità di comunicazione e di interazione con l’utente e con altre applicazioni di ugual natura. Da ciò è nata una nuova modalità di distribuzione del software (SaaS – Software as a Service) e una nuova tipologia di applicazioni: le RIA, Rich Internet Application.

Fin da subito questo genere di applicazioni hanno richiamato la necessità di sviluppare soluzioni che permettessero di porre rimedio a due importanti aspetti: la possibilità di utilizzo anche in assenza di connessione ad Internet e lo scetticismo dell’utente riguardo al fatto di dover affidare i propri dati su di un server remoto.

Questo genere di problemi hanno sostanzialmente seguito due principali linee di soluzione.
Da un lato si è iniziato a riflettere sui nuovi standard a supporto di questo cambiamento, dall’altro si stanno diffondendo framework di supporto ai browser che permettono di estenderne le funzionalità.
L’obiettivo è unico: permettere il funzionamento offline delle applicazioni web e la memorizzazione locale dei dati.

Il W3C e il WHATWG (Web Hypertext Application Technology Working Group) stanno lavorando alla stesura delle specifiche di HTML5 che, tra le novità, permetterà di gestire la modalità offline. Lo standard è ancora nello stato di Working Draft, ma già le successive versioni dei principali browser (IE 8, Firefox 3, Safari 3.1, Opera 9.5) affermano di supportarle.
Il cammino degli standard è però lungo e le previsioni di termine delle specifiche si aggirano intorno al 2012.

Parallelamente ai lavori intorno allo standard si stanno andando diffondendo delle estensioni ai principali browser con soluzioni proprietarie (ma spesso a codice aperto) che implementano la modalità offline delle applicazioni web. Primo fra tutti, e certamente il più diffuso, è Google Gears, ma non sono da sottovalutare anche altri prodotti, quali Adobe Apollo, Microsoft Sync Framework, Mozilla Firefox 3/XUL Runner, Web2OS, Joyent Slingshot, Zimbra Desktop.

E’ interessante il fatto che a far parte del WHATWG sono proprio i rappresentanti di molte delle aziende appena citate. Google si giustifica in questo modo rispetto alle accuse di voler boicottare gli standard in corso di definizione:

“We have no desire to create a parallel platform and compete with the web. [...]
Currently, the Gears Database and LocalServer modules are not fully compatible with the HTML5 proposals for the same functionality. This is only because those specs were written after Gears was released, and not because of any desire to be different. In fact, we were involved in the design of both HTML5 specs, and we are currently implementing the proposal for database access. [...] By implementing emerging web standards, Gears is influencing what the web of tomorrow will look and act like. And since Gears is an open source project, anyone can contribute.”
(Google Gears API Blog)

I diversi prodotti hanno degli elementi in comune nelle rispettive architetture: un server locale, che è una cache delle risorse web da utilizzare nella modalità fuori linea, e un database locale, che spesso coincide con piccoli DBMS relazionali tipo SQLite. A questa architettura si aggiunge poi il supporto alle diverse politiche di sincronizzazione dei dati e delle risorse.

I vantaggi derivanti dalla possibilità di usufruire con continuità di un’applicazione web anche senza essere connessi ad Internet sono diversi.

  • Innanzitutto la possibilità di utilizzare la stessa interfaccia utente per quei software che prevedevano una applicazione separata per la modalità offline.
  • E’ facile pensare che questa possibilità possa essere in contrasto con la diffusione sempre maggiore delle reti wireless e mobili in genere, ma essa potrebbe essere invece una soluzione ai problemi di latenza e di affidabilità che caratterizzano le reti wireless in genere.
  • La creazione di comunicazioni sicure (in quanto isolate) di tipo “cross-domain”, e quindi di mash-up da e verso nuovi tipi di sorgenti (ad esempio quelle locali), attraverso l’utilizzo del framework locale come “reverse proxy” e come canale sicuro di intercomunicazione.
  • Infine, spostare carico di lavoro verso le sempre più potenti CPU dei client migliorerebbe le performance dell’applicazione.

Alcune interessanti considerazioni si possono fare sulla realizzazione di applicazioni basate su queste tecnologie.

  • Non tutte le esistenti applicazioni web sono in grado di evolvere verso un utilizzo offline delle stesse. Per poter usufruire delle potenzialità di questi framework, è indispensabile che la logica dell’applicazione sia quanto più possibile spostata lato client, lasciando al server il carico di gestire i dati del server remoto e le componenti applicative che devono comunicare, ad esempio, con componenti esterne (è il caso dei mashup). Ciò permette di memorizzare localmente non solo le risorse (immagini, CSS, etc..) ma anche la logica dell’applicazione. Stiamo parlando sostanzialmente delle RIA e in generale di applicazioni che fanno largo uso di comunicazioni asincrone (XMLHttpRequest), facilmente intercettabili e quindi eventualmente storicizzate per una futura sincronizzazione con il server.
  • In fase di progettazione è necessario tener conto del fatto che, spostando (più o meno abbondantemente) il baricentro verso il client, non bisogna perdere uno dei vantaggi delle web application e del SaaS in genere, cioè la possibilità del “beta continuo”, l’aggiornamento costante e centralizzato dell’applicazione. Molti dei prodotti sopra citati permettono di avere politiche di versioning sulla memorizzazione locale delle risorse, ma altre attenzioni sono da porre ad esempio nella gestione dei cambiamenti nello schema del database locale, come anche della retrocompatibilità con dati locali di vecchie versioni.

—————

AGGIORNAMENTO (8 giugno 2008):

Il W3C, in particolare il HTML Working Group, ha pubblicato una nota dal titolo “Offline Web Applications”. Scopo del documento è quello di evidenziare le caratteristiche che saranno presenti in HTML 5 riguardanti l’utilizzo in modalità non in linea delle web application.  Si tratta di una panoramica delle API basate su SQL per memorizzare dati lato client e della cache per la memorizzazione delle risorse web da utilizzare nella modalità offline.
La nota è raggiungibile a questo indirizzo.

Commenti»

1. Turbo blog con Gears « Dive into Information Technology - Luglio 21, 2008

[...] ho scritto nel mio primo articolo sulle Offline Web Applications, si tratta in questo caso solo di uno dei possibili vantaggi apportati da queste estensioni del [...]

2. I cambiamenti del Presentation Layer « Dive into Information Technology - Luglio 22, 2008

[...] in merito alla gestione controllata del caching del browser (vedi precedente articolo sulle Offline Web Applications) permette di spostare sempre più il baricentro della logica e del controllo, lasciando al server [...]