Vue d'ensemble de l'architecture

Préfixe

Au cours de la dernière décennie, les applications Web sont passées des pages HTML statiques, aux pages HTML dynamiques, aux applets et applications FLASH, jusqu'aux applications AJAX.

Les défis d'Ajax

Lorsqu'elles fournissent de l'interactivité pour répondre à la demande de l'utilisateur, les technologies Ajax augmentent les connaissances nécessaires au développement, déjà couteux, des applications Web.

  • API JavaScript incompatibles (provoquant des bugs) entre les différents navigateurs.
  • La mise à jour qui suit l'évolution de la logique de travail des clients est particulière en fonction du langage de programmation.
  • Les dangers de l'exposition du modèle de données de l'application et de la logique de travail du client.
  • Les difficultés de communication pour maintenir la consistance des données entre le client et le serveur.

Solutions courantes

Pour offrir une solution AJAX facile à utiliser, bon nombre de Framework's ou de libraires ont été développés. Le moyen le plus simple est en effet de fournir des composants JavaScript prêts à l'emploi. Cependant, les développeurs d'applications doivent manipuler ces composants, tenir compte de la logique du client, et développer des applications spécifiques pour échanger les données de manière dynamique avec le serveur.

En bref, seul le premier des défis présentés ci-dessus a été pris en compte. D'une façon générale, les autres défis restent le problème des développeurs. Cela est-il intrinsèque au développement d'applications Web ? Ou bien le modèle de développement traditionnel est-il simplement inadéquat?

Architecture ZK

En réponse à ces défis, ZK offre un modèle de programmation d'applications Web intuitif avec gestion d'évènements, basé sur des composants, et une architecture centrée serveur. De plus, ZK offre un développement moderne de technologies UI, tel qu'un langage de balises permettant de développer des UI sans programmation, un langage de script qui adapte les applications en cours d'utilisation, des annotations et des liens de données pour accéder à des bases de données et des services Web sans programmation.

Comme représenté ci-dessus, ZK est composé du Client Engine tournant sur le navigateur, et du Update Engine sur le serveur. Elles agissent comme lanceur et receveur. Elles travaillent ensemble pour offrir la gestion d'évènements survenant dans le navigateur à l'application tournant sur le serveur, et mettre à jour l'arbre DOM sur le navigateur en se basant sur la manière dont sont manipulés les composants par l'application sur le serveur.

Au centre, tous les codes de votre application sont exécutés sur le serveur. N'importe quel événement déclenché par les utilisateurs est automatiquement envoyé à votre application fonctionnant sur le serveur. N'importe quelle modification d'un composant tournant sur le serveur est automatiquement mise à jour dans le navigateur. Le navigateur n'est seulement qu'une interface de présentation de l'application, aucun modèle de données, ni aucune logique de travail n'y est exposée.

Grâce au fait que l'application fonctionne sur le serveur, l'accès aux données (sur base de données ou services Web)est direct. Pas d'embêtement dans la gestion de la communication, ni dans la sécurité des transferts nécessaires à l'accès des données au travers de l'internet.

La meilleure façon d'utiliser AJAX est de ne même pas connaitre son existence.

Schéma de fonctionnement

  • Le ZK Client engine est intégré au navigateur et détecte n'importe quel évènement déclenché par l'utilisateur tels un mouvement de souris ou un changement de valeur. Une fois détecté, il est envoyé au Update Engine.
  • Après avoir reçu la demande du Client Engine, l'Update Engine met à jour le contenu des composants correspondants si cela est nécessaire. Ensuite, l'Update Engine le signale à l'application en invoquant le gestionnaire d'évènement, le cas échéant.
  • Si l'application choisit de changer le contenu des composants, de supprimer, d'ajouter ou de déplacer des composants, l'Update Engine envoie le nouveau contenu modifié des composants au Client Engine. Enfin, le Client Engine met à jour l'arbre DOM en conséquence.
Note:
  • Pour minimiser le trafic entre le client et le serveur, plusieurs évènement sont envoyés au serveur en une fois pour autant que ceux-ci soient différrables.
  • Pour maximiser les effets visuels ainsi que la réactivité, ZK fournit le "Client Side Action" qui vous permet d'exécuter vos propres codes JavaScript sur le client.