Dot.Blog

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

Présentation de MAUI, Multi-plateform App UI

Ce n’est pas un mystère MAUI va remplacer les Xamarin.Forms d’ici le mois de novembre à venir (2021). Il est grand temps de présenter cette plateforme !

Introduction

Vous pouvez tout construire avec .NET. C'est l'une des principales raisons pour lesquelles des millions de développeurs choisissent .NET comme plateforme pour leur carrière, et les entreprises investissent pour leurs activités. Avec .NET 5, le voyage vers l'unification de la plate-forme .NET a commencé, en réunissant .NET Core et Mono/Xamarin dans une seule bibliothèque de classes de base (BCL) et une seule chaîne d'outils (SDK).
Lorsque qu’on regarde ce à quoi ressemblera la création d'applications pour appareils mobiles ou non avec un .NET réellement unifié, on constate que de nombreuses plateformes sont ciblées, d'Android et iOS à Windows et macOS. Pour répondre à ce besoin, une étape de plus était nécessaire et en novembre prochain viendra .NET 6 et un nouveau cadre d'interface utilisateur de première classe pour faire exactement cela : .NET Multi-platform App UI, appelé .NET MAUI.

Qu’est-ce que MAUI ?

L’illustration qui suit donne un aperçu de ce qu’est MAUI :

image

NET MAUI est une évolution de la boîte à outils Xamarin.Forms, de plus en plus populaire, qui a fêté ses sept ans en mai dernier ! Depuis des années, des entreprises telles que UPS, Ernst & Young et Delta tirent parti de l'expertise mobile de Xamarin sous .NET pour développer leurs activités, certaines depuis le tout début. La solution a également permis aux petites entreprises de maximiser leur investissement en matière de développement en partageant jusqu'à 95 % de leur code et en devançant leurs concurrents sur le marché. .NET MAUI étend ce succès sur le segment mobile pour englober le bureau, ce qui en fait le meilleur moyen de créer des applications multiplateformes sur les deux mondes, en particulier sur les nouveaux appareils Microsoft tels que le Surface Duo (même si cette machine ouvre plus le champ à un concept qu’autre chose, la réalisation des premiers modèles laissant apparaître quelques faiblesses qui disparaîtront avec le temps ou chez d’autres constructeurs). Pour le développeur l’heure de la libération a sonné… Enfin un seul environnement avec un seul code pour développer sur tout, pas seulement les mobiles mais aussi les PC et les Mac ! Le rêve initié par WPF/Everywhere connu sous le nom de Silverlight est enfin une réalité… Cette fois-ci ce n’est pas un plugin web discutable qui va gérer l’ubiquité mais directement les outils de développement pour fabriquer du code natif pour chaque cible. Imparable, indiscutable, efficace.

.NET MAUI simplifie les choix des développeurs .NET, en fournissant une pile unique qui prend en charge toutes les étapes sous Android, iOS, macOS et Windows. Les fonctionnalités natives de chaque plateforme et le contrôle de l'interface utilisateur sont simplifiés dans une API unifiée et multiplateforme pour permettre de proposer des expériences utilisateur sans compromis tout en partageant encore plus de code qu'auparavant.

Le concept “Single Project”

.NET MAUI a été conçu en tenant compte de la productivité des développeurs, y compris la gestion des projets et les outils multiplateformes dont ils ont besoin. .NET MAUI simplifie la structure du projet en un seul projet pour cibler plusieurs plateformes. Cela signifie que vous pouvez facilement déployer sur n'importe quelle cible, y compris votre bureau, des émulateurs, des simulateurs ou des dispositifs physiques, d'un simple clic. Grâce aux ressources multiplateformes intégrées, vous pourrez ajouter des images, des polices ou des fichiers de traduction dans le projet unique, et .NET MAUI configurera automatiquement les projets natifs pour que vous puissiez vous contenter de coder sans vous empêtrer dans ce genre de détails. Enfin, vous aurez toujours accès aux API natives du système d'exploitation sous-jacent et cela sera plus facile que jamais avec les nouvelles intégrations spécifiques aux plateformes. Sous les dossiers dédiés aux plates-formes, vous pouvez ajouter des fichiers de code source pour un système d'exploitation spécifique et accéder aux API natives. Avec .NET MAUI, tout se trouve au même endroit, là où vous en avez besoin pour rester productif.

