Décrire l’architecture de .NET MAUI

Effectué

Le modèle couramment utilisé pour le développement d’applications multiplateformes consiste à factoriser la logique métier à partir de l’interface utilisateur, puis à développer des interfaces utilisateur et une logique d’IU distinctes pour chaque plateforme. Bien que la logique métier reste inchangée pour chaque type d’appareil, le code qui pilote l’application et présente les données peut varier. Cette variation est due aux différences de capacité, d’API et de fonctionnalité fournies par les appareils. Pour générer une application multiplateforme de cette manière, vous devez gérer non seulement des kits de développement logiciel (SDK) distincts, mais aussi différents langages et ensembles d’outils.

L’objectif de .NET MAUI (interface utilisateur d’application multiplateforme) est de simplifier le développement d’applications multiplateformes. Avec .NET MAUI, vous créez des applications multiplateformes en utilisant un seul projet, mais vous pouvez ajouter du code source et des ressources spécifiques à la plateforme au besoin. L’objectif clé de .NET MAUI est de vous permettre d’implémenter autant de logique d’application et de disposition d’IU que possible dans un unique codebase.

Dans cette unité, vous découvrez l’architecture .NET MAUI et les outils nécessaires pour générer des applications .NET MAUI.

Qu’est-ce que la pile technologique .NET MAUI ?

.NET fournit une série de frameworks propres à la plateforme pour la création d’applications : .NET pour Android, .NET pour iOS (et iPadOS), .NET pour Mac et WinUI 3 (en utilisant le SDK d’application Windows). Ces frameworks ont tous accès à la même bibliothèque de classes de base (BCL) .NET 6. Cette bibliothèque fournit les fonctionnalités nécessaires à la création et à la gestion des ressources ainsi qu’à l’abstraction générale des détails de l’appareil sous-jacent par rapport à votre code. La BCL dépend du runtime .NET pour fournir l’environnement d’exécution de votre code. Mono, une implémentation open source du runtime .NET, implémente les environnements Android, iOS (et iPadOS) et macOS. Sur Windows, Win32 joue le même rôle, mais il est optimisé pour la plateforme Windows.

Alors que la BCL permet aux applications, s’exécutant sur différents types d’appareils, de partager une logique métier commune, les différentes plateformes ont différentes façons de définir l’interface utilisateur d’une application. Les plateformes fournissent différents modèles pour spécifier la façon dont les éléments d’une interface utilisateur communiquent et interagissent. Vous pouvez créer séparément l’interface utilisateur correspondant à chaque plateforme en utilisant le framework propre à la plateforme (.NET pour Android, .NET pour iOS, .NET pour Mac ou WinUI 3). Toutefois, cette approche vous oblige à gérer une codebase pour chaque famille d’appareils. .NET MAUI fournit un seul framework pour la génération des IU des applications mobiles et de bureau. Vous créez l’IU à l’aide de cette infrastructure (indiqué par la flèche 1 dans le diagramme suivant) et .NET MAUI se charge de la convertir vers la plateforme appropriée (flèche 2).

Il peut arriver que vous soyez obligé d’implémenter une fonctionnalité spécifique à la plateforme. Si tel est le cas, vous pouvez appeler des méthodes dans l’infrastructure spécifique à la plateforme, comme indiqué par la flèche 3 dans le diagramme suivant.

Schéma de la pile technologique de .NET MAUI et de la façon d’implémenter une fonctionnalité spécifique à la plateforme.

Comment fonctionne .NET MAUI ?

.NET MAUI extrait l’implémentation d’un élément de l’IU de sa description logique. Vous pouvez décrire l’interface utilisateur en utilisant XAML (Extensible Application Markup Language), un langage indépendant de la plateforme basé sur XML. Par exemple, le fragment XAML suivant montre la description d’un contrôle de bouton :

<Button Text="Click me"
        SemanticProperties.Hint="Counts the number of times you click"
        Clicked="OnCounterClicked"
        HorizontalOptions="Center" />

Cet exemple définit l’étiquette du bouton (« Cliquer ici ») et spécifie qu’une méthode nommée OnCounterClicked doit être exécutée quand l’utilisateur sélectionne le bouton. D’autres propriétés peuvent modifier la disposition du bouton et du texte. Dans cet exemple, le texte est centré sur le bouton. Les propriétés sémantiques prennent en charge l’accessibilité pour les utilisateurs malvoyants.

.NET MAUI génère toujours du code natif pour l’appareil cible, ce qui vous permet d’obtenir des performances optimales. .NET MAUI utilise des gestionnaires propres à chaque plateforme et élément d’interface utilisateur pour effectuer une opération. Par exemple, si vous ciblez iOS pour l’application, un gestionnaire .NET MAUI mappe ce code à un UIButton iOS. Si vous utilisez Android, vous obtenez un AppCompatButton Android. Ces gestionnaires sont accessibles indirectement via une interface propre au contrôle fournie par .NET MAUI, par exemple IButton pour un bouton.

Diagramme montrant comment .NET MAUI fait correspondre un contrôle XAML à un contrôle natif. Il montre que le contrôle .NET MAUI implémente une interface que chaque gestionnaire natif implémente également.

Remarque

Si vous préférez, vous pouvez également créer l’IU de manière dynamique à l’aide du code C#. Cette approche vous permet de modifier la disposition en fonction de l’environnement. Par exemple, vous pouvez souhaiter que certains contrôles ne s’affichent pas si l’utilisateur ne dispose pas du niveau d’autorisation approprié.

.NET MAUI facilite l’accès aux contrôles courants tels que les boutons. Les autres contrôles courants (comme les champs d’entrée de texte, les étiquettes et les sélecteurs de date) sont tout aussi simples. Il ne suffit par contre pas d’avoir des contrôles individuels pour former une bonne plateforme permettant de créer des applications riches. .NET MAUI fournit également :

  • Un moteur de disposition élaboré pour la conception de pages.
  • Plusieurs types de page pour créer des types de navigation riches, comme des tiroirs.
  • La prise en charge de la liaison de données, pour des modèles de développement plus élégants et plus faciles à gérer.
  • La possibilité de créer des gestionnaires personnalisés pour améliorer la présentation des éléments d’IU.
  • Accès direct aux API natives et abstraction de nombreux besoins courants des applications mobiles et de bureau, distincts de l’interface utilisateur. La bibliothèque Essentials permet à une application d’accéder à des éléments tels que le GPS, l’accéléromètre, ainsi que l’état de la batterie et du réseau. Il existe des dizaines de capteurs et de services communs au développement mobile, qui sont également disponibles via cette bibliothèque.

Contrôle des connaissances

1.

Quel environnement fournit la prise en charge du runtime pour une application WinUI 3 ?

2.

Quel langage de balises pouvez-vous utiliser pour concevoir la disposition de l’IU d’une application .NET MAUI ?