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.Currenta 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.

User settings exposed by the eShopOnContainers mobile app

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 InitializeAsyncSettingsViewModel 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ě.