Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
İpucu
Bu içerik, .NET Docs'ta veya çevrimdışı olarak okunabilen ücretsiz indirilebilir bir PDF olarak sağlanan Azure için Buluta Özel .NET Uygulamaları Tasarlama adlı e-Kitap'tan bir alıntıdır.
1. bölümde buluta özel olarak hız ve çeviklik hakkında çok şey olduğunu doğruladık. Kullanıcılar hızlı yanıt verme, yenilikçi özellikler ve sıfır kapalı kalma süresi bekler. Feature flags
buluta özel uygulamalar için çevikliği artırmaya yardımcı olan modern bir dağıtım tekniğidir. Yeni özellikleri bir üretim ortamına dağıtmanıza olanak tanır, ancak kullanılabilirliklerini kısıtlar. Bir anahtarın hızlı hareketiyle, uygulamayı yeniden başlatmadan veya yeni kod dağıtmadan belirli kullanıcılar için yeni bir özelliği etkinleştirebilirsiniz. Yeni özelliklerin yayınını kod dağıtımlarından ayırırlar.
Özellik bayrakları, çalışma zamanında kullanıcılar için işlevselliğin görünürlüğünü denetleen koşullu mantığı temel alır. Modern buluta özel sistemlerde, yeni özellikleri üretime erken dağıtmak, ancak sınırlı bir hedef kitleyle test etmek yaygın bir işlemdir. Güvenilirlik arttıkça, özellik artımlı olarak daha geniş kitlelere dağıtılabilir.
Özellik bayrakları için diğer kullanım örnekleri şunlardır:
- Premium işlevselliği daha yüksek abonelik ücretleri ödemeye istekli belirli müşteri gruplarıyla kısıtlayın.
- Bir sorun özelliğini hızla devre dışı bırakarak, geri alma veya anında düzeltme risklerinden kaçınarak sistemi kararlı hale getirme.
- Yoğun kullanım dönemlerinde yüksek kaynak tüketimine sahip isteğe bağlı bir özelliği devre dışı bırakın.
experimental feature releases
Fizibiliteyi ve popülerliği doğrulamak için küçük kullanıcı segmentlerine iletin.
Özellik bayrakları da geliştirmeyi teşvik eder trunk-based
. Geliştiricilerin tek bir daldaki özellikler üzerinde işbirliği yaptığı bir kaynak denetimi dallama modelidir. Bu yaklaşım, çok sayıda uzun süre çalışan özellik dalını birleştirme riskini ve karmaşıklığını en aza indirir. Özellikler etkinleştirilene kadar kullanılamaz.
Özellik bayraklarını uygulama
Temel olarak, özellik bayrağı basit decision object
bir öğesine başvurudur. veya off
boole durumunu on
döndürür. bayrağı genellikle bir özellik özelliğini kapsülleyen bir kod bloğunu sarmalar. Bayrağın durumu, bu kod bloğunun belirli bir kullanıcı için yürütülip yürütülmeyeceğini belirler. Şekil 10-11'de uygulama gösterilmektedir.
if (featureFlag) {
// Run this code block if the featureFlag value is true
} else {
// Run this code block if the featureFlag value is false
}
Şekil 10-11 - Basit özellik bayrağı uygulaması.
Bu yaklaşımın karar mantığını özellik kodundan nasıl ayırtığını unutmayın.
1. bölümde konusunu ele Twelve-Factor App
aldık. Kılavuz, yapılandırma ayarlarının uygulama yürütülebilir kodu dışında tutulmasını önerir. Gerektiğinde, ayarlar dış kaynaktan okunabilir. Özellik bayrağı yapılandırma değerleri de kod tabanından bağımsız olmalıdır. Bayrak yapılandırmasını ayrı bir depoda dışlaştırarak, uygulamayı değiştirmeden ve yeniden dağıtmadan bayrak durumunu değiştirebilirsiniz.
Azure Uygulaması Yapılandırması, özellik bayrakları için merkezi bir depo sağlar. Bununla birlikte, farklı türlerde özellik bayrakları tanımlar ve durumlarını hızlı ve güvenli bir şekilde işleyebilirsiniz. Özellik bayrağı işlevselliğini etkinleştirmek için Uygulama Yapılandırması istemci kitaplıklarını uygulamanıza eklersiniz. Çeşitli programlama dili çerçeveleri desteklenir.
Özellik bayrakları ASP.NET Core hizmetinde kolayca uygulanabilir. .NET Özellik Yönetimi kitaplıklarını ve Uygulama Yapılandırması sağlayıcısını yüklemek, kodunuza bildirimli olarak özellik bayrakları eklemenize olanak tanır. Kod tabanınızda if deyimlerini el ile yazmanız gerekmeyecek şekilde öznitelikleri etkinleştirir FeatureGate
.
Başlangıç sınıfınızda yapılandırıldıktan sonra, denetleyici, eylem veya ara yazılım düzeyinde özellik bayrağı işlevselliği ekleyebilirsiniz. Şekil 10-12'de denetleyici ve eylem uygulaması gösterilir:
[FeatureGate(MyFeatureFlags.FeatureA)]
public class ProductController : Controller
{
...
}
[FeatureGate(MyFeatureFlags.FeatureA)]
public IActionResult UpdateProductStatus()
{
return ObjectResult(ProductDto);
}
Şekil 10-12 - Denetleyici ve eylemde özellik bayrağı uygulaması.
Özellik bayrağı devre dışı bırakılırsa, kullanıcı yanıt gövdesi olmayan bir 404 (Bulunamadı) durum kodu alır.
Özellik bayrakları doğrudan C# sınıflarına da eklenebilir. Şekil 10-13'de özellik bayrağı ekleme gösterilmektedir:
public class ProductController : Controller
{
private readonly IFeatureManager _featureManager;
public ProductController(IFeatureManager featureManager)
{
_featureManager = featureManager;
}
}
Şekil 10-13 - Sınıfa özellik bayrağı ekleme.
Özellik Yönetimi kitaplıkları, arka planda özellik bayrağı yaşam döngüsünü yönetir. Örneğin, yapılandırma deposuna yapılan çok sayıda çağrıyı en aza indirmek için kitaplıklar belirtilen süre boyunca bayrak durumlarını önbelleğe alır. Bir istek çağrısı sırasında bayrak durumlarının değişmezliğini garanti edebilir. Ayrıca bir Point-in-time snapshot
de sunarlar. Herhangi bir anahtar-değerin geçmişini yeniden yapılandırabilir ve önceki yedi gün içinde herhangi bir anda geçmiş değerini sağlayabilirsiniz.