Framework pour « client riche »

Il existe de nombreux framework d'application web, tel que Spring, Struts, JavaServerFaces ou WebForms…
Mais qu'en est-il des "clients riches", cad, des applications graphiques faites en WinForms, GTK, etc…

Dans le monde Java, il y a Eclipse RCP, qui est pour moi sans conteste le meilleur framework d'application. Il y a aussi Spring RCP que je connais mal.

Dans le monde .Net, CAB est sans doute le plus connus, et pour cause c'est le framework proposé par M$, mais il en existe d'autre comme eXpressApp (de DevExpress).

On peut aussi se faire son propre framework… et je vais essayer de lister les avantages et inconvénients de coder soi même ou d'utiliser l'existant car, bien évidement, aucune solution n'est parfaite et la bonne solution est celle qui s'adapte le mieux au besoin…

Un framework existant c'est bien, c'est puissant, c'est déjà codé, mais on n'en a pas la maîtrise. S'il y a un bug, on laisse à l'équipe du framework le soin de le corriger. Mais puisqu'on en a pas la maîtrise, on ne choisi pas non plus les évolutions et les possibilités du framework.
Même si le travail de réalisation du framework est déjà fait, il faut tout de même une formation (qu'on a pas si les personnes concernées font elle même leur propre framework). Dans tout les cas, un framework existant "puissant" et "souple" est synonyme de "complexe". La formation n'est donc pas à négliger. En parlant de formation, je parle par expérience de mes heures de développement avec Eclipse RCP, quand on connait mal le framework on voit qu'on peut faire une même chose de plusieurs façon et on ne sais jamais si c'est la bonne… et il n'y a rien de plus frustrant quand de simple petite chose deviennent vite complexe à réaliser car le framework "enterre" tout et qu'on connaît pas ses points d'entrée pour atteindre la fonctionnalité voulue.Les frameworks "souples" le sont car ils doivent s'adapter aux besoins de chaque développeur… Ce qui veut dire qu'il y a toujours une partie "paramétrage" ou réalisation d'un code commun pour répondre aux besoins de bases, avant de pouvoir utiliser les possibilités du framework. Exemple : je souhaite faire une application à l'aide d'eclipse RCP, mais en partant de rien j'ai une fenêtre vide. Si je veux que ça ressemble à Outlook (barre de navigation latérale, menu principal, barre d'outil etc.) il me faut pas mal de code. Après avoir réaliser le "noyau" adapté à mes besoins, je peux commencer à coder les parties "métiers" de l'application.

J'ai choisi de faire mon propre framework, car je pense que les frameworks existants sont trops complexe pour répondre au besoin. Je souhaite un framework "simple" sans trops de fonctionnalités "inutiles"… le mot d'ordre : Lightweight.
Le temps de formation pour moi est null, et pour les autres est minime puisque le framework reste "au plus simple".
Bien sûr je part pas de zéro… toutes mes connaissances en Eclipse RCP se retrouve dans mon framework. Ce qui me donne un double avantage : quand j'ai besoin de répondre à un problème, je regarde comment c'est fait dans eclipse et je m'en inspire.
Pourquoi ne pas utiliser Eclipse RCP alors ? Tout simplement car la philosophie de mon entreprise est de faire du .Net (car ils trouvent que Java c'est de la merde et que ne pas utiliser du M$ c'est anti-professionnel… vraiment, quand est-ce que le monde évoluera ?).
Donc, comme mon application est au plus simple, et répond seulement au besoin de mon projet, le "noyau" est déjà codé (du coup il n'est pas souple, mais il ne tend pas à l'être car personne ne va re-utiliser se framework). La seul tâche des membres de l'équipe c'est de comprendre le framework (qui je rappelle est simple) et de se concentrer à faire le code "métier". Bien évidement, cette solution n'est pas parfaite. Il me reste la responsabilité de corriger les bugs, et de faire évoluer le framework suivant le besoin. Mais je suis certain que les besoins n'atteindront pas ceux couvert par des Framework complexe… et que mon travail n'est donc pas du temps de perdu.

Bien évidement, je suis loin de l'avoir fini, et il peut toujours d'améliorer suivant le besoin… mais je pense être sur la bonne voie. Je vais essayer de commenter mes choix et rapporter le status de mon projet.

BmV3

Publicités

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s