Dış Yapılandırma Deposu düzeni
Yapılandırma bilgilerini uygulama dağıtım paketinden merkezi bir konuma taşıyın. Bu model, yapılandırma verilerinin daha kolay yönetilmesi ve denetlenmesinin yanı sıra, yapılandırma verilerinin uygulamalar ve uygulama örnekleri arasında paylaşılması konusunda çeşitli avantajlar sağlayabilir.
Bağlam ve sorun
Çoğu uygulama çalışma zamanı ortamı, uygulama ile birlikte dağıtılan dosyaların barındırdığı yapılandırma bilgilerini içerir. Bazı durumlarda, uygulama dağıtıldıktan sonra bu dosyaları düzenleyerek uygulamanın davranışını değiştirmek mümkündür. Bununla birlikte, yapılandırmada değişiklik yapılması uygulamanın yeniden dağıtılmasını gerektirdiğinden, çoğu durumda kabul edilemez kapalı kalma sürelerine ve diğer yönetim yüklerine yol açar.
Yerel yapılandırma dosyaları da yapılandırmayı tek bir uygulamayla sınırlar, ancak bazen yapılandırma ayarlarının birden çok uygulamada ortak olması kullanışlı olur. Veritabanı bağlantı dizeleri, kullanıcı arabirimi tema bilgileri ya da ilgili bir uygulama kümesi tarafından kullanılan kuyruk ve depolama alanlarının URL’leri buna örnek olarak verilebilir.
Özellikle de bir bulutta barındırma senaryosunda, uygulamanın çalışan durumdaki birden çok örneğinde yerel yapılandırmalarda yapılan değişikliklerin yönetilmesi zordur. Bu, güncelleştirme dağıtılırken örneklerin farklı yapılandırma ayarları kullanıyor olmasına yol açabilir.
Ayrıca, uygulama ve bileşenlerde yapılan güncelleştirmeler yapılandırma şemalarında değişiklik yapılmasını gerektirebilir. Birçok yapılandırma sistemi, yapılandırma bilgilerinin farklı sürümlerini desteklemez.
Çözüm
Yapılandırma bilgilerini dış depolama alanında depolayın ve yapılandırma ayarlarının hızla okunup güncelleştirilmesi için kullanılabilecek bir arabirim sağlayın. Dış depolama türü, uygulamanın barındırma ve çalışma zamanı ortamına bağlıdır. Bulutta barındırılan bir senaryoda, genellikle bulut tabanlı bir depolama hizmeti veya adanmış yapılandırma hizmetidir, ancak barındırılan bir veritabanı veya başka bir özel sistem olabilir.
Yapılandırma bilgileri için seçtiğiniz yedekleme deposunun tutarlı ve kullanımı kolay erişim sağlayan bir arabirimi olmalıdır. Bilgileri doğru yazılmış ve yapılandırılmış bir biçimde kullanıma sunmalıdır. Uygulamanın, yapılandırma verilerini korumak için kullanıcıların erişimini yetkilendirmesi ve yapılandırmanın birden çok sürümünün (örneğin, her birinin birden çok sürümü de dahil olmak üzere geliştirme, hazırlama veya üretim gibi) depolamaya izin vermek için yeterince esnek olması de gerekebilir.
Birçok yerleşik yapılandırma sistemi, hızlı erişim sağlamak ve uygulama performansı üzerindeki etkiyi en aza indirmek için uygulama başlatıldığında verileri okur ve bellek üzerinde önbelleğe alır. Kullanılan yedekleme deposunun türüne ve bu deponun gecikme süresine bağlı olarak, dış yapılandırma deposunun içinde bir önbelleğe alma mekanizması uygulamak faydalı olabilir. Daha fazla bilgi için bkz. Önbelleğe Alma Kılavuzu. Şekilde, isteğe bağlı olarak yerel önbellek içeren Dış Yapılandırma Deposu düzenine genel bakış sunulmuştur.

