Share via


Yapılandırma Yönetimi

Not

Bu e-Kitap 2017 baharında yayımlanmıştır ve o zamandan beri güncelleştirilmemiştir. Kitapta değerli kalan çok şey var, ancak bazı malzemeler güncelliğini yitirmiş.

Ayarlar, bir uygulamanın davranışını koddan yapılandıran verilerin ayrılmasına izin verir ve uygulamanın yeniden derlenmesine gerek kalmadan davranışın değiştirilmesine izin verir. İki tür ayar vardır: uygulama ayarları ve kullanıcı ayarları.

Uygulama ayarları, bir uygulamanın oluşturduğu ve yönettiği verilerdir. Sabit web hizmeti uç noktaları, API anahtarları ve çalışma zamanı durumu gibi verileri içerebilir. Uygulama ayarları uygulamanın varlığına bağlıdır ve yalnızca bu uygulama için anlamlıdır.

Kullanıcı ayarları, uygulamanın davranışını etkileyen ve sık sık yeniden ayarlama gerektirmeyen, bir uygulamanın özelleştirilebilir ayarlarıdır. Örneğin, bir uygulama kullanıcının verilerin nereden alınacağını ve ekranda nasıl görüntüleneceğini belirtmesine izin verebilir.

Xamarin.Forms , ayarlar verilerini depolamak için kullanılabilecek kalıcı bir sözlük içerir. Bu sözlüğe özelliği kullanılarak Application.Current.Properties erişilebilir ve uygulamaya yerleştirilen tüm veriler uygulama uyku durumuna geçtiğinde kaydedilir ve uygulama devam ettiğinde veya yeniden başlatıldığında geri yüklenir. Ayrıca, sınıfı, Application bir uygulamanın gerektiğinde ayarlarını kaydetmesini sağlayan bir SavePropertiesAsync yöntemi de vardır. Bu sözlük hakkında daha fazla bilgi için bkz . Özellikler Sözlüğü.

Kalıcı sözlüğü kullanarak verileri depolamanın Xamarin.Forms dezavantajı, verilerin kolayca bağlanmıyor olmasıdır. Bu nedenle, eShopOnContainers mobil uygulaması Xam.Plugins kullanır. Ayarlar kitaplığı,NuGet. Bu kitaplık, her platform tarafından sağlanan yerel ayarlar yönetimini kullanırken uygulama ve kullanıcı ayarlarını kalıcı hale getirme ve alma için tutarlı, tür açısından güvenli, platformlar arası bir yaklaşım sağlar. Ayrıca, kitaplık tarafından sunulan ayarlar verilerine erişmek için veri bağlamayı kullanmak kolaydır.

Not

Xam.Plugin iken. Ayarlar kitaplığı hem uygulama hem de kullanıcı ayarlarını depolayabilir, ikisi arasında ayrım yapmaz.

Ayarlar Sınıfı Oluşturma

Xam.Plugins kullanılırken. Ayarlar kitaplığında, uygulamanın gerektirdiği uygulama ve kullanıcı ayarlarını içerecek tek bir statik sınıf oluşturulmalıdır. Aşağıdaki kod örneği, eShopOnContainers mobil uygulamasındaki Ayarlar sınıfını gösterir:

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

ISettings Ayarlar Xam.Plugins tarafından sağlanan API. Ayarlar kitaplığı. Bu kitaplık, CrossSettings.CurrentAPI'ye erişmek için kullanılabilecek bir tekli sağlar ve bir uygulamanın ayarlar sınıfı bu singleton'ı bir ISettings özellik aracılığıyla kullanıma sunmalıdır.

Not

Eklenti için yönergeleri kullanma. Ayarlar ve Eklenti. Ayarlar. Soyutlama ad alanları, Xam.Plugins'e erişim gerektiren bir sınıfa eklenmelidir. kitaplık türlerini Ayarlar.

Ayar Ekleme

Her ayar bir anahtardan, varsayılan değerden ve bir özelliğinden oluşur. Aşağıdaki kod örneği, eShopOnContainers mobil uygulamasının bağlandığını çevrimiçi hizmetler temel URL'sini temsil eden bir kullanıcı ayarı için üç öğeyi de gösterir:

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);  
        }  
    }  
}

Anahtar her zaman anahtar adını tanımlayan sabit bir dizedir ve ayarın varsayılan değeri gerekli türün statik salt okunur değeridir. Varsayılan bir değer sağlamak, ayarsız bir ayar alınırsa geçerli bir değerin kullanılabilir olmasını sağlar.

UrlBase Statik özellik, ayar değerini okumak veya yazmak için API'den ISettings iki yöntem kullanır. ISettings.GetValueOrDefault yöntemi, platforma özgü depolama alanından bir ayarın değerini almak için kullanılır. Ayar için hiçbir değer tanımlanmamışsa, bunun yerine varsayılan değeri alınır. Benzer şekilde yöntemi, bir ayarın ISettings.AddOrUpdateValue değerini platforma özgü depolamada kalıcı hale getirmek için kullanılır.

