Comprendre .NET MAUI et l'avenir de Xamarin

En 2000, la Conférence des développeurs professionnels de Microsoft avait pour objectif de préparer le terrain pour .NET, en présentant de nombreuses technologies que nous avons utilisées au cours des deux dernières décennies. Vingt ans plus tard, il est juste de dire que Microsoft a appuyé sur un bouton de réinitialisation sur l'étalement de .NET et de ses nombreux frameworks de développement. Lors de Build 2020, l'entreprise a défini sa feuille de route pour les vingt prochaines années, en s'appuyant sur l'annonce de son projet Réunion.

L'avenir est un .NET

Il est possible de regarder en arrière six ans environ pour voir les racines d'aujourd'hui dans le sourcing ouvert de .NET et la création de la Fondation .NET. La plate-forme avait besoin d'un organisme indépendant pour la guider tout au long de la transition de l'ancien .NET Framework vers un nouveau .NET Core modulaire sans héritage. Cette transition devait inclure plus que Windows; il devait apporter les clients mobiles de Xamarin et les plates-formes de jeu 3-D d'Unity, et viser à étendre la portée de .NET à macOS et à Linux.

Cela nous amène à 2020 et au prochain passage du .NET Framework 4 vieillissant à un nouveau .NET 5, la prochaine grande version de .NET Core avec la plupart des API et des espaces de noms .NET Framework familiers. Cette transformation verra le début de grands changements pour les outils de développement Xamarin mobiles et multiplateformes de Microsoft, alors que Microsoft déplace les efforts d'ingénierie de Xamarin's Mono vers .NET 5.

Rassembler Mono et .NET dans .NET 6

Une chose est claire: Microsoft ne gaspille pas ses investissements et vos investissements dans Xamarin. Mono n'ira encore nulle part. De nombreux grands projets dépendent de Mono, et nous verrons Xamarin continuer à faire évoluer Mono pour prendre en charge les nouvelles versions d'Android et d'iOS. Mais si vous voulez de nouvelles fonctionnalités et de nouvelles API et un modèle de développement multiplateforme plus large, votre future stratégie de développement sera basée sur .NET 5 et le calendrier de publication annuel en cours .NET. Un .NET complet et unifié est encore loin d'être achevé, et bien que .NET 5 soit un pas en avant significatif, nous ne verrons l'unification qu'à la fin de 2021 et la sortie prévue de la prochaine version de support à long terme, .NET 6.

L'intention n'est pas de remplacer complètement Mono, mais d'avoir un ensemble commun de bibliothèques de classes et une seule chaîne d'outils pour .NET Core et pour Mono, en s'appuyant sur le travail déjà en cours dans les fonctionnalités au niveau de la plate-forme telles que .NET Standard bibliothèques. Cela laisse une question intrigante: à quoi ressemble une interface utilisateur multiplateforme dans le futur convergé? Bien qu'il existe une option multiplateforme dans le port de WinUI 3 de la plate-forme Uno, avec la prise en charge des appareils mobiles aux côtés de WebAssembly et de macOS, les contrôles fournis par Microsoft dans WinUI sont des contrôles de bureau Windows, et ils fonctionnent mieux dans les applications de bureau et de tablette.

Évolution d'un cadre d'interface utilisateur multiplateforme pour .NET

Xamarin offre une alternative à WinUI pour le développement multiplateforme. Sa stratégie multiplateforme est basée sur un mélange de prise en charge XAML pour les contrôles natifs pour iOS et Android, ainsi que sur ses propres formulaires Xamarin multiplateformes. Xamarin Forms est une plate-forme de développement MVVM (model-view-viewmodel) à part entière, avec sa propre apparence de contrôle basée sur le langage Material Design d'Android. Xamarin Forms donne aux applications iOS et Android une apparence cohérente tout en leur donnant accès aux fonctionnalités et services natifs.

Avec .NET 6 destiné à unifier les différentes plates-formes .NET, Xamarin Forms est la base logique d'un nouvel ensemble d'outils d'interface utilisateur mobile et d'un nouveau cadre d'interface utilisateur multiplateforme pour .NET. Microsoft a dévoilé cette nouvelle approche à la Build 2020, en l'appelant l'interface utilisateur de l'application multiplateforme .NET (MAUI).

.NET MAUI est la prochaine génération de Xamarin Forms, conçue pour permettre aux développeurs de créer une application une fois dans un seul projet Visual Studio avec une seule base de code, ciblant tout appareil pris en charge. L'objectif est de fournir une structure de projet simplifiée. Plutôt qu'une solution unique avec des projets séparés pour chaque plateforme que vous ciblez, avec MAUI, un seul projet contiendra les ressources nécessaires pour cibler des plateformes spécifiques. Si vous avez besoin d'API natives pour accéder aux services spécifiques à un appareil, celles-ci peuvent être regroupées dans une vue de plates-formes et utilisées au moment de la compilation lors du ciblage des builds pour chaque plate-forme. Parallèlement au code de la plate-forme, vous pouvez regrouper les ressources qui seront utilisées par votre XAML, y compris les images et les polices, ce qui vous donne un seul endroit pour gérer tous les éléments de votre application.

Le nouveau modèle de projet fourni avec .NET 6 est la clé de cette approche, car il applique un regroupement plus logique aux modules utilisés dans les applications multiplateformes et à la façon dont le code est généré et déployé. Cependant, malgré les changements structurels apportés aux projets, le code que vous écrivez demain devrait être très similaire à celui d'aujourd'hui, mais plus facile à déployer sur plusieurs plates-formes et à se tenir au courant des modifications apportées aux API de plate-forme et aux ressources de conception d'applications.

La route vers .NET MAUI

Nous sommes encore dans des mois avant de voir du code .NET MAUI utilisable, car il dépend des fonctionnalités du SDK .NET 6, bien qu'un référentiel GitHub soit déjà ouvert avec certaines des implémentations initiales. Lorsqu'un aperçu sera livré vers la fin de 2020, ce que nous obtiendrons devrait être assez similaire aux formulaires Xamarin existants, qui continueront d'être développés en parallèle avec .NET MAUI. Les changements clés concerneront la façon dont vous structurez les projets, avec un nouvel espace de noms passant du propre espace de noms de Xamarin au système de .NET.

La feuille de route publiée pour .NET MAUI suggère qu'au départ, nous obtiendrons une version préliminaire basée sur un changement de nom de la version actuelle de Xamarin Forms, avec quelques simplifications et de nouvelles fonctionnalités provenant des nouvelles fonctionnalités de .NET 6. D'autres changements interviendront en 2021 au fur et à mesure que .NET MAUI et .NET 6 évolueront, avec les contrôles macOS et Windows rejoignant Android et iOS d'ici l'été 2021. Vous devriez être en mesure de fournir des applications unifiées d'ici la version prévue de novembre 2021, avec une version candidate prévue pour Septembre 2021.

Microsoft prévoit d'autres modifications de Xamarin dans la période .NET 6, le déplacement d'autres bibliothèques Xamarin vers System et le changement de nom de Xamarin.iOS et Xamarin.Android en .NET pour iOS et .NET pour Android. C'est une décision logique, bien qu'un peu triste pour ceux d'entre nous qui ont suivi le développement de Xamarin depuis les débuts de Mono.

Peut-être une façon plus positive de penser à cela est que, avec le passage à un .NET Core multiplateforme comme fondement de tout ce qui concerne .NET, ce n'est pas tant Microsoft absorbant Xamarin que Xamarin devenant le cœur de l'avenir open source de .NET . C'est un bon héritage pour le projet Mono.