Bonjour à tous,

Je développe depuis 2 ans une application Web assez complexe d'un point de vue métier et technique. Les technologies utilisées sont PHP/Html/Javascript/MySql (pas d'utilisation de framework).

Après avoir consacré pas mal de temps à l'architecture logicielle des couches métiers, je m'attaque à l'architecture logicielle de la couche IHM.

Les IHMs sont hautement dynamiques avec beaucoup d'appel AJAX : popup de données chargées à la volée, appelle d'action en background faisant des modifications en base, etc...

On a actuellement atteint un niveau de complexité assez important mais avec souvent du code assez spécifique. A long terme, cela ne pourra survivre dans cet état

Mes besoins sont les suivants :
  • Décoreler les données de l'affichage et du comportement de navigation
  • Permettre de créer des systèmes de navigation complexe (superposition de popup, etc...)
  • Traiter des résultats d'action envoyés au serveur et en fonction du résultat, pouvoir interagir avec l'IHM.
  • Etc...


On sent bien naitre l'émergence de nouvelle architecture avec plus de responsabilités coté client (par exemple Controller de navigation en JS, etc...).

Pour illustrer mes propos et mes problématiques, un petit exemple :

Je désire afficher la liste des utilisateurs de mon application. Pour cela, je charge une page utilisateurs.html. Une fois la page chargée, en AJAX, et via l'appel d'une fonction JS "loadUtilisateurs", je charge dynamiquement dans une div mes utilisateurs. L'appel AJAX renvoie une page au format HTML.

En face de chaque utilisateur, j'ai une petite icône permettant de l'activer. En cliquant dessus, j'appelle une méthode JS générique "ajaxLink" qui prend en paramètre une URL, des paramètres et une méthode de callBack et qui fait un appel AJAX au serveur pour réaliser l'action. En cas de succès, la méthode de callBack est alors chargée de rappeler la méthode "loadUtilisateurs" pour rafraichir la liste (cette méthode est passée en paramètre à la méthode "ajaxLink").

On voit bien ici la problématique de liaison entre les données, les actions et la navigation. En effet, si je veux utiliser la page affichant les utilisateurs dans un autre contexte, la méthode de callBack ne sera alors plus adéquat, or, elle est spécifié par mon code PHP.

Je suis par contre entièrement d'accord qu'il pourrait suffire de faire une autre page PHP pour modifier l'appel à ajaxLink mais ce n'est pas le but.

Il me serait possible de développer un framework perso pour toutes cette gestion mais ce n'est pas le but

Je connais déjà Prototype, Mootools, JQuery, ExtJS, etc... mais pour moi ces framework ne remplissent pas ce rôle (sauf erreur de ma part ). Par contre, pas de possibilité de passé en GWT car le code doit rester en PHP/Javascript/HTML.

Je fait donc appel à vos connaissances pour me conseiller sur un design pattern à adopter et éventuellement sur un framework à utiliser.

Merci d'avance pour votre aide, en espérant avoir été clair sur mes problématiques