Les frameworks Ajax les plus avancés commencent à proposer un cache local de données pour faciliter le travail hors connexion. Utile pour travailler dans le train, l'avion ou au bout du monde
Alors que de plus en plus d'applications web reposent sur
l'architecture Ajax (Asynchronous Javascript And XML), une question
fondamentale reste en suspend : comment proposer aux utilisateurs un
mode déconnecté ? C'est-à-dire, comment leur permettre d'utiliser leurs
applications favorites sans aucune connexion internet ? La réponse à
cette question est fondamentale car elle influence souvent le choix
d'une technologie de RDA (Flex, Eclipse RCP par exemple) plutôt qu'une
technologie de RIA (Ajax). Pour bien comprendre le problème, rappelons
que les cookies sont théoriquement le seul mécanisme permettant de
stocker jusqu'à 4 Ko de données dans un fichier texte écrit dans une
zone réservée et sécurisée du système de fichier de l'ordinateur cible
Des solutions commencent à émerger
Heureusement,
face à l'intérêt d'un cache de données local, des solutions commencent
à émerger. La première est le fruit des ingénieurs de Tibco qui ont
inclus à leur framework General Interface un système de cache de
session reposant sur un fichier XML. Les données sont écrites dans le
cache du navigateur, dans un fichier XML facilement manipulable. Bien
entendu, cette approche nécessite une machine puissante pour "parser"
rapidement les données XML. Mais le principal inconvénient consiste
dans le fait que l'utilisateur peut facilement faire varier la taille
du cache de son navigateur de 1 Mo à plusieurs Go.
La seconde méthode repose sur la capacité des Shared Objects (FSO)
du lecteur Flash Player à stocker 100 Ko de données en local sans rien
demander à l'utilisateur (réglage par défaut du lecteur Flash. Avec son
accord, il est possible de stocker des Go de données en local. La
librairie Javascript Ajax MAssive Storage System (AMASS) repose sur ce
principe. Elle utilise une applet Flash cachée pour stocker ses
données. Grâce à cette approche, l'information persiste sur le disque
dur même après la fermeture du navigateur. Côté sécurité, les données
sont privées et ne peuvent être manipulées que par le domaine qui a
permis de les sauvegarder. Cette librairie fonctionne au sein
d'Internet Explorer 6 et Firefox lorsque qu'un lecteur Flash 6 (ou
supérieur) est installé (95 % des ordinateurs). A noter aussi l'Ajax
Client for Flex Data Services qui permet de relier un objet Javascript
avec un service web sous-jacent via le bus d'échange d'Adobe. L'intérêt
est que FDS prend en charge la synchronisation du cache FSO .
Enfin,
certains éditeurs comme Sun n'hésitent pas à proposer aux développeurs
d'exécuter directement la base de données relationnelle Sun Java DB
(basée sur Apache Derby) directement au sein de la JVM du navigateur.
Sun propose même une démonstration assez concluante pour peu que la
machine cible soit puissante et déjà équipée d'une machine virtuelle
Java. Il existe aussi un moteur SQL écrit en Javascript, TrimQuery
Vers une standardisation des méthodes ?
La dernière approche repose sur la capacité d'Internet Explorer (5
et versions supérieures) à stocker 64 Ko de données par page (640 Ko au
total par domaine) dans un fichier XML en dehors du cache officiel. Ce
mécanisme s'appuie sur un "comportement DHTML" standard du navigateur
de Microsoft. La preuve par l'exemple. A noter que Mozilla propose
aussi un accès direct (via Javascript) depuis ses navigateurs à une
base de données relationnelle.
Bref, les possibilités ne manquent pas et les développeurs les
explorent toutes pour le moment. Pour leur simplifier la tâche,
certains frameworks Ajax commencent à intégrer ces méthodes au sein de
leurs APIs (Application Programming Interfaces). C'est le cas notamment
de Dojo Toolkit - l'un des plus utilisés au monde - avec Dojo.storage.
Cette API propose un moyen simple pour stocker des informations en
local, sur le disque dur du PC de l'utilisateur. C'est une couche
d'abstraction qui propose une API unifiée quelle que soit la méthode de
stockage retenue et le contexte de l'application (Javascript dans un
navigateur, plug-in Firefox, ActiveX, etc.). En plus, Dojo.storage
sélectionne automatiquement la meilleure solution de stockage parmi les
nombreuses options qu'elle supporte : cookies, SharedObject Flash, API
COM et XPCOM, 64 Ko d'Internet Explorer, travaux du WHAT sur la
persistance des données de session, etc.
Grâce à l'intégration
progressive de runtime Javascript de qualité au sein des navigateurs,
ces approches devraient progressivement gagner en performance et en
stabilité. De là à ce que les navigateurs intègrent un jour un cache de
données local ? Il n'y a qu'un pas à franchir.
Découvrez l'intégralité de l'article de Frédéric Bordage sur indexel.net