Développement d'applications .NET à l'épreuve du temps avec la plateforme Uno

Si vous passez du temps à écouter et à parler aux développeurs Windows, vous saurez qu'il y a beaucoup de confusion et de frustration quant à l'orientation de la plate-forme, en particulier autour de .NET et UWP (Universal Windows Platform). Microsoft tente de tracer une ligne sous les différences entre UWP et les anciens SDK Windows, tout en essayant de ramener tout le monde dans un avenir .NET 5 avec l'annonce Build 2020 de Project Reunion, mais il faudra encore du temps pour fournir une plate-forme unifiée.

Cela tient en grande partie à la manière dont les mises à jour de la plate-forme Windows ont été livrées dans le passé: associées aux versions du système d'exploitation. Project Reunion s'appuie sur le travail avec les composants de l'interface utilisateur WinUI, les dissociant des systèmes d'exploitation sous-jacents et permettant à la plate-forme de développement d'évoluer beaucoup plus rapidement qu'auparavant.

En s'appuyant sur une approche open source de la plate-forme, vous avez plus de possibilités d'apporter le modèle de développement .NET (et votre code) à autant de plates-formes que possible. Un exemple de la façon dont cela fonctionnera est l'implémentation WinUI de la plate-forme Uno, qui a récemment lancé sa troisième version majeure.

Présentation de la plate-forme Uno 3.0

Si vous n'avez jamais examiné la plate-forme Uno auparavant, il est peut-être plus facile de la considérer comme une alternative à Xamarin qui vous permet de créer du code .NET qui s'exécute sur iOS, Android, macOS et le Web. J'ai déjà écrit sur Uno afin de fournir des interfaces utilisateur familières sur le Web en utilisant WinUI avec WebAssembly et le cadre de développement Blazor de Microsoft.

Uno Platform 3.0 est en cours de développement pour prendre en charge WinUI 3.0 aux côtés de WinUI 2.0. De cette façon, vous pouvez mélanger et faire correspondre les contrôles nouveaux et actuels, une approche qui devrait bien fonctionner parallèlement au déploiement par étapes de WinUI 3.0 et des API Project Reunion au niveau du système.

Il y a beaucoup à aimer dans Uno, surtout qu'il n'y a pas ou peu de courbe d'apprentissage. Le code peut être construit dans votre IDE préféré et utiliser des outils et des frameworks existants, fournissant une couche d'interface utilisateur commune pour toutes vos versions de code. Vous n'avez besoin d'écrire votre C # et XAML qu'une seule fois, le code WinUI s'exécutant directement sur Windows, et via Uno sur d'autres plates-formes, en s'appuyant sur les outils natifs de Xamarin pour iOS, macOS et Android, et en utilisant l'implémentation Mono-WASM sur le La toile.

Utiliser Uno pour amener des applications .NET sur macOS

Sous le capot, l'implémentation macOS d'Uno s'appuie sur les similitudes entre l'AppKit de macOS et l'UIKit d'iOS. Cela permet à l'équipe de développement de publier ses implémentations de contrôle iOS existantes. Bien que cela fonctionne, certains contrôles ont toujours des problèmes, il vaut donc la peine d'essayer avant de déployer du code auprès de vos utilisateurs. Même ainsi, c'est un moyen efficace de transférer des applications .NET existantes de Windows vers macOS. En s'appuyant sur les bibliothèques macOS de base, Uno devrait, espérons-le, permettre à votre code de s'exécuter sur le silicium Apple basé sur ARM récemment annoncé.

La prise en charge de Mac dans Uno est relativement nouvelle, lancée en mai 2020, avec une réimplémentation de l'application Windows Calculator sur macOS et publiée via le magasin macOS d'Apple. La création d'une version macOS de votre code existant nécessite l'utilisation d'un ensemble de nouveaux modèles Uno et de l'outil de ligne de commande Windows .NET. Une fois que vous avez installé les nouveaux modèles pour Uno 2.3 ou 3.0, vous pouvez créer un échafaudage d'application pour une application macOS avec le même nom que le projet que vous souhaitez cibler.

Vous pouvez ensuite déplacer ce projet dans le même dossier que le reste de vos fichiers d'application et ajouter le nouveau projet à une solution Visual Studio existante. Compilez votre code pour macOS à l'aide de Visual Studio pour Mac et configurez ses paramètres de simulateur iPhone pour cibler votre périphérique de développement macOS.

Comme vous ne pouvez pas utiliser Visual Studio pour Mac pour travailler sur les applications Windows WinUI, il est judicieux d'utiliser Git ou une plate-forme de contrôle de code source similaire pour votre solution complète afin de pouvoir gérer les modifications de code pour macOS et pour Windows. Si vous travaillez sur une version WebAssembly de votre application, utilisez Visual Studio Code pour la générer avec les extensions de débogage C # et JavaScript. La prise en charge de MacOS est disponible dans Uno 2.4 et 3.0, la dernière version démontrant une application de lecteur vidéo multiplateforme basée sur WinUI disponible dans tous les principaux magasins d'applications.

Utilisation de WinUI 3.0 dans Uno

Si vous prévoyez de travailler avec WinUI 3.0, vous devez utiliser la dernière version 3.0 d'Uno. Encore une fois, utilisez les modèles .NET de la plate-forme Uno pour configurer la structure de votre code. Si vous déplacez du code existant vers WinUI 3.0, vous devez modifier l'espace de noms que vous utilisez, à la fois pour les contrôles Microsoft et pour votre code Uno, ce qui est assez simple à faire à l'aide des outils de refactorisation intégrés à Visual Studio.

Un aspect intéressant de la plate-forme Uno est la prise en charge des appareils à double écran. En prenant le code existant dans Uno et en ajoutant ses commandes à double écran, vous devriez être en mesure de porter des applications de Windows vers le prochain Surface Duo basé sur Android avec des modifications minimes. Avec Microsoft donnant la priorité aux applications mobiles à double écran et collaborant avec Google pour améliorer la prise en charge des prochaines versions d'Android, des outils comme Uno seront un moyen important de tirer parti des expériences existantes sur grand écran et tablette de Windows et de les intégrer au matériel Android pliable et double écran .

Plateforme Uno et l'avenir du développement d'applications .NET

Il est clair que Microsoft vise à éliminer la confusion sur la façon de créer des applications dans l'écosystème .NET, en utilisant WinUI et Project Reunion pour fournir une clarté indispensable sur l'avenir. Mais aussi rapidement que Microsoft promet qu'ils seront livrés, ils seront probablement trop lents pour de nombreux développeurs. La plate-forme Uno et le MAUI de Xamarin sont des moyens d'accéder plus rapidement à ces technologies, en plus de votre code .NET existant.

En ajoutant la prise en charge de macOS et de l'interface utilisateur Web à .NET, la plate-forme Uno semble être un meilleur choix pour cibler autant d'utilisateurs que possible avec le moins de changement de code; c'est une route vers le futur .NET qui devrait faire gagner beaucoup de temps au développement et réduire au minimum la charge de support.

L'utilisation d'Uno devrait également pérenniser votre code .NET existant d'autres manières. Les applications WebAssembly intégrées au navigateur et WASI (WebAssembly System Interface) autonomes devraient simplifier le processus de transfert de votre code vers une nouvelle génération de matériel de pointe, en particulier les appareils à petit facteur de forme et à petit écran basés sur ARM et d'autres processeurs à faible consommation d'énergie.