Partager via


Gestion des paramètres d’application

Conseil

Ce contenu est un extrait du livre électronique Modèles d’application d’entreprise avec .NET MAUI, disponible dans la .documentation .NET ou en tant que PDF téléchargeable gratuitement qui peut être lu hors connexion.

Miniature de la couverture du livre électronique Modèles d’application d’entreprise avec .NET MAUI.

Les paramètres permettent de séparer les données qui configurent le comportement d’une application du code, ce qui permet de modifier le comportement sans regénérer l’application. Il existe deux types de paramètres : les paramètres d’application et les paramètres utilisateur.

Les paramètres d’application sont des données qu’une application crée et gère. Cela peut inclure des données comme des points de terminaison de service web fixes, des clés API et l’état d’exécution. Les paramètres d’application sont liés aux fonctionnalités principales et ne sont pertinents que pour cette application.

Les paramètres utilisateur sont les paramètres personnalisables d’une application qui affectent le comportement de l’application et ne nécessitent pas de réajustement fréquent. Par exemple, une application peut permettre à l’utilisateur de spécifier où récupérer des données et comment les afficher à l’écran.

Création d’une interface de paramètres

Bien que le gestionnaire de préférences puisse être utilisé directement dans votre application, il présente l’inconvénient de rendre votre application étroitement couplée à l’implémentation du gestionnaire de préférences. Ce couplage signifie que la création de tests unitaires ou l’extension des fonctionnalités de gestion des préférences sera limitée, car votre application n’aura pas de moyen direct d’intercepter le comportement. Pour résoudre ce problème, une interface peut être créée pour fonctionner en tant que proxy pour la gestion des préférences. L’interface nous permettra de fournir une implémentation qui correspond à nos besoins. Par exemple, lors de l’écriture d’un test unitaire, nous pouvons définir des paramètres spécifiques, et l’interface nous permet de définir facilement ces données de manière cohérente pour le test. L’exemple de code suivant montre l’interface ISettingsService dans l’application multiplateforme eShop :

namespace eShop.Services.Settings;

public interface ISettingsService
{
    string AuthAccessToken { get; set; }
    string AuthIdToken { get; set; }
    bool UseMocks { get; set; }
    string IdentityEndpointBase { get; set; }
    string GatewayShoppingEndpointBase { get; set; }
    string GatewayMarketingEndpointBase { get; set; }
    bool UseFakeLocation { get; set; }
    string Latitude { get; set; }
    string Longitude { get; set; }
    bool AllowGpsLocation { get; set; }
}

Ajout de paramètres

.NET MAUI inclut un gestionnaire de préférences qui permet de stocker les paramètres d’exécution d’un utilisateur. Cette fonctionnalité est accessible à partir de n’importe où dans votre application à l’aide de la classe Microsoft.Maui.Storage.Preferences. Le gestionnaire de préférences fournit une approche cohérente, sécurisée et multiplateforme pour la persistance et la récupération des paramètres d’application et d’utilisateur, tout en utilisant la gestion des paramètres native fournie par chaque plateforme. En outre, il est simple d’utiliser la liaison de données pour accéder aux données de paramètres exposées par la bibliothèque. Pour plus d’informations, consultez Préférences dans le Centre de développement Microsoft.

Conseil

Les préférences sont destinées au stockage de données relativement petites. Si vous devez stocker des données plus volumineuses ou complexes, envisagez d’utiliser une base de données ou un système de fichiers local pour stocker les données.

Notre application utilise la classe Preferences, nécessaire pour implémenter l’interface ISettingsService. Le code ci-dessous montre comment le SettingsService de l’application multiplateforme eShop implémente les propriétés AuthTokenAccess et UseMocks :

public sealed class SettingsService : ISettingsService
{
    private const string AccessToken = "access_token";
    private const string AccessTokenDefault = string.Empty;

    private const string IdUseMocks = "use_mocks";
    private const bool UseMocksDefault = true;

    public string AuthAccessToken
    {
        get => Preferences.Get(AccessToken, AccessTokenDefault);
        set => Preferences.Set(AccessToken, value);
    }

