Share via


Gestion de la configuration

Notes

Ce livre électronique a été publié au printemps 2017 et n’a pas été mis à jour depuis lors. Il y a beaucoup dans le livre qui reste précieux, mais une partie du matériel est obsolète.

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 de l’application sont liés à l’existence de l’application et ne sont significatifs 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 l’emplacement à partir duquel récupérer les données et comment les afficher à l’écran.

Xamarin.Forms inclut un dictionnaire persistant qui peut être utilisé pour stocker des données de paramètres. Ce dictionnaire est accessible à l’aide de la Application.Current.Properties propriété , et toutes les données qui y sont placées sont enregistrées lorsque l’application passe en veille et sont restaurées lorsque l’application reprend ou redémarre. En outre, la Application classe a également une SavePropertiesAsync méthode qui permet à une application d’enregistrer ses paramètres si nécessaire. Pour plus d’informations sur ce dictionnaire, consultez Dictionnaire des propriétés.

L’inconvénient du stockage des données à l’aide du Xamarin.Forms dictionnaire persistant est qu’il n’est pas facile de les lier aux données. Par conséquent, l’application mobile eShopOnContainers utilise la bibliothèque Xam.Plugins.Settings, disponible à partir de NuGet. Cette bibliothèque fournit une approche multiplateforme cohérente, de type sécurisé pour conserver et récupérer les paramètres utilisateur et d’application, tout en utilisant la gestion des paramètres natifs 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.

Notes

Bien que la bibliothèque Xam.Plugin.Settings puisse stocker à la fois les paramètres d’application et les paramètres utilisateur, elle ne fait aucune distinction entre les deux.

Création d’une classe Settings

Lors de l’utilisation de la bibliothèque Xam.Plugins.Settings, une seule classe statique doit être créée qui contiendra les paramètres d’application et d’utilisateur requis par l’application. L’exemple de code suivant montre la classe Settings dans l’application mobile eShopOnContainers :

public static class Settings  
{  
    private static ISettings AppSettings  
    {  
        get  
        {  
            return CrossSettings.Current;  
        }  
    }  
    ...  
}

Les paramètres peuvent être lus et écrits via l’API ISettings , qui est fournie par la bibliothèque Xam.Plugins.Settings. Cette bibliothèque fournit un singleton qui peut être utilisé pour accéder à l’API , CrossSettings.Currentet la classe de paramètres d’une application doit exposer ce singleton via une ISettings propriété .

Notes

Les directives d’utilisation pour les espaces de noms Plugin.Settings et Plugin.Settings.Abstractions doivent être ajoutées à une classe qui nécessite l’accès aux types de bibliothèque Xam.Plugins.Settings.

Ajout d’un paramètre

Chaque paramètre se compose d’une clé, d’une valeur par défaut et d’une propriété. L’exemple de code suivant montre les trois éléments d’un paramètre utilisateur qui représente l’URL de base du services en ligne auquel l’application mobile eShopOnContainers se connecte :

public static class Settings  
{  
    ...  
    private const string IdUrlBase = "url_base";  
    private static readonly string UrlBaseDefault = GlobalSetting.Instance.BaseEndpoint;  
    ...  

    public static string UrlBase  
    {  
        get  
        {  
            return AppSettings.GetValueOrDefault<string>(IdUrlBase, UrlBaseDefault);  
        }  
        set  
        {  
            AppSettings.AddOrUpdateValue<string>(IdUrlBase, value);  
        }  
    }  
}

La clé est toujours une chaîne const qui définit le nom de la clé, la valeur par défaut du paramètre étant une valeur en lecture seule statique 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é.

La UrlBase propriété statique utilise deux méthodes de l’API ISettings pour lire ou écrire la valeur de paramètre. La ISettings.GetValueOrDefault méthode est utilisée pour récupérer la valeur d’un paramètre à partir d’un stockage spécifique à la plateforme. Si aucune valeur n’est définie pour le paramètre, sa valeur par défaut est récupérée à la place. De même, la méthode est utilisée pour conserver la ISettings.AddOrUpdateValue valeur d’un paramètre dans le stockage spécifique à la plateforme.

Au lieu de définir une valeur par défaut à l’intérieur de la Settings classe, la UrlBaseDefault chaîne obtient sa valeur à partir de la GlobalSetting classe . L’exemple de code suivant montre la propriété et UpdateEndpoint la BaseEndpoint méthode dans cette classe :

public class GlobalSetting  
{  
    ...  
    public string BaseEndpoint  
    {  
        get { return _baseEndpoint; }  
        set  
        {  
            _baseEndpoint = value;  
            UpdateEndpoint(_baseEndpoint);  
        }  
    }  
    ...  

