Aracılığıyla paylaş


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 olanak tanıyarak davranışın uygulamayı yeniden oluşturmadan değiştirilmesini sağlar. İ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ı NuGet'ten edinilebilen Xam.Plugins.Settings kitaplığını kullanır. 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.Settings kitaplığı hem uygulama hem de kullanıcı ayarlarını depolayabilir ancak ikisi arasında ayrım yapmaz.

Ayarlar Sınıfı Oluşturma

Xam.Plugins.Settings kitaplığı kullanılırken, 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ında Ayarlar sınıfını gösterir:

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

Ayarlar, Xam.Plugins.Settings kitaplığı tarafından sağlanan API aracılığıyla ISettings okunabilir ve yazılabilir. 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

Plugin.Settings ve Plugin.Settings.Abstractions ad alanları için yönergelerin kullanılması, Xam.Plugins.Settings kitaplık türlerine erişim gerektiren bir sınıfa eklenmelidir.

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ına 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 .

eShopOnContainers mobil uygulaması tarafından kullanıma sunulan kullanıcı ayarları

Ş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 InitializeAsync SettingsViewModel 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 UrlBase Settings değerine ayarlarEndpoint. özelliğine UrlBase erişmek, Xam.Plugins.Settings 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ı SettingsView'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 olanak tanıyarak davranışın uygulamayı yeniden oluşturmadan değiştirilmesini sağlar. 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.

Xam.Plugins.Settings 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.