Retour d’expérience .NET MAUI

Cela fait en gros un an que je développe des applications en utilisant .NET MAUI, et j’ai eu envie de partager avec vous mon expérience.

Un peu d’histoire (rapidos)

Depuis de nombreuses années je développe des applications mobiles natives. Cela signifie que je dois connaître les plateformes (qui sont très différentes les unes des autres), les langages associés (chaque créateur de plateforme possède son langage et par défaut c’est ce langage là qu’il faut utiliser).

Aujourd’hui il y a 2 grandes plateformes mobiles qui sont iOS et Android, mais Il y a quelques temps il y avait une plateforme supplémentaire qui était fournie par Microsoft et qui s’appelait Windows Phone. Je vous parle de cette plateforme, aujourd’hui disparue, car elle va jouer un rôle important pour la suite.

Donc en résumé, le développement mobile multi-plateformes se résumait à ça pour moi :

PlateformesOutils de développementLangages
iOSXcodeObjectif C ou Swift
AndroidAndroid StudioJava ou Kotlin
Windows PhoneVisual StudioC#

En ce qui me concerne, j’avais aussi une activité dans le développement de clients lourds pour Windows en utilisant la technologie .NET (WinForm et WPF) en C#.

Comme vous le savez très certainement, les applications WPF sont développées en utilisant un moteur de rendu basé sur une définition des écrans via le langage XAML qui permet de définir énormément de choses plus ou moins complexes d’une manière simple et claire. Lorsque la plateforme Windows Phone est sortie, quelle fut ma joie de découvrir qu’elle utilisait un sous ensemble de WPF (Silverlight) et que les écrans étaient créés en XAML. Juste trop bien !

A comparer avec les outils de création UI fournis par iOS ou par Android, la création d’écrans avec XAML c’était juste que du bonheur. J’ai eu l’occasion (et la joie) de développer plusieurs applications Windows Phone et à chaque fois la définition des écrans était d’une simplicité déconcertante.

Windows Phone faisait tourner une version adaptée de .NET et tout le code était réalisé en C# avec l’outil Visual Studio. Coté productivité c’était vraiment top ! Généralement j’arrivais à coder une même application Windows Phone / iOS / Android beaucoup plus vite pour Windows Phone que pour les autres. Encore une fois, que du bonheur !

Et puis la plateforme Windows Phone a fini par disparaitre, victime, selon moi, d’une politique bien foireuse de la part de Microsoft (mais ça c’est une autre histoire).

Et .NET MAUI fut

Je passerai sous silence l’époque XAMARIN (qui est l’ancêtre de MAUI), car je ne l’ai jamais utilisé pour le travail. A l’époque de mes tests (en 2017) c’est XAMARIN Forms qui m’intéressait le plus mais il faut bien dire que la techno n’était pas très sèche. Il y a avait beaucoup de limitations et de bugs coté applications générées et outils de développement utilisés qui m’ont très vite dégoutés. Je sais que la techno a ensuite bien évolué (MAUI en est la preuve) mais je n’avais jamais retenté l’opérations (on ne peut pas être partout à la fois).

Avec le temps, j’en ai eu assez de développer plusieurs fois la même application pour des plateformes différentes. En fait c’est super fun de développer pour la 1ère plateforme, puis ensuite c’est du portage et à force c’est plus gonflant qu’autre chose. De plus pour maintenir les applications une fois en production, ou les faire évoluer, c’est galère de faire plusieurs fois la même chose (développement cool + portages chiants).

Quand j’ai entendu parler de .NET MAUI, j’ai eu envie d’aller voir où en était la techno. Les planètes étaient alignées, j’en avais marre de gérer en permanence du code écrit dans des langages différents pour des plateformes différentes donc j’ai levé un sourcil et j’ai creusé la question.

Dès mes premiers essais j’ai retrouvé le confort de développement que j’aimais tant à l’époque de Windows Phone. Le C#, le XAML, Visual Studio, le bonheur retrouvé ! En quelques minutes j’ai créé des écrans assez complexes que j’aurai mis un temps fou à réaliser avec les outils iOS ou Android. La puissance du C# permet de créer du code de grande qualité (même si j’aime beaucoup Swift d’Apple). Le tout produit des applications rapides, fluides et magnifiques directement pour iOS, Android et Windows sans que cela nécessite la prise en compte des plateformes dans le code (ou rarement).

Le confort de développement et le résultat obtenu m’ont bluffé. Et je vous parle d’une époque où MAUI était sous .NET 6, et avait encore pas mal de bugs sous le capot. Aujourd’hui on est en .NET 8 et les choses se sont énormément améliorées. Les outils de développement fonctionnent très bien et les applications générés sont robustes. Je travaille quotidiennement avec .NET MAUI depuis plus d’un an et je me régale.

Bien sûr tout n’est pas magique, il faut parfois adapter le code C# ou le XAML suivant la plateforme ciblée et généralement ça se passe très bien (et c’est simple à faire), mais ça reste quelque chose de rare il faut bien le dire.

Dans mon dernier développement MAUI, l’application communique en Bluetooth Low Energy avec des appareils industriels. J’ai donc développé une bibliothèque de communication BLE pour MAUI. Cette bibliothèque prend en charge iOS, Android et Windows. MAUI permet de développer du code plateforme en C# au sein même du projet, ce qui est une souplesse dingue ! Je n’ai eu aucun mal à créer ce code pour ces 3 plateformes avec le même outil. J’avais l’avantage d’avoir plusieurs fois dans le passé développé des applications utilisant le Bluetooth Low Energy pour ces 3 plateformes, mais là je l’ai fait avec le même outil, Visual Studio, et le même langage, C#. Le résultat est juste parfait, la communication sur les 3 plateformes est parfaitement fonctionnelle.

Conclusion

Pour le développement multi-plateformes, .NET MAUI est un outil d’une puissance formidable. Grâce à lui je développe des applications pour 3 plateformes (iOS, Android et Windows) avec Visual Studio qui est un outil de développement très puissant dans un langage moderne, C#, porté par les technologies .NET et XAML, qui permettent de générer des applications robustes, belles et fluides avec efficacité.

Vous l’avez compris, j’ai adopté .NET MAUI à 200% car c’est un outil que je trouve fantastique ! Et je vous jure que je ne suis pas payé par Microsoft pour écrire ça.

Quelques liens utiles

Qu’est ce que .NET MAUI ?

Créer votre 1ère application .NET MAUI

Platform-Specific Code in .NET MAUI Using Dependency Injection (YouTube)

Le blog d’Olivier Dahan (Maitre Jedi .NET MAUI)

Un peu de lecture (avec du vrai papier) ?

Laisser un commentaire

En savoir plus sur CODING 4 PHONE

Abonnez-vous pour poursuivre la lecture et avoir accès à l’ensemble des archives.

Poursuivre la lecture

En savoir plus sur CODING 4 PHONE

Abonnez-vous pour poursuivre la lecture et avoir accès à l’ensemble des archives.

Poursuivre la lecture