Sorunlar ve dikkat edilmesi gerekenler
Bu düzenin nasıl uygulanacağına karar verirken aşağıdaki noktaları göz önünde bulundurun:
Kabul edilebilir düzeyde performans, yüksek kullanılabilirlik, sağlamlık sağlayan ve uygulama bakımı ile yönetimi sürecinin bir parçası olarak yedeklenebilecek bir yedekleme deposu seçin. Bulutta barındırılan bir uygulamada, bulut depolama mekanizması veya adanmış yapılandırma platformu hizmeti kullanmak, genellikle bu gereksinimleri karşılamak için iyi bir seçimdir.
Yedekleme deposunun şemasını, içerebileceği bilgi türleri açısından esnek olacak şekilde tasarlayın. Yazılan veriler, ayar koleksiyonları, ayarların birden çok sürümü ve şemayı kullanan uygulamaların gerektirdiği diğer tüm özellikler gibi yapılandırma gereksinimlerinin tamamını karşıladığından emin olun. Şema, gereksinimler değiştikçe ek ayarları desteklemek üzere kolayca genişletilebilmelidir.
Yedekleme deposunun fiziksel özelliklerini, bunların yapılandırma bilgilerinin depolanmasıyla ilişkisini ve performans üzerindeki etkisini göz önünde bulundurun. Örneğin, yapılandırma bilgilerini içeren bir XML belgesinin depolanması, yapılandırma arabiriminin veya uygulamanın ayrı ayrı ayarları okumak için belgeyi ayrıştırabilmesini gerektirir. Bu, bir ayarın güncelleştirilmesini daha karmaşık hale getirse de ayarların önbelleğe alınması, yavaşlayan okuma performansının dengelenmesine yardımcı olabilir.
Yapılandırma arabiriminin kapsamın denetlenmesine ve yapılandırma ayarlarının devralınmasına nasıl izin vereceğini göz önünde bulundurun. Örneğin, yapılandırma ayarları kapsamının kuruluş, uygulama ve makine düzeyinde belirlenmesi gerekebilir. Erişim üzerindeki denetim için farklı kapsamların temsilci olarak atanmasını desteklemesi ve tek tek uygulamaların ayarları geçersiz kılmasını engellemesi ya da buna izin vermesi gerekebilir.
Yapılandırma arabiriminin yapılandırma verilerini yazılan değerler, koleksiyonlar, anahtar/değer çiftleri veya özellik paketleri gibi gerekli biçimlerde kullanıma sunabildiğinden emin olun.
Ayarların hata içermesi ya da yedekleme deposunda mevcut olmaması durumunda yapılandırma deposu arabiriminin nasıl davranacağını göz önünde bulundurun. Varsayılan ayarların döndürülmesi ve hataların günlüğe kaydedilmesi uygun olabilir. Ayrıca, yapılandırma ayarı anahtarlarının veya adlarının büyük/küçük harfe duyarlılığı, ikili verilerin depolanması ve işlenmesi ile null ya da boş değerlerin işlenme yolları gibi konuları göz önünde bulundurun.
Yapılandırma verilerinin yalnızca uygun kullanıcı ve uygulamalara erişim izin verecek şekilde nasıl korunacağını göz önünde bulundurun. Bu büyük olasılıkla yapılandırma deposu arabiriminin bir özelliğidir, ancak yedekleme deposundaki verilere uygun izin olmadan, doğrudan erişilememesini sağlamak da gereklidir. Yapılandırma verilerini okumak ve yazmak için gerekli izinler arasında katı bir ayrım olduğundan emin olun. Ayrıca, yapılandırma ayarlarının tümünü mü yoksa bir kısmını mı şifrelemeniz gerektiğini ve bunun yapılandırma deposu arabiriminde nasıl uygulanacağını göz önünde bulundurun.
Merkezi olarak depolan ve çalışma zamanı sırasında uygulama davranışını değiştiren yapılandırmalar kritik öneme sahiptir ve bunların uygulama kodunu dağıtmak için kullanılan mekanizmalarla dağıtılması, güncelleştirilmesi ve yönetilmesi gerekir. Örneğin, birden fazla uygulamayı etkileyebilecek değişikliklerin bu yapılandırmayı kullanan tüm uygulamalar için uygun olduğundan emin olunması için bir tam test ve hazırlanmış dağıtım yaklaşımı kullanılarak gerçekleştirilmesi gerekir. Bir yönetici, bir uygulamayı güncelleştirmek için bir ayarı düzenlerse, bu ayarı kullanan diğer uygulamalar bundan olumsuz etkilenebilir.
Bir uygulama yapılandırma bilgilerini önbelleğe alıyorsa, uygulama yapılandırması değiştiğinde bu uygulamanın uyarılması gerekir. Önbelleğe alınan yapılandırma verileri için bir süre sonu ayarlayarak bu bilgilerin düzenli aralıklarla otomatik olarak yenilenmesi ve tüm değişikliklerin alınması (ve buna göre eylem gerçekleştirilmesi) sağlanabilir.
Yapılandırma verilerini önbelleğe alma, uygulama çalışma zamanındaki dış yapılandırma deposu ile ilgili geçici bağlantı sorunlarını gidermeye yardımcı olsa da, bu genellikle, uygulama ilk kez başlatıldığında dış depo kapalıysa sorunu çözmez. Uygulama dağıtım işlem hattının, uygulamanız başladığında canlı değerler alamadığında geri dönüş olarak bir yapılandırma dosyasındaki son bilinen yapılandırma değerleri kümesini sağlayacağından emin olun.
Bu düzenin kullanılacağı durumlar
Bu düzen aşağıdakiler için kullanışlıdır:
Birden çok uygulama ve uygulama örneği arasında paylaşılan yapılandırma ayarları veya birden çok uygulama ve uygulama örneği arasında standart bir yapılandırmanın uygulanmasını gerektiren durumlar.
Görüntüleri veya karmaşık veri türlerini depolama gibi gerekli yapılandırma ayarlarının tümünü desteklemeyen standart bir yapılandırma sistemi.
Örneğin uygulamaların merkezi olarak depolanan ayarların bazılarını veya tümünü geçersiz kılmasına izin vermek için bazı uygulama ayarlarına yönelik tamamlayıcı bir depo olarak.
Birden çok uygulamanın yönetimini basitleştirmenin ve isteğe bağlı olarak yapılandırma deposuna yönelik bazı veya tüm erişim türlerinin günlüğe kaydedilmesi aracılığıyla yapılandırma ayarları kullanımının izlenmesinin bir yolu olarak.
Özel yedekleme deposu örneği
Microsoft Azure barındırılan bir uygulamada, yapılandırma bilgilerini dışarıdan depolamak için olası bir seçenek Azure Depolama kullanmaktır. Bu hizmet dayanıklıdır, yüksek performans sunar ve yüksek kullanılabilirlik sağlamak için otomatik yük devretme ile üç kez çoğaltılır. Azure Tablo depolama, değerler için esnek bir şemanın kullanılabileceği bir anahtar/değer deposu sağlar. Azure Blob depolama, tekil olarak adlandırılmış bloblarda her tür verinin depolanabildiği hiyerarşik, kapsayıcı tabanlı bir depolama sağlar.
Bu düzenin uygulanması sırasında, Azure Blob depolama alanının soyutlanmasından ve ayarlarınızı, çalışma zamanında güncelleştirmeleri denetleme ve bunlara nasıl yanıt verileceğini belirleme dahil olmak üzere uygulamalarınızın içinde kullanıma sunmaktan siz sorumlusunuz.
Aşağıdaki örnek, yapılandırma bilgilerini depolamak ve göstermek için uyarlaması yapılandırma deposunun BLOB depolama alanı üzerinden nasıl envisioned olduğunu gösterir. Bir BlobSettingsStore sınıf, yapılandırma bilgilerini tutmak Için blob Storage soyut olabilir ve basit bir ISettingsStore arabirim uygular.
public interface ISettingsStore
{
Task<ETag> GetVersionAsync();
Task<Dictionary<string, string>> FindAllAsync();
}
Bu arabirim yapılandırma deposunda tutulan yapılandırma ayarlarını alma yöntemlerini tanımlar ve yapılandırma ayarlarının yakın zamanda değiştirilip değiştirilmediğini algılamak için kullanılabilecek bir sürüm numarası içerir. Bir BlobSettingsStore sınıf, ETag sürüm oluşturmayı uygulamak için Blobun özelliğini kullanabilir. ETagÖzellik, blob her yazıldığında otomatik olarak güncelleştirilir.
Tasarım yaparak bu basit çizim, tüm yapılandırma ayarlarını, yazılan değerler yerine dize değerleri olarak kullanıma sunar.
Bir ExternalConfigurationManager sınıf daha sonra bir örnek etrafında sarmalayıcı sağlayabilir BlobSettingsStore . Uygulama, yapılandırma bilgilerini almak için bu sınıfı kullanabilir. Bu sınıf, sistem çalışırken yapılandırmada yapılan değişiklikleri yayımlamak için Microsoft reaktif uzantıları gibi bir şey kullanabilir. Ayrıca, ek dayanıklılık ve performans sağlamak üzere ayarların önbelleğe alma deseninin uygulanmasından de sorumlu olur.
Kullanım aşağıdakine benzer şekilde görünür.
static void Main(string[] args)
{
// Start monitoring configuration changes.
ExternalConfiguration.Instance.StartMonitor();
// Get a setting.
var setting = ExternalConfiguration.Instance.GetAppSetting("someSettingKey");
…
}
Azure Uygulama yapılandırması 'nı kullanma
Özel bir yapılandırma deposunun oluşturulması bazı durumlarda gerekli olabilir, ancak pek çok uygulama bunun yerine Azure Uygulama yapılandırmasıkullanabilir. Azure Uygulama yapılandırması, gösterilemez olabilecek anahtar-değer çiftlerini destekler. Anahtarlar yazılır ve tek başına sürümlüdür. Azure Uygulama yapılandırması Ayrıca yapılandırmanın zaman içinde anlık görüntülerini destekler, böylece önceki yapılandırma değerlerini kolayca inceleyebilir veya geri alabilirsiniz. Yapılandırma değerleri, uygulamanın başladığı sırada hizmetin ulaşılamaz olması durumunda, yapılandırmanın bir kopyasının uygulamanızla birlikte sevk edilebilir olması için aktarılabilir.
İstemci kitaplıkları
Bu özelliklerin birçoğu, değerleri getirme ve önbelleğe alma, değişiklik değerlerini yenileme ve hatta uygulama yapılandırma hizmeti 'nin geçici kesintilerini işleme amacıyla uygulama çalışma zamanı ile tümleştirilen istemci kitaplıkları aracılığıyla sunulur.
| Çalışma Zamanı | İstemci Kitaplığı | Notlar | Hızlı Başlangıç |
|---|---|---|---|
| .NET | Microsoft. Extensions. Configuration. AzureAppConfiguration | Sağlayıcı Microsoft.Extensions.Configuration |
Hızlı Başlangıç |
| ASP.NET | Microsoft. Azure. AppConfiguration. AspNetCore | Sağlayıcı Microsoft.Extensions.Configuration |
Hızlı Başlangıç |
| .NET 'teki Azure Işlevleri | Microsoft. Extensions. Configuration. AzureAppConfiguration | Başlangıçta yapılandırmayı desteklemek için Azure Işlev uzantılarıyla birlikte kullanılır . cs | Hızlı Başlangıç |
| .NET Framework | Microsoft. Configuration. Configurationoluşturucular. AzureAppConfiguration | İçin yapılandırma Oluşturucu System.Configuration |
Hızlı Başlangıç |
| Java Spring | com. Azure. Spring Azure-Spring-Cloud-appconfiguration-config | Aracılığıyla Spring Framework erişimini destekler ConfigurationProperties |
Hızlı Başlangıç |
| Python | Azure. appconfiguration | Şunu sağlar AzureAppConfigurationClient |
Hızlı Başlangıç |
| JavaScript/Node.js | @azure/App-Configuration | Şunu sağlar AppConfigurationClient |
Hızlı Başlangıç |
istemci kitaplıklarına ek olarak, yapılandırma adımlarını derleme sürecinizdeki tümleştirmeye yönelik bir azure uygulama yapılandırma eşitleme GitHub eylemi ve azure uygulamayapılandırması azure uygulama yapılandırma gönderme Azure DevOps görevlerini de vardır.
Sonraki adımlar
- Ek uygulama yapılandırma örneklerine bakın
- Azure uygulama yapılandırmasını Kubernetes dağıtımları ile tümleştirmeyi öğrenin
- Azure uygulama yapılandırmasının özellik bayraklarını yönetmenize nasıl yardımcı olabileceğini öğrenin