Dize, UrlBaseDefault sınıfı içinde Settings varsayılan bir değer tanımlamak yerine değerini sınıfından GlobalSetting alır. Aşağıdaki kod örneğinde bu sınıftaki BaseEndpoint özellik ve UpdateEndpoint yöntem gösterilmektedir:

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);  
    }  
}

BaseEndpoint Özelliği her ayarlandığında yöntemi UpdateEndpoint çağrılır. Bu yöntem, tümü eShopOnContainers mobil uygulamasının bağlandığı farklı uç noktaları temsil eden sınıf tarafından Settings sağlanan kullanıcı ayarını temel alan UrlBase bir dizi özelliği güncelleştirir.

Kullanıcı Ayarlar Veri Bağlama

eShopOnContainers mobil uygulamasında iki SettingsView kullanıcı ayarı kullanıma sunar. Bu ayarlar, uygulamanın Docker kapsayıcıları olarak dağıtılan mikro hizmetlerden veri alıp almayacağının veya uygulamanın İnternet bağlantısı gerektirmeyen sahte hizmetlerden veri alması gerekip gerekmediğinin yapılandırılmasına olanak tanır. Kapsayıcılı mikro hizmetlerden veri almayı seçerken, mikro hizmetler için bir temel uç nokta URL'si belirtilmelidir. Şekil 7-1,kullanıcının kapsayıcılı mikro hizmetlerden veri almayı seçtiği zamanları gösterir SettingsView .

User settings exposed by the eShopOnContainers mobile app

Şekil 7-1: eShopOnContainers mobil uygulaması tarafından kullanıma sunulan kullanıcı ayarları

Veri bağlama, sınıfı tarafından Settings kullanıma sunulan ayarları almak ve ayarlamak için kullanılabilir. Bu, görünüm bağlaması üzerindeki denetimler tarafından elde edilir ve böylece sınıftaki özelliklere erişen model özelliklerini Settings görüntüleyebilir ve ayarlar değeri değiştiyse bir özellik değişikliği bildirimi oluşturulur. eShopOnContainers mobil uygulamasının modelleri nasıl oluşturup görünümlerle ilişkilendirmesi hakkında bilgi için bkz . Model Bulucuyu Görüntüle ile Modeli Otomatik Olarak Oluşturma.

Aşağıdaki kod örneği, kullanıcının kapsayıcılı mikro hizmetler için bir temel uç nokta URL'si girmesini sağlayan denetimi SettingsView gösterirEntry:

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

Bu Entry denetim, iki yönlü bağlama kullanarak sınıfının özelliğine SettingsViewModel bağlanırEndpoint. Aşağıdaki kod örneği Endpoint özelliğini gösterir:

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

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

        RaisePropertyChanged(() => Endpoint);  
    }  
}

Endpoint Özellik ayarlandığındaUpdateEndpoint, sağlanan değerin geçerli olması ve özellik değiştirme bildiriminin tetiklenmiş olması koşuluyla yöntemi çağrılır. Aşağıdaki kod örneği yöntemini gösterir UpdateEndpoint :

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

Bu yöntem, sınıfındaki Settings özelliğini kullanıcı tarafından girilen temel uç nokta URL değeriyle güncelleştirir UrlBase ve bu da platforma özgü depolama alanında kalıcı olmasını sağlar.

SettingsView öğesine gidildiğinde, sınıfındaki InitializeAsyncSettingsViewModel yöntemi yürütülür. Aşağıdaki kod örneği bu yöntemi gösterir:

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

yöntemi, özelliğini sınıfındaki özelliğinin UrlBaseSettings değerine ayarlarEndpoint. özelliğine UrlBase erişmek, Xam.Plugins.Ayarlar kitaplığının platforma özgü depolama alanından ayarlar değerini almasına neden olur. Yönteminin InitializeAsync nasıl çağrıldığı hakkında bilgi için bkz . Gezinti Sırasında Parametreleri Geçirme.

Bu mekanizma, bir kullanıcı Ayarlar View'a her geçtiğinde, kullanıcı ayarlarının platforma özgü depolama alanından alınmasını ve veri bağlama aracılığıyla sunulmasını sağlar. Ardından, kullanıcı ayarlar değerlerini değiştirirse, veri bağlama platforma özgü depolama alanına hemen kalıcı hale getirildiğinden emin olur.

Özet

Ayarlar, bir uygulamanın davranışını koddan yapılandıran verilerin ayrılmasına izin verir ve uygulamanın yeniden derlenmesine gerek kalmadan davranışın değiştirilmesine izin verir. Uygulama ayarları, bir uygulamanın oluşturduğu ve yönettiği verilerdir ve kullanıcı ayarları, uygulamanın davranışını etkileyen ve sık sık yeniden ayarlama gerektirmeyen, bir uygulamanın özelleştirilebilir ayarlarıdır.

The Xam.Plugins. Ayarlar kitaplığı, uygulama ve kullanıcı ayarlarını kalıcı hale getirmek ve almak için tutarlı, tür açısından güvenli, platformlar arası bir yaklaşım sağlar ve kitaplıkla oluşturulan ayarlara erişmek için veri bağlama kullanılabilir.