Xamarin.Forms évolue en .NET Multi-platform App User Interface (MAUI). Cet article nous donne tout d’abord l’opportunité de revenir sur l’histoire de Xamarin et les principaux points forts du framework mobile de Microsoft. Nous vous présentons les changements prévus prochainement et les raisons de cette évolution stratégique pour l’éditeur de Redmond.

Schéma présentant les avantages de .NET MAUI.

De Xamarin à Xamarin.Forms : piqûre de rappel sur l’un des frameworks de développement d’applications mobiles

Xamarin offre la possibilité de développer des applications cross-platform fonctionnelles sur iOS, Android et Windows depuis 2011. Une liste qui s’est progressivement agrandie et qui inclut désormais macOS, Tizen et Linux. Xamarin se base sur le langage C# et permet le partage de code entre les différentes plateformes évoquées ci-avant. Son utilisation des frameworks de chaque plateforme propriétaire offre la possibilité de réaliser des applications cross-platform dont les performances n’ont pas à rougir comparées à celles affichées par les applications natives.

Xamarin a été pensé pour respecter les pré-requis de chaque OS en matière d’interface utilisateur : par exemple storyboard pour iOS et macOS, *.xml pour Android etc. Une excellente pratique qui respecte les usages et améliore l’UX. Xamarin.forms voit néanmoins le jour en 2014 afin de permettre le développement d’une UI commune avec C#/XAML. Ce système permet d’effectuer la liaison entre un composant Forms et son équivalent natif. Sur iOS par exemple, un Button sur Forms utilisera le composant natif UIButton pour s’afficher. Avec Xamarin.Forms, la part du code partagé entre les plateformes augmente considérablement et peut atteindre 99%.

C’est en 2016 que Microsoft acquiert Xamarin qui devient alors gratuit et open-source. Depuis, Xamarin et Xamarin.Forms ont toujours été mis à jour régulièrement pour suivre les avancées des plateformes natives et donner aux développeurs .NET de nouveaux outils.

.NET MAUI va permettre d’améliorer la productivité et la polyvalence des équipes de développement

Présenté lors de la Microsoft Build 2020, .NET MAUI est une ultime évolution de Xamarin.Forms. Microsoft achève ainsi de réunir l’ensemble de ses produits au sein d’un même cadriciel d’abord initié par le .NET Core puis confirmé plus récemment lors de la sortie de .NET 5. L’objectif de la firme de Redmond est d’offrir un kit de composants logiciels structurels exhaustif qui doit permettre d’une part d’accroître significativement la productivité des équipes de développement et d’autre part d’augmenter leur polyvalence (logiciels métiers, sites Internet, intranet, extranet, applications mobiles, API…). Xamarin.Forms entrera donc lors de la release .NET 6 dans le rang aux côtés d’ASP.NET Core, Entity Framework Core, WPF etc.

Schéma présentant l'ensemble des briques qui constituent la plateforme .NET
Microsoft a pour objectif de fournir un seul environnement .NET et des outils qui peuvent être utilisés de manière identique et fournir un résultat similaire sur les différentes plateformes.

MAUI : de nombreuses améliorations de Xamarin déjà annoncées pour 2021

.NET MAUI et NET 6 apporteront de nombreux ajouts au framework, la liste finale des évolutions est toujours en cours d’établissement mais voici les changements qui ont d’ores et déjà été confirmés.

Xamarin devient .NET for iOS et .NET for Android 

Au revoir les logos Xamarin et les singes mascottes qui prendront leur retraite sur l’île Maui. Les outils Xamarin sont renommées : .NET for iOS pour Xamarin.iOS, .NET for Android pour Xamarin.Android et .NET MAUI pour Xamarin.Forms. Les namespaces changeront également pour mieux s’intégrer dans .NET : par exemple, System.Maui pour Xamarin.Forms ou System.Devices pour Xamarin.Essentials.

Nouvelle mascotte dotnet-bot surfant sur une vague.
La mascotte dotnet-bot présentée en version MAUI à la Microsoft Build 2020

Le développement d’applications mobiles encore simplifié : un seul projet à créer au lieu de trois !

Aujourd’hui, sur un projet en Xamarin.Forms il faut à minima créer un projet Forms puis un projet par plateforme (le plus souvent un projet Android et un projet iOS). Avec MAUI, il n’y aura plus qu’un seul projet où il sera toujours possible de gérer les spécificités entre les plateformes.

Slim Renderers

Les moteurs de traductions des composants XAML en composants natifs seront améliorés pour être encore plus performants dans cette nouvelle version.

Visual Studio Code

Il sera possible d’utiliser VS Code en plus de l’historique Visual Studio pour travailler sur une solution .NET MAUI.

Support du pattern MVU

En plus du traditionnel Model-View-View-Model (MVVM), les développeurs pourront désormais implémenter le pattern Model-View-Update (MVU) aussi connu sous le nom d’architecture Elm. Ce modèle est éprouvé depuis des années dans le monde du développement Web et aussi utilisé sur Flutter.

Transition Xamarin.Forms vers MAUI

MAUI est une évolution de Xamarin.Forms et, bien qu’apportant son lot de nouveautés, une grande partie de ce qui fait Xamarin.Forms aujourd’hui sera conservé. Des outils de migrations seront proposés pour réussir la transition des applications existantes.

Roadmap 2020-2021

Une première preview est prévue pour cette fin d’année 2020 et une version stable en novembre 2021 à l’occasion de la sortie de NET 6.

Microsoft entend placer le C#/XAML comme la référence pour la réalisation de logiciels professionnels

Nous sommes très enthousiastes à l’idée de pouvoir travailler avec MAUI. En intégrant son framework de développement mobile à .NET, Microsoft entend pérenniser ses outils et place le C#/XAML comme la référence pour la réalisation de logiciels professionnels. Son intégration dans .NET rend encore plus facile le partage de code entre les différents types de projets (site web, api, application mobile, application desktop…). Ce tournant et ses bonnes performances, notamment grâce à son utilisation des éléments natifs de chaque plateforme, font de Xamarin, et bientôt MAUI, un excellent choix de framework pour le développement d’une application professionnelle cross-platform.