Dot.Blog

C#, XAML, Xamarin, UWP/Android/iOS

Article : JOUNCE (Silverlight, MEF et MVVM)

[new:31/12/2011]Jounce... Cela fait un moment que je vous parle de l'article que je prépare sur le sujet... Ca a mis du temps, mais c'est un gros morceau ! Un framework MVVM "light" mais très subtile et bourré de bonnes idées. Au final un article de 110 pages environ et plus de dix applications exemples, mon record est battu !

Un toolkit MVVM pas si "light" que ça

Jounce, par son côté "light" semble se rapprocher de "Mvvm Light Toolkit" de Laurent Bugnion. Mais ce rapprochement est vraiment trompeur.

Jounce a été créé par quelqu'un habitué à PRISM et à Caliburn, deux toolkits de type "monstre", très sophistiqués et pas toujours faciles à prendre en main. D'où ma préférence jusqu'à maintenant pour "MVVM Light" qui est loin de couvrir tous les besoins mais qui le fait simplement et qui se maîtrise vite, gage d'un développement aisé (donc rapide et produisant du code maintenable).

En me plongeant dans Jounce j'ai découvert quelque chose de plus sophistiqué que ce que j'imaginais. Le code est petit. Mais il est condensé ! Pourtant il est facile à lire. Mais les principes qu'il utilise et qu'il met en oeuvre sont largement un cran au dessus de ce que MVVM Light propose. Jounce s'inspire directement de Prism et Caliburn...

Un toolkit "moderne"

Jounce utilise tout ce qui est moderne et "rentabilise" intelligemment toutes les nouveautés même celles de Silverlight 4, pour l'instant la dernière version releasée (la 5 arrive mais n'est pas encore annoncée officiellement).

J'ai vraiment eu un coup de coeur pour Jounce. Car le toolkit est finalement très proche des services rendus par Prism ou Caliburn, mais en ne gardant que ce qui est essentiel.

Très habitué à "MVVM Light" j'ai été enchanté par le côté "dépoussiéré" de Jounce. MVVM Light a tendance à utiliser des solutions simples ne tirant pas profit des dernières avancées. C'est aussi un avantage, MVVM Light fonctionne à la fois sous Silverlight, WP7 et WPF, là où Jounce ne fonctionne qu'uniquement sur Silverlight.

D'un autre côté, je n'ai pour l'instant jamais vu d'application reprise à l'identique sous ces trois environnements. Une application WP7 est très spéciale, WPF est utilisé pour faire des choses que la sandbox de Silverlight interdit. De fait une application qui serait "tel quel" portable Web, WP7 et WPF, cela n'existe pas vraiment. Ce qui diminue l'intérêt de la portabilité de MVVM Light, ou plutôt, qui conserve à Jounce tout l'intérêt qu'il mérite.

MEF

Jounce repose sur MEF, officiellement intégré au Framework 4.0. C'est en utilisant subtilement les possibilités de MEF que Jounce sait séparer le code de l'UI, de façon simple et efficace. MEF peut aussi être utilisé pour "modulariser" proprement l'application. C'est un sujet que j'ai d'ailleurs abordé dans un article assez gros aussi (voir MEF et Silverlight). MEF, il faut y goûter pour apprécier. C'est une façon de penser le code différente mais qui est très séduisante. Le mariage de MEF avec un toolkit s'appuyant dessus pour servir le pattern MVVM est une solution tout à fait séduisante.

Des services larges

Jounce offre une palette de services très large malgré sa petite taille. Il va jusquà couvrir la "blendabilité" si chère à MVVM Light et aux utilisateurs de Expression Blend.

MVVM est un pattern sur lequel j'ai beaucoup blogger, j'ai même été jusqu'à soulever le problème de sa légitimité en tant que "pattern". MVVM est une plutôt une guideline qui dit "faites ceci, ne faites surtout pas cela" mais qui n'explique en rien comment se plier à ses injonctions. De fait, c'est à chacun d'interpréter MVVM à sa guise, et selon ses compétences.

Et MVVM, dans la pratique, réserve bien des surprises et des difficultés d'implémentation. D'où la nécessaire aide d'un toolkit.

Mais tous diffèrent et interprètent les choses à leur manière. MVVM Light se révèle à l'usage trop simple pour couvrir toutes les difficultés de MVVM. Prism ou Caliburn sont des monstres qui ne peuvent s'utiliser qu'au sein d'équipes stables dans le temps, soudées, et de niveau techniques elévé et homogène. Caliburn était tellement compliqué que son concepteur a créé Caliburn.Micro, non comme un mini toolkit, mais bien comme une nouvelle version remplaçant l'originale.

Entre ces poids lourds et MVVM Light il n'y avait rien...

Maintenant il y a Jounce !

La légèreté de MVVM Light, la quasi totalité des services rendus par Prism ou Caliburn (modularisation, gestion des zones d'affichage, etc).

L'article à télécharger

Aller, j'ai assez parlé comme ça, je ne vais pas refaire ici les 110 pages de l'article :-) Mais j'espère avoir aiguisé l'appétit du visiteur pour qu'il télécharge et lise l'article !  

SL4Jounce.zip (2,24 mb)

 

Bonne lecture, et Bon développement avec Jounce !

Aujourd'hui c'est le BUILD aux USA, il y aura forcément des choses à en dire, alors...

Stay Tuned !

blog comments powered by Disqus