Prism répondent ce besoin d'intégrer plus fortement le Web au Desktop
Restent que les applications déconnectées (quelles soient Web ou non d'ailleurs) amènent leurs lots d'enjeux d'architecture qu'il ne faut pas sous estimer:
Beaucoup de questions et peu de réponses (en tout cas générales...). Alors entrons dans le vif du sujet et codons...pour apporter quelques éléments de réponses.
A ce jour, 3 initiatives " sérieuses " existent et visent à faciliter la mise en place d'un mode déconnecté sur des applications web :
Une autre initiative pilotée par le W3C propose d'intégrer les problématiques de déconnecté dans le langage [HTML5](javascript:void(0);/1218277653703/) en proposant des concepts similaires à Gears.
Gears s'installe sous forme de plugin - disponible pour les navigateurs courants -. Ce plugin va mettre à disposition deux éléments principaux:
un " mini-serveur " HTTP qui portera techniquement le nom de LocalServer. Ce composant a pour responsabilité de "mettre en cache" l'ensemble des ressources (HTML, images, css...) et de les servir une fois l'application en mode déconnecté
une base de données SQLLite qui permettra de stocker les données
Les APIs Gears proposées sont en JavaScript, et oui. Elles proposent les 3 grandes classes suivantes :
LocalServer. Vous l'aurez devinez, il s'agit d'une API permettant d'interagir avec le " mini-serveur " http.
DataBase. Là encore, une API permettant d'exécuter des requêtes SQL sur la basede données embarquées (SQLite). A noter que l'API proposée permet des recherches de type " full-text ".
Timer et WorkerPool. Moins évident. Il s'agit de classes qui " s'exécutent " en background de l'application et réalisent les travaux que vous leur avez demandé : typiquement des travaux de synchronisation (on y reviendra...)
N'étant pas personnellement un grand fan de Javascript (on sait jamais ca peut venir...), gwt-google-apis propose une encapsulation de ces apis et permet ainsi de manipuler Gears, directement en Java et donc directement depuis une application GWT.
Le terrain de jeu étant posé, les prochains articles illustreront comment rendre l'application exemple [1] suivante utilisable en mode déconnectée :
[1] Il s'agit d'une simple application de consultation des comptes. Cette application permet également de réaliser des demandes de virements.
Dans le cadre de notre exemple, la règle métier sur le virement est simple: il est impossible de virer une somme d'argent plus importante que le solde disponible sur le compte "source"... Cette règle métier est bien entendue implémentée côté serveur...