image

C'est ce qui se passe dans MAUI :

  • Un seul projet ciblant plusieurs plateformes et appareils
  • Un emplacement unique pour gérer les ressources telles que les polices et les images.
  • Ciblage multiple pour organiser votre code spécifique à la plate-forme.

Vous n’avez qu’à maîtrisez une seule façon de créer des applications cliente, la méthode .NET MAUI, et toutes les plateformes sont à votre portée.

Les patterns de développement modernes

Une partie de la vision d'un .NET unifié consiste à offrir aux développeurs de nombreux degrés de libertés afin qu’ils soient le plus productif possible en utilisant .NET. Cela se manifeste dans l'IDE, que ce soit Visual Studio 2019 ou 2021 à venir, Visual Studio pour Mac ou même Visual Studio Code. .NET MAUI sera disponible dans tous ces environnements et prendra en charge les modèles MVVM et XAML existants (à la Xamarin.Forms) ainsi que les fonctionnalités futures telles que Model-View-Update (MVU) avec C#, ou même Blazor. Cette unification n’est pas un entonnoir bien au contraire, c’est une façon de “regrouper ses forces” pour en faire plus et aller plus loin.

MVVM vs MVU, les deux patterns qui occuperont le terrain, est un sujet à part que j’ai préféré développer à part dans l’article du 10 septembre dernier et auquel je renvoie le lecteur intéressé.

La transition Xamarin.Forms vers MAUI

Les développeurs Xamarin.Forms vont pouvoir lancer leurs nouveaux projets dans .NET MAUI, en utilisant les mêmes contrôles et API qu'ils ont appris à connaître et à aimer. À l'approche du lancement de .NET MAUI, afin d'aider les développeurs à effectuer une transition en douceur des applications existantes vers .NET MAUI, Microsoft a indiqué son intention de fournir un support pour les essais de conversion et des guides de migration similaires à ceux dont on dispose aujourd'hui pour la migration vers .NET Core. Dès que j’aurai plus d’information sur ces kits et docs je ne manquerai pas de vous en tenir averti !

Dans tous les cas il ne faut pas trop d’affoler. La transition ne sera pas si difficile que ça mais comme dans tout changement de plateforme les difficultés se feront sentir en proportion de la taille des projets à migrer… Si MAUI XAML reprend l’essentiel des Xamarin.Forms il y aura des changements de namespaces, des petites choses à réorganiser etc. Sur un projet de démo cela semble ridiculement facile. Sur un projet plus réaliste cela peut devenir une charge non négligeable. C’est pourquoi en l’attente de plus de documentation et surtout de la version finale de MAUI je réserve mes prédictions.

Conclusion

MAUI arrive, la migration des projets Xamarin.Forms vers cette nouvelle plateforme ne fait aucun doute, Xamarin.Forms entrera en mode maintenance pour quelques années (avant de disparaître) dès la sortie de MAUI qui seul portera les évolutions à venir. Si on veut faire vivre une application dans le temps il sera indispensable de la migrer. Mais on peut prendre son temps, pas besoin que cela soit fait dès novembre ou décembre prochain ! Au contraire… Prendre un peu de recul sera nécessaire.

Nous allons tous prendre le temps d’attendre la Version 1.0, de l’étudier, de faire des tests de migration, de regarder si Microsoft fournit comme promis les kits et les docs de migration, dans l’affirmative il faudra les lire, les tester, etc.

Il y aura donc beaucoup de chose à dire et à montrer sur Dot.Blog et certainement sur Dot.Vlog aussi ! Vous pourrez aussi partager votre expérience, vos succès, vos difficultés, nous discuterons de tout cela pour que Dot.Blog soit une référence MAUI comme il l’est pour les Xamarin.Forms, comme il l’a été pour Silverlight, ou C#, depuis le 1er post le 23 septembre 2007, soit 14 années !

Alors d’ici là…

Stay Tuned !

Faites des heureux, partagez l'article !
blog comments powered by Disqus