vendredi 6 juillet 2007

Asynchronisme vs Evenementiel

Depuis le début de nos dev, deux modèles s'opposent sur lesquels nous n'avons pas encore réellement tranché : l'asynchronisme et l'événementiel.
  • Optique Asynchrone
Quand on fait un peu d'Ajax on apprend vite à faire de l'asynchronisme. En JS la fonction est une variable (presque) comme un autre. On lance une méthode qui rendra sa réponse dans un temps indéfini, on passe en paramètre la méthode que l'on veut qui soit lancée lors de la réponse et c'est parti.

Pour avoir fait tout le require de cette façon, je me rends compte que même si c'est un peu déstabilisant, on apprend à jongler avec les objets fonction et on s'en sort pas trop mal.

Une problématique existait : le join de plusieurs asynchronismes parallèles. Problématique résolue avec le système Archetype.Joiner.
  • Optique Événementielle
Dans les applications lourdes, on utilise souvent de préférence des systèmes d'évènements. On lance une méthode qui est asynchrone, elle déclenche un évènement quand elle a finie.

Si on veut faire quelque chose après, on s'identifie comme "listener"de l'évènement et notre méthode sera exécutée tout aussi bien qu'avec la méthode asynchrone.
  • Et la question...
Et la question qui suit est : qu'est ce qui est le mieux ? Nous savons que nous utiliserons énormément à terme les évènement car nous voulons que nos composants puissent déclencher tous les évènements les concernant sans avoir à savoir si d'autres composants sont à l'écoute ou non.

Mais pour autant, le require géré en asynchrone est-il à refaire avec des évènements ? Y-a-t-il une solution meilleure que l'autre ?

Dans tous les cas, l'utilisation importante d'évènement me semble nécessiter une organisation forte pour le nommage d'évènement. Ce sera un chantier important à venir.

0 commentaires: