Dot.Blog

C#, XAML, WinUI, WPF, Android, MAUI, IoT, IA, ChatGPT, Prompt Engineering

MAUI et l’évolution des API des plateformes

En matière de développement mobile plus qu’ailleurs l’accès aux API de la plateforme est essentiel. Comment en est-on arrivé à MAUI ?

Une évolution progressive

Le .NET d'aujourd'hui est open source et c’est une plateforme de développement multiplateforme avec des outils solides et éprouvés. Ce qu’on appelle « Modern .NET » aide les développeurs à créer des applications natives pour divers facteurs de forme mobiles et une pléthore d'appareils. Avec Xamarin, Xamarin.Forms et maintenant .NET MAUI, le code .NET s'étend facilement à iOS et Android avec un accès complet aux API des plateformes natives.

Cependant, les développeurs ont rapidement compris que les API natives sont mieux utilisées à partir de .NET/C#, avec des mappages dépendants de la plateforme sous-jacente exposées via une abstraction. Sans cela, les développeurs .NET auraient appris Java ou Swift/Objective-C pour accéder aux API natives…

Cependant, la façon dont nous accédons aux API mobiles natives via .NET a évolué au fil des ans. Voyons où .NET a commencé avec les API de plate-forme et où les choses se dirigent. Racontons tout cela en faisant un parallèle avec la naissance des USA pour rendre les choses plus vivantes…

Première période : Le Far West

Le Far West était une période de l'histoire américaine qui s’est jouée aux frontières de l'expansion vers l'ouest et des colonies qui se sont créées autour de la ruée vers l'or. Alors qu'il y régnait une certaine anarchie et de nombreux conflits, l'époque est immortalisée par les représentations médiatiques et romantiques de l'image du cow-boy et de l'individualisme sauvage.

Xamarin et Xamarin.Forms ont joué un grand rôle dans la démocratisation du code .NET qui fonctionnait de manière transparente sur les appareils mobiles exécutant iOS/Android. Les développeurs ont appris à écrire une logique métier dans du code C# qui serait partagé entre les plateformes et même à utiliser C#/XAML comme abstraction d'interface utilisateur multiplateforme. Cependant, lorsqu'il s'agissait d'accéder aux API de la plate-forme, les développeurs ne voulait pas écrire du code natif. Après tout, .NET ne pouvait-il pas faire le travail ? La réponse fut les plugins - de petites abstractions qui enveloppaient du code spécifique à la plate-forme et exposaient des fonctionnalités en C# pur.

Il y avait beaucoup d'enthousiasme - la communauté des développeurs a écrit une tonne de plugins Xamarin, tout comme les gens de Microsoft. Tout ce que les développeurs Xamarin avaient à faire était d'importer des packages NuGet - il y avait des plugins pour à peu près toutes les fonctionnalités de l'API de la plate-forme. Cela a finalement conduit à une situation de trop grand choix - il y avait plusieurs plugins pour faire la même chose. Les applications d'entreprise avaient besoin de quelques garanties et de la visibilité, et les développeurs ne savaient pas à quels packages faire confiance. Néanmoins, la communauté .NET se souvient avec émotion des immenses contributions individuelles qui ont fait des plugins Xamarin un écosystème riche. Sans ces efforts individuels, pour la majorité gratuite, la suite ne se serait peut-être pas passé de la même façon. Nous leur devons beaucoup assurément.

Deuxième période : Les États-Unis

Treize colonies de Grande-Bretagne le long de la côte atlantique ont publié la déclaration d'indépendance en juillet 1776, créant ainsi l'union américaine. La naissance d'une nation est rarement facile – mais davantage d'États ont rejoint l'union, souvent à la suite d'un conflit puis une guerre civile totale a éclaté, mais au final l'intégrité des États de l’Union est restée intacte, menant ainsi aux États-Unis d'Amérique.

Pour les développeurs Xamarin, les abstractions C# étaient le meilleur moyen d'accéder aux API/fonctionnalités de la plate-forme - l'écosystème de plug-in Xamarin s'était développé de manière presque incontrôlable. Microsoft avait besoin de combiner toutes ces pépites éparpillées en un seul endroit et d'offrir une solution stable pour accéder aux API mobiles natives. De là l’idée des Xamarin.Essentials - une seule bibliothèque pour tout regrouper. Android, iOS et UWP offraient des API de plate-forme/fonctionnalités du système d'exploitation uniques auxquelles les développeurs avaient désormais accès en C#. installez un package NuGet et c’est tout...

Xamarin.Essentials a représenté un effort substantiel dans la normalisation de l'accès aux API de la plate-forme à partir de .NET et a fourni aux développeurs Xamarin un canevas stable sur lequel s'appuyer pour les fonctionnalités natives. Il est désormais intégré aux projets Xamarin avec des templates par défaut. Avec plus de 40 API multiplateformes, les développeurs .NET sont gâtés. Avec un accès facilité à la plateforme, quelle que soit la nature de l'interface utilisateur de l'application. Xamarin.Essentials, à ce jour, reste la référence en matière de standardisation des fonctionnalités des API multiplateformes, toutes unies dans le confort indéniable de C#.

Troisième période : Fusion de l'Alaska

Lorsque les superpuissances mondiales sont en désaccord sur les luttes impériales, de grandes portions de terres changent parfois de propriétaire. En 1867, les États-Unis d'Amérique ont pris possession de l'Alaska après l'avoir acheté à la Russie, l'ajoutant finalement en tant que 49e État de l'union. Bien que séparé du reste des États continentaux, l'Alaska est stratégique dans sa position et abrite de magnifiques paysages naturels intacts.

Xamarin et Xamarin.Forms ont peut-être été le moyen préféré des développeurs .NET pour écrire des applications multiplateformes, mais il est également indéniable que certains des points faibles de l'écosystème se sont fait sentir - cibler plusieurs plates-formes n'était pas facile, les grands projets d'applications mobiles devenaient compliqués, les personnalisations de la plate-forme étaient délicates à faire et l'outillage pouvait largement être meilleur. C’est là qu’arrive MAUI ! La nouvelle génération d’outils de développement multiplateforme intégrée à .NET.

Alors que .NET MAUI a commencé avec un état d'esprit très axé sur le mobile, l'évolution des Xamarin.Forms a rapidement mené au ciblage des plateformes de bureau, tout en offrant plus de confort aux développeurs. .NET MAUI est un projet véritablement unique ciblant diverses plateformes, il dispose d'outils perfectionnés et permet un meilleur partage de code avec les applications Web. Cependant, les développeurs ont toujours besoin d'accéder aux API de la plate-forme, en particulier sur les plates-formes mobiles comme iOS/Android. Pourquoi jeter tout le travail qui a été consacré à Xamarin.Essentials ?

Dès les premiers jours de .NET MAUI, le mot à la mode était .NET MAUI Essentials - la même pile d'API multiplateformes natives que les développeurs aimant tant mais portée sous MAUI. Ce qui a évolué, c'est le changement de propriétaire : .NET MAUI Essentials fait désormais partie intégrante de .NET, inspirant ainsi toute la confiance et la stabilité dont les développeurs et leurs clients ont besoin. Sous le capot, .NET MAUI Essentials fournit la même API de plate-forme ou des abstractions de fonctionnalités, toutes exposées en C#. Essentials est une pierre angulaire de .NET MAUI, permettant à diverses piles d'interfaces utilisateur multiplateformes écrites en C#/XAML/Blazor d'accéder facilement aux API de plateforme natives.

Quatrième période : L’Archipel Hawaïen

En août 1959, Hawaï est devenu le 50e État des États-Unis d'Amérique. Les îles hawaïennes sont un archipel de huit îles principales, plusieurs atolls et de nombreux îlots plus petits dans l'océan Pacifique Nord. Alors qu'il s'agit d'un État américain stratégique, les îles hawaïennes combinées respirent l'histoire et la culture polynésiennes et sont considérées comme un paradis tropical.

Vous savez ce qui se passe quand quelque chose est ancré dans l'histoire, devenu d'une importance capitale et enraciné dans la culture - cela devient évident. .NET MAUI Essentials est devenu une partie si stratégique de .NET MAUI qu'il n'y est plus explicitement - il est assimilé et simplement intégré. Après avoir été une partie importante des aperçus .NET MAUI, juste avant la première Release Candidate, .NET MAUI Essentials a été repensé et le nom Essentials n'est plus. Ne vous y trompez pas, tous les avantages de .NET MAUI Essentials sont toujours là, juste intégrés pour faire partie de .NET MAUI lui-même.

Dans le passé, l'espace de noms monolithique Microsoft.Maui.Essentials intégrait tous les .NET MAUI Essentials, que les développeurs aient besoin ou non de toutes les API de la plate-forme. Maintenant, l'objectif est de garder les choses granulaires et de faire en sorte que les développeurs apportent des espaces de noms lorsqu'ils utilisent explicitement des API/fonctionnalités spécifiques à une plate-forme. Jetons un coup d'œil à certains des groupes les plus utilisés.

Vous avez besoin d'API spécifiques aux appareils mobiles, telles que la source d'alimentation, l'orientation, l'affichage, la lampe de poche, les vibrations, etc. ? Utilisez Microsoft.Maui.Devices.

Vous avez besoin d'API d'accès aux fonctions multimédia, comme l'appareil photo ou la photothèque ? Utilisez Microsoft.Maui.Media.

Vous avez besoin de puiser dans les API pour la pléthore de capteurs disponibles sur les appareils mobiles ? Utilisez Microsoft.Maui.Sensors.

Les développeurs .NET MAUI doivent le comprendre : .NET MAUI Essentials n'est plus (en tant qu’entité nommée et utilisable à part), mais les mêmes API sont désormais intégrées et regroupées dans des espaces de noms granulaires appartenant à MAUI.

Une question est cependant évidente : les développeurs ne vont-ils avoir pas avoir à se souvenir/rechercher les espaces de noms dont ils ont besoin pour les API de plate-forme correspondantes auxquelles ils souhaitent accéder ? Si, d'une certaine manière, mais cela pourrait être une chose à ne faire qu’une fois par projet .NET MAUI. Importez simplement les espaces de noms avec le mot-clé Global et vous aurez accès à toutes les API partout ailleurs dans votre projet .NET MAUI. Mieux encore, pourquoi ne pas mettre tous les espaces de noms nécessaires dans un fichier GlobalUsings.cs au niveau du projet ?

Mais attendez, l'histoire s'améliore. Au lieu que les développeurs aient à importer des espaces de noms pour chaque projet écrit dans le monde entier, ne serait-il pas agréable que .NET MAUI fasse une partie du travail automatiquement ? Eh bien oui, c’est fait ! Démarrez un nouveau projet .NET MAUI et jetez un œil au fichier de construction intermédiaire nommé XX.GlobalUsings.g.cs - la plupart des espaces de noms de l'API de la plate-forme sont précâblés pour vous ! Et au moment de la construction/publication, il y a un contrôle de l’arborescence pour s'assurer que votre package d'application n'inclut que les éléments dont vous avez besoin pour les API de la plate-forme en cours d'utilisation. N’est-ce pas merveilleux ? !

Lors d'une précédente conversation, Gerald Versluis et David Ortinau avaient déclaré à juste titre que les développeurs .NET MAUI pouvaient simplement utiliser des API mobiles natives multiplateformes prêtes à l'emploi. Pas besoin d'y penser - les API sont juste là avec la plupart des espaces de noms déjà intégrés. Vous pouvez essayer de plier la cuillère ou vous rendre compte qu'il n'y a pas de cuillère . Tout comme les îles hawaïennes et les USA, les API de la plate-forme mobile fonctionnent ensemble comme une partie intégrée à .NET MAUI, un petit coin de paradis pour les développeurs…

Conclusion

Le .NET moderne permet aux développeurs d'écrire facilement des applications mobiles/de bureau multiplateformes. Cependant, pour une expérience au top, les développeurs doivent souvent exploiter des API ou des fonctionnalités spécifiques à la plate-forme. Au cours d'une décennie d'évolution, l'actuel .NET MAUI rend l'accès à l'API de la plate-forme vraiment facile pour les développeurs - tout est intégré. Les abstractions via C# signifient que la personnalisation de l'interface utilisateur ou de l'UX sur chaque plate-forme est possible sans trop de complexité. Cela a pris du temps, mais avec de grandes contributions de la communauté des développeurs et des normalisations de Microsoft les développeurs .NET MAUI sont aujourd’hui dans un endroit heureux pour aller de l'avant sereinement !

Stay Tuned !

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