Dot.Blog

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

MVVM Light 5 : support de Xamarin !

[new:31/10/2014]Mvvm Light a toujours été ma préférence pour sa simplicité et son efficacité. La V5 apporte son lot de nouveautés parmi lesquelles on trouve enfin le support pour Xamarin !

Une librairie unifiée cross-plateforme

MVVM Light est désormais l’une des deux seules librairies MVVM véritablement portables sous tous les environnements C# :

  • WPF 3.5, 4.0, 4.5 et 4.5.1
  • Silverlight 4 et 5
  • Windows Phone 7.1, 8, 8.1 Silverlight et 8.1 WinRT
  • Windows Store 8 et 8.1
  • Xamarin.Android
  • Xamarin.iOS
  • Xamarin.Forms

 

Il est donc possible d’utiliser la même stratégie, le même code MVVM d’un smartphone Samsung à une tablette Apple en passant Surface, Windows Phone, le Web en vectoriel avec Silverlight et sur PC aussi bien full .NET WPF qu’en mode tablette avec WinRT.

Mvvm Light 5 vs MvvmCross

Les deux approches sont radicalement différentes et MvvmCross reste une de mes options préférées pour le cross-plateforme car cette librairie apporte plus que MVVM comme une syntaxe de Data Binding même sous iOS ou Android.

Toutefois avec l’arrivée des Xamarin.Forms et de composants tiers qui apparaissent pour cet environnement, travailler avec MVVM Light sur les OS mobiles prend plus de sens puisque Xamarin rend possible le binding et qu’on peut se passer de l’aide d’une librairie pour le faire.

Mvvm Light est un framework léger, opérationnel, qui a fait ses preuves. Il reste mon choix par défaut en toute circonstance. La V5 renforce encore plus cette prédilection. Toutefois selon les projets, MvvmCross peut s’avérer plus universel, plus apte à aplanir les difficultés d’un grand écart de type iOS/WPF/Android.

Quant à Prism, la version WPF a toujours été lourde malgré ses innombrables qualités et en revanche la version WinRT me semble trop limitée car exclusivement orientée WinRT.

D’autres frameworks n’ont existé que pour certaines cibles, Jounce par exemple ne tourne que sur Silverlight avec MEF. C’est un framework dont j’ai dit tout le bien que j’en pensais à l’époque, mais il n’est plus d’actualité. Prism pour WinRT est de la même espèce, bien ficelé, bien pensé, mais trop limité à une seule cible dans un monde ou il faut marier les form factors et les plateformes.

Reste donc en course MvvmCross et Mvvm Light V5. Tout dépend du projet, c’est une décision au cas par cas donc, l’un n’efface pas l’autre en tout cas.

Les nouveautés de la V5

Mvvm Light se transforme petit à petit et de nouvelles fonctionnalités apparaissent. Le support de Xamarin n’est pas l’un des moindres on s’en doute, mais il ne faudrait pas que l’arbre cache la forêt.  Par exemple l’ajout d’un service de navigation est un must. Prendre en charge la navigation est un besoin vital dans une application, besoin que Mvvm Light ignorait depuis toujours. De même que le service de dialogue dont seul un début de commencement était géré (via le messenger avec une classe de message spécialisée).

Il s’agit là d’innovations importantes pour ce framework qui était malgré tout très en retrait sur des fonctions aussi vitales.

Dans la foulée la V5 supporte les PCL (Portable Class Library) ce qui permet de mieux l’intégrer dans une logique cross-plateforme avec partage du code au niveau binaire.

Derrière ces nouveautés se cachent d’autres détails. Par exemple les services de dialogue et de navigation sous-tendent la présence d’une Interface qui propose des implémentations pour toutes les plateformes (ou presque puisqu’il n’y a pas d’implémentation WPF fournie pour l’instant mais rien n’interdit de l’implémenter si besoin est).

Le support des Xamarin.Forms fonctionne “out of the box” et c’est une bonne nouvelle aussi car les Xamarin.Forms que je vous ai déjà présentées sont une avancée de taille dont je reparlerai très certainement.

Conclusion

Avec de tels changements il peut y avoir deux ou trois choses à modifier dans un code existant qu’on voudrait mettre à jour en V5, sinon il n’y a aucun problème.

S’agissant d’un travail en perpétuel chantier d’autres améliorations viendront certainement, mais les principales listées ici permettent d’ores et déjà à Mvvm Light de rester le framework MVVM de référence pour tous les développements de taille conventionnelle et d’être une base parfaitement stable pour des applications de grandes tailles.

La grande unification présentée par Microsoft n’est pas forcément celle qu’on croit. La véritable grande unification n’est pas de partager du code entre Windows Phone et Surface mais de pouvoir marier de l’iOS, de l’Android, du WinRT et du WPF avec un même code. Et cette grande unification nous vient de Xamarin et non de Microsoft et de gens comme Laurent qui avec la V5 de Mvvm Light nous offre les outils pour faire face sereinement à un marché décousu et segmenté en plusieurs OS tous incontournables.

Sans Xamarin, sans MvvmCross ou Mvvm Light, nous serions coincés à choisir notre camp et peut-être à tout perdre pour avoir fait le mauvais choix. Avec eux, notre bagage C#/Xaml nous permet d’affronter ce marché distendu et multi-plateforme. Nous avons de la chance d’avoir choisi le bon langage et la bonne plateforme avec .NET … Il sera dur de nous convaincre que seul WinRT est l’avenir car le présent est bien plus complexe que la bonne vieille hégémonie de MS. On a raillé MS pour cette présence sans partage, et comme je l’avais prédit, nous regretterons la stabilité que nous offrait cette hégémonie… Hélas pour notre tranquillité et pour l’éditeur de Redmond malgré la grande qualité des solutions qu’il propose aujourd’hui nous ne pouvons pas tout sacrifier pour le suivre de façon exclusive car nous devons gérer des technologies de plusieurs types en même temps.  J’ai connu un temps lointain où un client choisissait un logiciel et achetait l’ordinateur qui le faisait tourner, aujourd’hui le client choisit la plateforme et veut que le logiciel fonctionne dessus, peu importe ce que cela nous coute…

Microsoft en touchant de gros royalties sur les ventes d’appareil Android et en signant un partenariat avec Xamarin place ses œufs dans tous les paniers à la fois. Que WinRT finissent par être un succès ou que les 85% d’Android finissent par étouffer les Windows Phone et les Surface, Microsoft sera gagnant à tous les coups ! Nous serions bien idiots de ne pas suivre l’exemple qui nous vient de si haut en nous restreignant aux plateformes MS…

Dans notre quête du bonheur Xamarin et la V5 de Mvvm Light nous aident à trouver la petite lumière au bout du tunnel…

blog comments powered by Disqus