Aujourd'hui aucun navigateur n'inclue un système de stockage intégré permettant de travailler hors ligne. Le billet « Le web2.0 et ensuite » indiquait « Microsoft a présenté officiellement Silverlight , qui apparait dans la continuité de la stratégie de Microsoft, mais pour l'avenir du web, les regards se détournent plutôt vers d'autre (Google ?). »
Et effectivement, Google innove en proposant en bêta Gears. Gears est une technologie permettant de réaliser des applications qui fonctionnent offline. Comment cela est-il possible alors que l'on vient d'écrire que les navigateurs ne le pouvaient pas ? Google a développé des extensions pour chaque navigateurs (pour l'instant Firefox 1,5, Firefox 2, Internet Explorer 6 et 7) pour permettre le fonctionnement offline. L'extensions Gears contient :
  • un serveur local
  • une base de données
  • un synchroniseur
La démarche ouvre le chemin vers de nouveaux usages en rendant possible le développement d'applications web fonctionnant offline. Toutefois, cette solution a de grandes limites. Le principal avantage d'une application web centralisée est qu'elle ne demande pas de déploiement de logiciel. Les navigateurs utilisent des formats standards pour communiquer. Or, dans le cas présent l'installation d'un logiciel est nécessaire sur tout ordinateur susceptible d'accéder à cette application. Exit donc l'utilisation généralisée au grand public.

Google Reader est une lecteur de flux RSS webisé avec un mode de fonctionnement offline.

Pour activer ce mode de fonctionnement, il faut télécharger et installer Gears. Après avoir satisfait se pré-requis, on peut relancer le navigateur et lancer Google Reader

Le message d'activation de Gears s'active :

Un nouvel élément apparait dans l'interface :

Activons cet élément :

Parallèlement on observe un traffic soutenu mais relativement faible sur l'interface réseau. Le téléchargement de tout le flux rss vient en fait d'avoir lieu. Dans ce cas, le Reader fonctionne comme n'importe quel lecteur RSS classique (non-web).


On obtient le message laconique :
On peut alors déconnecter l'ordinateur du réseau. Relancer le navigateur, activer le favoris vers Reader et constater que l'on accède bien aux flux RSS en dehors de toute connection. Ceci dit, consulter les flux RSS sans pouvoir consulter le contenu des articles ne présente pas une grande utilité.
Si l'offre de google semble encore prématurée, elle permet de mettre en évidence certaines contraintes de développement pour toute application avec une composante offline. Dans une application Ajax classique les appels se font directement vers le serveur:
Appel Ajax classique

Côté serveur l'isolation de la couche d'accès aux données est habituelle (malheureusement pas encore assez) côté navigateur c'est aujourd'hui inexistant. Et pourtant, il faut maintenant penser à implémenter cette séparation côté navigateur (et globalement recréer le pattern MVC). En effet, cette séparation est une architecture nécessaire pour implémenter facilement l'utilisation alternative :
  • d'un accès aux données stockées sur le serveur
  • d'un accès stocké par le navigateur
Architecture côté Navigateur pour une implémentation de fonctionnalité offline

Mais cela n'est pas tout, il est important de déterminer quelles fonctionnalités seront accessibles hors ligne. En effet, tous les accès aux données d'une application ne sont pas possibles du fait de l'accès concurrentiel. D'autres utilisateurs sont susceptibles d'accéder aux données et la résolution de conflits n'est souvent pas automatisable. Par ailleurs, la quantité de données à stocker hors ligne peut facilement devenir très importante. Lors des synchronisations, le téléchargement et l'upload de grand volume de données est pénalisant. D'où la nécessité de choisir avec ingéniosité les fonctionnalités à offrir.
Il est nécessaire de synchroniser les données stockées sur le navigateur avec le serveurs. Ceci a lieu dans les 2 sens, en ligne avant la déconnexion, puis au retour de la connexion. La synchronisation est-elle permanente et transparente ? Ou la déconnexion est-elle déclenché par l'utilisateur (qui clic sur un bouton comme dans Google Reader) ? Là aussi les impacts sont nombreux.



Pour une entreprise, déployer un logiciel sur tout un parc mobile peut représenter un frein. Cela reste tout de même plus intéressant (car moins cher) que de re-développer une application spécifique à l'usage mobile ou hors-ligne. Gears n'est absolument pas standardisé et n'est qu'en bêta. Il n'en reste pas moins qu'il est l'expérimentation d'une nouvelle branche d'architecture, de possibilité et des applications de demain.