Fonctionnement : Côté théorique

Comment fonctionnent les avantages offerts par les continuations ?
Premier exemple : l’additionneur

1. Description de l’application

Voici un exemple d’application web que l’on va utiliser selon toutes les possibilités d’un navigateur classique pour expliquer en quelques instants l’intérêt des continuations concernant le clonage de pages, l’utilisation de l’URL ou la navigation par les boutons « précédent » et « suivant ».

Il s’agit d’une application web très simple où le client soumet un premier nombre et le valide, puis un second et enfin obtient leur somme. Le schéma suivant illustre l’utilisation normale de l’application. On imagine aisément comment pourrait être construite cette mini application sous forme de servlets agissant pour chaque bouton « submit ».



2. Sans les continuations

Lors de la création d’une application web, aussi simple soit-elle, on constatera bien vite que nombreux sont les cas qu’il faut prévoir et catalyser concernant toutes les actions et rétroactions de l’utilisateur. Prenons quelques exemples de problèmes qu’il faudrait avoir à gérer à l’avance concernant l’application décrite ci-dessus :





3. Avec les continuations

Le grand problème d’une application web est que rien ne permet de faire le lien entre elle et le navigateur utilisé pour la lancer. En effet, les navigateurs offrent certains services, sous forme d’actions généralisées, sur les pages visitées (comme celles déjà citées tels le retour arrière/avant, la navigation directe par l’URL ou le clonage de page). Pour gérer les différents désagréments que ces actions de l’utilisateur pourraient engendrer au niveau de l’application, les continuations se posent comme une solution simple et efficace de gestion d’états, d’évènements et aussi d’erreurs.

Si l’on reprend les différents exemples de problèmes décrits précédemment pour la petite application d’additionneur, les continuations offriraient les avantages suivants :



Tout cela met bien en évidence que les continuations sont en fait un palliatif au manque, au niveau programmation, qui existe concernant la gestion d’états et la résolution d’action de navigation. Ces exemples avaient pour but principal de mettre en évidence que chaque application web nécessite des besoins particuliers en ce qui concerne la navigation, la gestion d’états et d’évènements, et ne peut se contenter de laisser tout navigateur le gérer de façon impersonnelle.