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.Current
et 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.
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.