Dot.Blog

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

Template10 un mini framework MVVM ou juste des helpers ?

imageLe développement cross-plateforme a forcé les outils MVVM à s’adapter ou à se spécialiser. Certains se veulent très complets, d’autres se veulent juste des aides minimalistes. Et Template10 ?

Un template

Template10 est avant tout un template de projet pour Visual Studio. Il se décline en 3 versions : Blank, Minimal et Hamburger.

Il se destine aux applications XAML/C# pour Windows, donc plutôt pour UWP que pour Xamarin.Forms (il existe des références à des libs typiques de UWP qui interdisent de l’utiliser en l’état dans d’autres contextes).

En ces temps de cross-plateformes que vient faire un billet sur un template MVVM pour UWP ?

Plusieurs raisons à cela.

  • La première est que toute approche nouvelle de la problématique MVVM est intéressante en tant que telle, on a toujours quelque chose à en apprendre, à réutiliser autrement.
  • La deuxième c’est que UWP n’est pas mort, il est à Windows 10 ce que WPF voulait être à Windows 8. Même si la fameuse “universalité” perd un peu de son sens s’il n’y a plus de smartphones Microsoft, elle garde une part d’attractivité pour la XBox, Hololens… Mais surtout pour les PC Windows 10. Une App UWP se marie bien mieux dans l’écosystème.
  • La troisième c’est que l’approche utilisée, un template de projet, est une autre façon de considérer la fourniture d’une base de programmation à des collègues en entreprise par exemple. Créer des templates “maison” est assez judicieux, tout nouveau projet est certain de contenir les briques de base partagées par toutes les applications de l’entreprise. C’est ainsi une façon de procéder dont il faut s’inspirer.
  • La quatrième c’est que Template 10 est intéressant en soi et peut rendre de grands services lorsqu’on ne veut pas s’empêtrer dans Prism ou Caliburn.micro.

Tour d’horizon rapide

T10 a été conçu avec dans l’esprit certains automatismes qui facilitent les choses. La philosophie étant : “faites-le à notre façon sauf si vous voulez le faire à la vôtre”. Il s’avère que T10 a été bien pensé et que décrocher de ce qu’il propose se doit d’être justifié. Mais c’est possible. T10 ne parle pas de bonnes pratiques (même s’il en suit) mais de conventions.

Par exemple les noms des répertoires pour les View, les ViewModel et les Models sont fixés ce qui permet la connexion automatique entre les éléments. C’est une contrainte très légère car on la suit habituellement même sans T10. La navigation s’effectue par le biais d’un service de navigation. Là encore rien d’extraordinaire, c’est la “coutume” en MVVM. Les communications s’effectuent via un Messenger, un pattern là encore qui n’a rien d’exotique.

T10 est constitué ainsi principalement de code et de conventions pour liés tout cela le plus simplement possible. Il y a quelques contrôles, des Behaviors, des services, des convertisseurs de valeur, des classes MVVM (BindableBase, DelegateCommand, ViewModelBase) qui se retrouve dans les frameworks MVVM (respectivement ObservableObject, RelayCommand et ViewModelBase dans Mvvm Light par exemple). S’ajoutent des classes utilitaires pour compléter le template (en réalité 3 templates comme je le disais plus haut).

T10 c’est qui ?

Il y a toujours des gens derrière un projet, qui sont ceux derrière T10 ?

Jerry Nixon, l’auteur d’un guide pour Windows 10, Daren May co-auteur des Windows 10 hands on labs; Robert Evans ingénieur spécialisé dans les App Windows, mais aussi les PFE Microsoft dans le monde entier (Premier Field Engineers); les équipes internes de Microsoft orientées produits et celles orientées plateformes qui contribuent au projet et une communauté de développeurs.

T10 n’est donc pas une idée sortie d’un seul chapeau, c’est un projet vivant qui dispose de membres connaissant leur sujet.

A utiliser ou non ?

Un framework ou peu importe le nom qu’on lui donne qui ne couvre qu’une cible m’apparait aujourd’hui, moi qui plaide le cross-plateforme depuis tant d’années, comme une sorte d’exotisme sympathique… Je vous l’avoue.

Template 10 n’a de sens que dans le cadre de nouveaux projets UWP qui refuseraient (par religion plus que par raison) la possibilité d’être cross-plateforme en utilisant les Xamarin.Forms.

L’universalité de UWP étant tombée avec l’arrêt des smartphones Microsoft le créneau laissé à cette techno devient un long couloir étroit dont on ne sait rien de ce qu’il y a au bout… Succès ou abandon faute de combattants… Microsoft a déjà laissé tombé ses smartphones, l’avenir de la plateforme Windows n’est-il pas dans le cross-plateforme ? La compatibilité Linux ou d’autres voies que nous ignorons aujourd’hui ? Quel investissement peut-on faire sur UWP en tant que système principal et unique pour développer ?

Il y a trop de questions pour moi… Je ne me risquerai pas à faire des pronostics dans ce domaine. Du tout fermé, de la logique “il n’existe que UWP et tout le reste va mourir” (dernières présentations de Sinofsky rappelez-vous) au rachat de Xamarin et à la déclinaison d’une nouvelle vision totalement cross-plateforme de .NET lui-même (.NET Core) sous l’ère Nadella, Microsoft n’a pas forcément la main sur son futur et il s’adapte au mieux au marché, zigzaguant parfois tel un homme ivre plutôt qu’un phare puissant et fixe montrant une direction solide à suivre…

Ce qui est fait aujourd’hui est très intelligent et va dans la bonne direction. UWP reste “universel” dans le monde Microsoft, mais la proportion de développeurs travaillant sur les hololens ou la xbox en entreprise est proche de zéro !

Bref, si vous êtes dans une équipe 100% UWP, Template 10 est vraiment quelque chose à considéré à côté des frameworks MVVM classiques. C’est bien fait et cela couvre la majorité des besoins.

Si vous ne faites pas partie de telles équipes, alors je conseille juste de regarder comment est fait Template 10, de vous inspirer pour produire vos propres templates de projets facilitant l’adoption de règles de programmation communes dans votre entreprise.

C’est d’ailleurs plus à ce titre que j’en parle aujourd’hui.

Conclusion

Template 10 est un excellente idée qui permet de voir un framework MVVM sous une autre forme, ce qui ouvre des horizons intéressants.

Programmer tout en UWP et rien qu’en UWP est un choix que je laisse à chacun en sachant que malgré sa meilleure adaptation à Windows 10, son adoption assez faible est encore plus ralentie par l’arrêt des smartphones Windows dans les faits (MS a dit qu’ils continueraient, un jour…).

Bien maitriser MVVM c’est en connaitre toutes les implémentations. Tout comme un musicien se doit de tout écouter même ce qu’il ne joue pas de façon privilégiée. Ouvrir son esprit est la base d’une meilleure compréhension du monde.

T10 fait partie de ces outils bien faits, comme le fut Jounce pour Silverlight dans le même domaine. Je suis certain qu’en revisitant le code source de ce dernier on pourrait encore en tirer encore des leçons pour concevoir un framework MVVM parfaitement adaptés aux nouveaux besoins.

Bon Dev UWP ou bonne session de culture générale MVVM en étudiant juste le code de T10 !

Vous le trouverez ici : https://github.com/Windows-XAML/Template10

Stay Tuned !

blog comments powered by Disqus