Správa konfigurace
Poznámka:
Tato elektronická kniha byla publikována na jaře roku 2017 a od té doby nebyla aktualizována. Existuje mnoho v knize, která zůstává cenná, ale některé materiály jsou zastaralé.
Nastavení povolit oddělení dat, která konfigurují chování aplikace od kódu, což umožňuje měnit chování bez opětovného sestavení aplikace. Existují dva typy nastavení: nastavení aplikace a uživatelská nastavení.
Nastavení aplikace jsou data, která aplikace vytváří a spravuje. Může zahrnovat data, jako jsou pevné koncové body webové služby, klíče rozhraní API a stav modulu runtime. Nastavení aplikace je svázané s existencí aplikace a jsou pro tuto aplikaci smysluplná.
Uživatelská nastavení jsou přizpůsobitelná nastavení aplikace, která ovlivňují chování aplikace a nevyžadují časté opakované úpravy. Aplikace může například uživateli umožnit určit, odkud se mají načítat data a jak je zobrazit na obrazovce.
Xamarin.Forms obsahuje trvalý slovník, který lze použít k ukládání dat nastavení. K tomuto slovníku Application.Current.Properties
se dá přistupovat pomocí vlastnosti a všechna data, která se do ní umístí, se uloží, když aplikace přejde do stavu spánku, a obnoví se, když se aplikace obnoví nebo znovu spustí. Kromě toho třída má také metoduSavePropertiesAsync
, Application
která aplikaci umožňuje uložit jeho nastavení v případě potřeby. Další informace o tomto slovníku naleznete v tématu Vlastnosti slovníku.
Nevýhodou ukládání dat pomocí Xamarin.Forms trvalého slovníku je, že nejsou snadno svázaná s daty. Proto mobilní aplikace eShopOnContainers používá Xam.Plugins. Nastavení knihovnu, která je k dispozici od NuGet. Tato knihovna poskytuje konzistentní, typově bezpečný a multiplatformní přístup k zachování a načítání nastavení aplikací a uživatelů při používání nativní správy nastavení poskytovaných jednotlivými platformami. Kromě toho je jednoduché použít datovou vazbu pro přístup k datům nastavení vystaveným knihovnou.
Poznámka:
Zatímco Xam.Plugin. Nastavení knihovna může ukládat nastavení aplikace i uživatele, nerozlišuje se mezi nimi.
Vytvoření třídy Nastavení
Při použití Xam.Plugins. Nastavení knihovně by se měla vytvořit jedna statická třída, která bude obsahovat nastavení aplikace a uživatele vyžadované aplikací. Následující příklad kódu ukazuje třídu Nastavení v mobilní aplikaci eShopOnContainers:
public static class Settings
{
private static ISettings AppSettings
{
get
{
return CrossSettings.Current;
}
}
...
}
Nastavení lze číst a zapisovat prostřednictvím ISettings
Rozhraní API, které poskytuje Xam.Plugins. Nastavení knihovnu. Tato knihovna poskytuje jedenton, který lze použít pro přístup k rozhraní API, CrossSettings.Current
a třída nastavení aplikace by měla zveřejnit tento singleton prostřednictvím ISettings
vlastnosti.
Poznámka:
Direktivy Using pro modul plug-in. Nastavení a modul plug-in. Nastavení. Abstrakce oborů názvů by měly být přidány do třídy, která vyžaduje přístup k Xam.Plugins. Nastavení typy knihoven.
Přidání nastavení
Každé nastavení se skládá z klíče, výchozí hodnoty a vlastnosti. Následující příklad kódu ukazuje všechny tři položky pro uživatelské nastavení, které představuje základní adresu URL pro online služby, ke které se mobilní aplikace eShopOnContainers připojuje:
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);
}
}
}
Klíč je vždy const řetězec, který definuje název klíče s výchozí hodnotou pro nastavení statickou jen pro čtení požadovaného typu. Když zadáte výchozí hodnotu, zajistíte, že je platná hodnota k dispozici, pokud se načte nastavení bez nastavení.
Statická UrlBase
vlastnost používá dvě metody z ISettings
rozhraní API ke čtení nebo zápisu hodnoty nastavení. Metoda ISettings.GetValueOrDefault
se používá k načtení hodnoty nastavení z úložiště specifického pro platformu. Pokud není pro nastavení definována žádná hodnota, její výchozí hodnota se místo toho načte. Podobně se ISettings.AddOrUpdateValue
metoda používá k zachování hodnoty nastavení do úložiště specifického pro platformu.
Místo toho, aby definoval výchozí hodnotu uvnitř Settings
třídy, UrlBaseDefault
řetězec získá jeho hodnotu z GlobalSetting
třídy. Následující příklad kódu ukazuje vlastnost a UpdateEndpoint
metodu BaseEndpoint
v této třídě:
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);
}
}
Pokaždé, BaseEndpoint
když je vlastnost nastavena, UpdateEndpoint
je volána metoda. Tato metoda aktualizuje řadu vlastností, z nichž všechny jsou založené na UrlBase
uživatelském nastavení poskytovaném Settings
třídou, které představují různé koncové body, ke kterým se mobilní aplikace eShopOnContainers připojuje.
Datová vazba s uživatelským Nastavení
V mobilní aplikaci SettingsView
eShopOnContainers zveřejňuje dvě uživatelská nastavení. Tato nastavení umožňují nakonfigurovat, jestli má aplikace načítat data z mikroslužeb nasazených jako kontejnery Dockeru, nebo jestli by aplikace měla načítat data ze napodobených služeb, které nevyžadují připojení k internetu. Při volbě načtení dat z kontejnerizovaných mikroslužeb je nutné zadat adresu URL základního koncového bodu pro mikroslužby. Obrázek 7–1 ukazuje SettingsView
, kdy se uživatel rozhodl načíst data z kontejnerizovaných mikroslužeb.
Obrázek 7-1: Uživatelská nastavení vystavená mobilní aplikací eShopOnContainers
Datová vazba se dá použít k načtení a nastavení vystavených Settings
třídou. Toho lze dosáhnout pomocí ovládacích prvků na vazbě zobrazení pro zobrazení vlastností modelu, které zase přistupují vlastnosti ve Settings
třídě, a zvýšení oznámení o změně vlastnosti v případě, že se hodnota nastavení změnila. Informace o tom, jak mobilní aplikace eShopOnContainers vytváří modely zobrazení a přidruží je k zobrazení, naleznete v tématu Automatické vytvoření modelu zobrazení pomocí lokátoru modelu zobrazení.
Následující příklad kódu ukazuje Entry
ovládací prvek, SettingsView
který uživateli umožňuje zadat adresu URL základního koncového bodu pro kontejnerizované mikroslužby:
<Entry Text="{Binding Endpoint, Mode=TwoWay}" />
Tento Entry
ovládací prvek vytvoří vazbu na Endpoint
vlastnost SettingsViewModel
třídy pomocí obousměrné vazby. Následující příklad kódu ukazuje vlastnost Endpoint:
public string Endpoint
{
get { return _endpoint; }
set
{
_endpoint = value;
if(!string.IsNullOrEmpty(_endpoint))
{
UpdateEndpoint(_endpoint);
}
RaisePropertyChanged(() => Endpoint);
}
}
Endpoint
Při nastavení vlastnosti je volána metoda za předpokladuUpdateEndpoint
, že zadaná hodnota je platná a vlastnost změněna oznámení je vyvolána. Následující příklad kódu ukazuje metodu UpdateEndpoint
:
private void UpdateEndpoint(string endpoint)
{
Settings.UrlBase = endpoint;
}
Tato metoda aktualizuje UrlBase
vlastnost třídy Settings
hodnotou URL základního koncového bodu zadaná uživatelem, což způsobí, že se trvale uloží do úložiště specifického pro platformu.
SettingsView
Při přechodu na metodu InitializeAsync
SettingsViewModel
ve třídě se spustí. Následující příklad kódu ukazuje tuto metodu:
public override Task InitializeAsync(object navigationData)
{
...
Endpoint = Settings.UrlBase;
...
}
Metoda nastaví Endpoint
vlastnost na hodnotu UrlBase
vlastnosti ve Settings
třídě. UrlBase
Přístup k vlastnosti způsobí, že knihovna Xam.Plugins.Nastavení načte hodnotu nastavení z úložiště specifického pro platformu. Informace o InitializeAsync
vyvolání metody naleznete v tématu Předávání parametrů během navigace.
Tento mechanismus zajišťuje, že při každém přechodu uživatele na Nastavení View se uživatelská nastavení načtou z úložiště specifického pro platformu a zobrazí se prostřednictvím datové vazby. Pokud pak uživatel změní hodnoty nastavení, datová vazba zajistí, že se okamžitě zachovají zpět do úložiště specifického pro platformu.
Shrnutí
Nastavení povolit oddělení dat, která konfigurují chování aplikace od kódu, což umožňuje měnit chování bez opětovného sestavení aplikace. Nastavení aplikace jsou data, která aplikace vytváří a spravuje, a uživatelská nastavení jsou přizpůsobitelná nastavení aplikace, která ovlivňují chování aplikace a nevyžadují časté opakované úpravy.
Moduly plug-in Xam.Plugins. knihovna Nastavení poskytuje konzistentní, typově bezpečný přístup pro různé platformy pro zachování a načítání nastavení aplikací a uživatelů a datové vazby je možné použít pro přístup k nastavením vytvořeným v knihovně.