    public bool UseMocks
    {
        get => Preferences.Get(IdUseMocks, UseMocksDefault);
        set => Preferences.Set(IdUseMocks, value);
    }
}

Chaque paramètre se compose d’une clé privée, d’une valeur par défaut privée et d’une propriété publique. La clé est toujours une chaîne const qui définit un nom unique, la valeur par défaut du paramètre étant une valeur statique en lecture seule ou constante du type requis. La fourniture d’une valeur par défaut garantit qu’une valeur valide est disponible si un paramètre non défini est récupéré. Cette implémentation de service peut être fournie via l’injection de dépendances dans notre application pour une utilisation dans des modèles d’affichage ou d’autres services dans l’ensemble de l’application.

Liaison de données aux paramètres utilisateur

Dans l’application multiplateforme eShop, SettingsView expose plusieurs paramètres que l’utilisateur peut configurer au moment de l’exécution. Ces paramètres permettent notamment de déterminer si l’application doit récupérer des données à partir de microservices déployés en tant que conteneurs Docker, ou si elle doit récupérer des données à partir de services fictifs qui ne nécessitent pas de connexion Internet. Lors de la récupération de données à partir de microservices en conteneur, une URL de point de terminaison de base pour les microservices doit être spécifiée. L’image ci-dessous montre l’objet SettingsView lorsque l’utilisateur a choisi de récupérer des données à partir de microservices en conteneur.

Paramètres utilisateur exposés par l’application multiplateforme eShop.

La liaison de données peut être utilisée pour récupérer et définir les paramètres exposés par l’interface ISettingService. Pour ce faire, des contrôles sur la liaison d’affichage permettent d’afficher les propriétés du modèle qui, à leur tour, accèdent aux propriétés de l’interface ISettingService et déclenchent une notification de modification de propriété si la valeur a changé.

L’exemple de code suivant montre le contrôle Entry à partir de SettingsView, qui permet à l’utilisateur d’entrer une URL de point de terminaison d’identité de base pour les microservices en conteneur :

<Entry Text="{Binding IdentityEndpoint, Mode=TwoWay}" />

Ce contrôle Entry est lié à la propriété IdentityEndpoint de la classe SettingsViewModel à l’aide d’une liaison bidirectionnelle. L’exemple de code suivant illustre la propriété IdentityEndpoint :

private readonly ISettingsService _settingsService;

private string _identityEndpoint;

public SettingsViewModel(
    ILocationService locationService, IAppEnvironmentService appEnvironmentService,
    IDialogService dialogService, INavigationService navigationService, ISettingsService settingsService)
    : base(dialogService, navigationService, settingsService)
{
    _settingsService = settingsService;

    _identityEndpoint = _settingsService.IdentityEndpointBase;
}

public string IdentityEndpoint
{
    get => _identityEndpoint;
    set
    {
        SetProperty(ref _identityEndpoint, value);

        if (!string.IsNullOrWhiteSpace(value))
        {
            UpdateIdentityEndpoint();
        }
    }
}

Lorsque la propriété IdentityEndpoint est définie, la méthode UpdateIdentityEndpoint est appelée, à condition que la valeur fournie soit valide. L’exemple de code suivant montre la méthode UpdateIdentityEndpoint :

private void UpdateIdentityEndpoint()
{
    _settingsService.IdentityEndpointBase = _identityEndpoint;
}

Cette méthode met à jour la propriété IdentityEndpointBase dans l’implémentation de l’interface ISettingService avec la valeur d’URL du point de terminaison de base entrée par l’utilisateur. Si la classe SettingsService est fournie comme implémentation pour _settingsService, la valeur est conservée dans le stockage spécifique à la plateforme.

Résumé

Les paramètres permettent de séparer les données qui configurent le comportement d’une application du code, ce qui permet de modifier le comportement sans regénérer l’application. Les paramètres d’application sont des données qu’une application crée et gère, et les paramètres utilisateur sont les paramètres personnalisables d’une application qui affectent le comportement de l’application et ne nécessitent pas de réajustement fréquent.

La classe Microsoft.Maui.Storage.Preferences fournit une approche cohérente, sécurisée et multiplateforme pour conserver et récupérer les paramètres de l’application et des utilisateurs.