Dot.Blog

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

Prism pour Xamarin.Forms 7.0 releasé

En ce début d’année (que je vous souhaite excellente bien entendu) voici une release attendue, Prism pour Xamarin.Forms 7.0. Elle apporte de nombreuses améliorations que je vous propose de découvrir…

Prism pour Xamarin.Forms

Inutile de vous faire perdre un temps précieux en présentations que j’ai déjà écrites dans les mois précédents à propos de ce toolkit MVVM indispensable. Je renvoie donc le lecteur intéressé à la liste des articles qui abordent le sujet notamment une série en 7 parties sur le toolkit lui-même.

.NET Standard

Cela était attendu depuis un moment, la bêta permettait déjà de se conformer à cette nouvelle utilisation de .NET mais c’est désormais releasé officiellement : Prism pour Xamarin.Forms supporte .NET Standard.

je ne vais pas là non plus vous en faire des tonnes sur ce que cela signifie et je renverrai là aussi le lecteur à mes articles sur .NET Standard pour en comprendre l’évident intérêt.

C’est en tout cas l’annonce la plus importante techniquement pour cette version 7.0 de Prism puisque comme vous le savez Visual Studio depuis peu de temps oblige à utiliser .NET Standard au lieu des PCL.

Nouveau Namespace pour l’IoC

Il était temps de simplifier et d’unifier tout cela… La version 7.0 offre une nouvelle API pour les conteneurs IoC qui est utilisée partout par le code du toolkit et qui s’offre aussi au développeur. L’un des gros avantages est que désormais la même API permet de traiter les conteneurs IoC dans Prism que cela soit sous UWP, WPF ou les Xamarin.Forms renforçant encore plus la portabilité du code entre les plateformes, associé au support de .NET Standard bientôt un même code identique pourra donc être utilisé sous toutes ces plateformes portant l’idée de l’universalité des Xamarin.Forms bien au-delà de leurs limites !

Les breaking changes

Certaines évolutions ne peuvent se faire sans un minimum de “casse”… Prism 7.0 en adoptant .NET Standard, en reformulant une API globale pour les conteneurs IoC et d’autres changements nécessaires n’échappe pas à la règle.

Bien entendu on retrouve ces “changements cassants” dans la sphère du conteneur IoC, forcément. Mais aussi l’API IModule, dans l’interface IPlatformInitializer, etc.

Autant dire qu’on ne prend pas un code écrit avec une ancienne version de Prism pour juste faire un update du package… On destinera la V7.0 aux nouveaux développements en laissant tranquilles ceux qui fonctionnent déjà avec les releases précédentes ! Toutefois les breaking changes sont localisés et bien documentés et il reste donc possible d’effectuer une mise à jour, mais en connaissance des effets…

Les améliorations

Bien que le but de la version 7 était principalement le support de .NET Standard et la clarification de l’API des conteneurs IoC elle s’accompagne de nouveautés qui ne sont pas sans intérêt.

On en retrouve dans le système de navigation notamment lorsqu’on navigue sur des onglets d’une page tabulée. C’est un cas de navigation un peu délicat à régler et les nouvelles solutions vont simplifier ce type de navigation.

Dans la même veine on trouve la génération automatique des tabulations et des pages tabulées lorsqu’on navigue vers une telle page.

La navigation a été au coeur des nouveautés et la possibilité de retirer une page de la pile de navigation a été ajoutée. Cela permet de répondre à certains scénarios (supprimer une page de login de l’historique une fois la personne identifiée par exemple).

Toujours au sein de la navigation il devient possible d’utiliser une navigation modale dans les liens profonds. S’il s’agit ici de scénarios déjà plus complexes il n’est pas si rare que cela de les rencontrer.

GoBackToRoot est une nouvelle fonction de la navigation, toujours elle !, qui permet comme son nom l’indique d’effacer toute la pile de navigation et de revenir à la page racine. Cela peut s’avérer très pratique.

Et pour terminer, sortons de la navigation pour une autre amélioration tout aussi essentielle : le support des propriétés complexes dans ObservesProperty ! C’est à dire qu’il devient possible d’observer la sous propriété d’une propriété (MaPropriété.SousPropriété.SousSousPropriété…). Cela simplifie encore plus ce merveilleux mécanisme que j’ai détaillé dans la série de 7 articles évoquée au début de cet article.

Conclusion

Comme toute release réellement importante il y a d’inévitables breaking changes à prendre en compte, mais le jeu en vaut la chandelle, Prism devient meilleur et tout le bénéfice va au développeur ! Il est vrai qu’au fil du temps cette mouture de Prism se complexifie un peu, MvvmLight sera certainement encore longtemps le moyen le plus simple de faire du MVVM pour ceux qui n’ont pas investi le temps nécessaire à la compréhension de Prism. Mais ne perdez pas de vue que sur de très nombreux points essentiels Prism va beaucoup plus loin que MvvmLight ou d’autres toolkit et que se passer d’un apprentissage ponctuel se reportera sur chaque instant perdu à chaque ligne de code du projet… Apprenez à vous servir de Prism, vous en tirerez rapidement avantage !

PS : J’en profite pour vous réitérer mes meilleurs voeux pour 2018 ! Comme disait le regretté Spock (Léonard Nimoy) : Live Long and Prosper !

blog comments powered by Disqus