• Aucun résultat trouvé

Evènement Souris selon la norme DOM Events 2

4.2.5 Résumé

En résumé, on peut donc retenir que les mécanismes sous-jacents au caractère interactif d’une scène s’appuient sur un modèle évènementiel ; que ce modèle évènementiel diffère d’un langage à l’autre en termes d’évènements traités, de type de propagation et de complexité de la description. On comprend ainsi mieux la difficulté, d’une part, de l’édition de scènes interactives et d’autre part, de la conception d’algorithmes de transcodage d’interactivité.

4.3 Scénarios d'utilisation des technologies d'interactivité

Comme nous l'avons décrit précédemment, l'interactivité implique une action de l'utilisateur, un traitement intelligent de cette action se traduisant par une suite de modifications de la scène. La valeur ajoutée à une scène par l'interactivité dépend de la quantité et de la complexité des traitements effectués. Cependant, sur certains terminaux, il n'est pas possible, avec une vitesse raisonnable, d'effectuer certains traitements complexes (calculs mathématiques, manipulation d'arbre, …). Dans une architecture client/serveur où le client possède peu de capacité de traitement, il peut être intéressant de déporter ces traitements au niveau du serveur. A l'inverse, si on sait que le client a des capacités importantes et que l'on souhaite alléger la tâche du serveur, et servir plus de clients, on peut effectuer les traitements au niveau client. Il existe donc deux types d'architectures de services interactifs : ceux où l'intelligence du service est centralisée sur un serveur et ceux où l'intelligence est déportée au niveau du client. Nous présentons, dans cette partie, le fonctionnement de ces deux types d'architecture pour en proposer ensuite une synthèse.

4.3.1 Interactivité côté client : les applications AJAX

Les services interactifs, où l'intelligence de l'application est déportée au niveau du client, sont de plus en plus répandus dans le monde Internet sous le nom de services ou applications AJAX. AJAX est un acronyme qui signifie "Asynchronous JavaScript And XML" [83]. Ce terme regroupe un ensemble de technologies permettant de créer des services interactifs plus réactifs pour Internet que les services traditionnels.

Descriptions de scènes multimédia : représentations et optimisations

- 92 -

Le problème que tente de résoudre AJAX est la lenteur de l'interactivité sur Internet. Dans l'approche classique, si une action de l'utilisateur nécessite de modifier la scène en cours de visualisation avec des données issues du serveur, le terminal client (navigateur Web) envoie une requête HTTP avec des paramètres issus de la scène courante et de l'action utilisateur. Le serveur effectue alors le traitement et transmet une nouvelle scène.

Cette méthode pose deux problèmes : celui de l'information redondante retransmise d'une scène à l'autre, et celui du temps de traitement de la requête par le serveur. Plus la scène est volumineuse ou plus le temps de traitement est long, plus l'utilisateur attendra. Un exemple illustrant cette lenteur serait une page HTML présentant deux composants graphiques du type ComboBox où le contenu de la seconde dépend du choix dans la première et du contenu d'une base de données située au niveau d'un serveur potentiellement différent du serveur de l'application. Dans une architecture sans moteur AJAX, une nouvelle page HTML doit être retransmise à chaque changement dans la première

ComboBox.

Une application AJAX comprend les technologies suivantes :

• des technologies de descriptions de scènes comme SVG ou HTML, incluant des capacités d'interaction (avec souris, clavier, …), telles que décrites précédemment;

• une technologie pour manipuler et modifier des scènes, comme les interfaces DOM ;

• une technologie pour faire des requêtes asynchrones à un serveur de données. Les données reçues sont généralement des données XML et l'API permettant les requêtes de données XML sur le protocole HTTP est appelée XMLHttpRequest[68];

• et enfin, des bibliothèques de code ECMAScript faisant appel aux technologies précédentes, appelé le moteur AJAX.

La Figure 4.7 décrit l'imbrication de ces technologies dans une application AJAX.

Chapitre 4 – Descriptions de scènes et interactivité

Le principe d'une architecture AJAX est d'introduire le moteur de traitement de l'interactivité dans la scène. Ce moteur AJAX grâce à l'objet XMLHttpRequest est capable de faire des requêtes asynchrones auprès de différents serveurs et, grâce à l'interface DOM, de transformer la réponse XML en appels à des fonctions de manipulation de la scène en cours. Cette approche présente plusieurs avantages :

• Elle permet de réduire la quantité d'information redondante transmise par le serveur Web : le serveur ne transmet que les nouvelles données.

• Elle permet de décorréler le service de données de l'utilisation qui en est faite. Le serveur de données fournit des documents XML que le moteur AJAX transforme ensuite selon les besoins particuliers de l'application AJAX.

• Enfin, le traitement asynchrone permet d'utiliser le temps entre l'envoi de la requête et la réception des données pour faire d'autres traitements, voire pour laisser la main à l'utilisateur et améliorant ainsi la réactivité de la scène.

Bien sûr, ce modèle présente deux inconvénients liés au fait qu'il déporte l'intelligence au niveau client. Le client doit faire le traitement que le serveur effectuait auparavant, ce qui peut être difficile sur des téléphones mobiles par exemple. Ensuite, la bande passante initiale peut être plus importante si le moteur AJAX est compliqué et nécessite beaucoup de code ECMAScript.

Bien que le nom AJAX soit essentiellement associé à un ensemble de technologies issues du W3C, il est tout à fait envisageable avec d’autres technologies comme BIFS ou Flash. D’ailleurs, le langage ActionScript utilisé par le langage de descriptions de scènes Flash intègre, depuis la version 6, des API pour satisfaire les besoins d'un service AJAX. Tous les composants nécessaires pour une architecture d'application AJAX sont disponibles. En effet, le lecteur Flash intègre des objets ActionScript, appelés

LoadVars et XML, qui permettent respectivement d'effectuer une requête vers un serveur et de traiter le contenu du document XML reçu pour modifier la scène. Le Code 4.9 illustre comment ces opérations peuvent être réalisées dans le langage ActionScript [95].

document = new XML();

document.onData = function {

var a = document.firstChild.childNodes[0].attributes.monAttribut; ...

}

loader = new LoadVars();

loader.sendAndLoad("http://ajaxserveur.com/service.xml", document);