    private void UpdateEndpoint(string baseEndpoint)  
    {  
        RegisterWebsite = string.Format("{0}:5105/Account/Register", baseEndpoint);  
        CatalogEndpoint = string.Format("{0}:5101", baseEndpoint);  
        OrdersEndpoint = string.Format("{0}:5102", baseEndpoint);  
        BasketEndpoint = string.Format("{0}:5103", baseEndpoint);  
        IdentityEndpoint = string.Format("{0}:5105/connect/authorize", baseEndpoint);  
        UserInfoEndpoint = string.Format("{0}:5105/connect/userinfo", baseEndpoint);  
        TokenEndpoint = string.Format("{0}:5105/connect/token", baseEndpoint);  
        LogoutEndpoint = string.Format("{0}:5105/connect/endsession", baseEndpoint);  
        IdentityCallback = string.Format("{0}:5105/xamarincallback", baseEndpoint);  
        LogoutCallback = string.Format("{0}:5105/Account/Redirecting", baseEndpoint);  
    }  
}

Chaque fois que la BaseEndpoint propriété est définie, la UpdateEndpoint méthode est appelée. Cette méthode met à jour une série de propriétés, qui sont toutes basées sur le UrlBase paramètre utilisateur fourni par la Settings classe qui représentent différents points de terminaison auxquels l’application mobile eShopOnContainers se connecte.

Liaison de données aux paramètres utilisateur

Dans l’application mobile eShopOnContainers, le SettingsView expose deux paramètres utilisateur. Ces paramètres permettent 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 l’application doit récupérer des données à partir de services fictifs qui ne nécessitent pas de connexion Internet. Lorsque vous choisissez de récupérer des données à partir de microservices conteneurisés, une URL de point de terminaison de base pour les microservices doit être spécifiée. La figure 7-1 montre quand SettingsView l’utilisateur a choisi de récupérer des données à partir de microservices conteneurisés.

Paramètres utilisateur exposés par l’application mobile eShopOnContainers

Figure 7-1 : Paramètres utilisateur exposés par l’application mobile eShopOnContainers

La liaison de données peut être utilisée pour récupérer et définir les paramètres exposés par la Settings classe . Pour ce faire, les contrôles de la liaison d’affichage permettent d’afficher les propriétés du modèle qui accèdent à leur tour aux propriétés de la Settings classe et de déclencher une notification de modification de propriété si la valeur des paramètres a changé. Pour plus d’informations sur la façon dont l’application mobile eShopOnContainers construit des modèles d’affichage et les associe à des affichages, consultez Création automatique d’un modèle d’affichage avec un localisateur de modèle d’affichage.

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

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

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

public string Endpoint  
{  
    get { return _endpoint; }  
    set  
    {  
        _endpoint = value;  

        if(!string.IsNullOrEmpty(_endpoint))  
        {  
            UpdateEndpoint(_endpoint);  
        }  

        RaisePropertyChanged(() => Endpoint);  
    }  
}

Lorsque la Endpoint propriété est définie, la UpdateEndpoint méthode est appelée, à condition que la valeur fournie soit valide et que la notification de modification de propriété soit déclenchée. L’exemple de code suivant montre la méthode UpdateEndpoint :

private void UpdateEndpoint(string endpoint)  
{  
    Settings.UrlBase = endpoint;  
}

Cette méthode met à jour la UrlBase propriété dans la Settings classe avec la valeur d’URL de point de terminaison de base entrée par l’utilisateur, ce qui la rend persistante dans le stockage spécifique à la plateforme.

Lorsque le SettingsView est accédé à, la InitializeAsync méthode dans la SettingsViewModel classe est exécutée. L’exemple de code suivant illustre cette méthode :

public override Task InitializeAsync(object navigationData)  
{  
    ...  
    Endpoint = Settings.UrlBase;  
    ...  
}

La méthode définit la Endpoint propriété sur la valeur de la UrlBase propriété dans la Settings classe . L’accès à la UrlBase propriété amène la bibliothèque Xam.Plugins.Settings à récupérer la valeur des paramètres à partir d’un stockage spécifique à la plateforme. Pour plus d’informations sur la façon dont la InitializeAsync méthode est appelée, consultez Passage de paramètres pendant la navigation.

Ce mécanisme garantit que chaque fois qu’un utilisateur accède à l’objet SettingsView, les paramètres utilisateur sont récupérés à partir du stockage spécifique à la plateforme et présentés via la liaison de données. Ensuite, si l’utilisateur modifie les valeurs des paramètres, la liaison de données garantit qu’elles sont immédiatement conservées 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 bibliothèque Xam.Plugins.Settings fournit une approche multiplateforme cohérente, sécurisée de type pour conserver et récupérer les paramètres d’application et d’utilisateur, et la liaison de données peut être utilisée pour accéder aux paramètres créés avec la bibliothèque.