Aracılığıyla paylaş


Hızlı Başlangıç: Azure İşlevleri uygulamasına özellik bayrakları ekleme

Bu hızlı başlangıçta bir Azure İşlevleri C# kod projesi oluşturacak ve içinde özellik bayrakları kullanacaksınız. Tüm özellik bayraklarınızı merkezi olarak depolamak ve durumlarını denetlemek için Azure Uygulaması Yapılandırması'ndan özellik yönetimini kullanırsınız.

.NET Özellik Yönetimi kitaplıkları, çerçeveyi özellik bayrağı desteğiyle genişletir. Bu kitaplıklar .NET yapılandırma sisteminin üzerinde oluşturulur. .NET yapılandırma sağlayıcısı aracılığıyla Uygulama Yapılandırması ile tümleşir.

Not

Bu makale şu anda yalnızca .NET 6 üzerinde çalışan C# işlem içi işlev uygulamalarını destekler.

Önkoşullar

Özellik bayrağı ekleme

Uygulama Yapılandırması deposuna Beta adlı bir özellik bayrağı ekleyin ve Etiket ve Açıklama değerlerini varsayılan değerleriyle bırakın. Azure portalını veya CLI'yı kullanarak bir depoya özellik bayrakları ekleme hakkında daha fazla bilgi için Özellik bayrağı oluşturma bölümüne gidin.

Beta adlı özellik bayrağını etkinleştir

İşlevler projesi oluşturma

Visual Studio'daki Azure İşlevleri proje şablonu, Azure'daki bir işlev uygulamasına yayımlayabileceğiniz bir C# sınıf kitaplığı projesi oluşturur. İşlevleri daha kolay yönetim, dağıtım, ölçeklendirme ve kaynakların paylaşımı için mantıksal birim olarak gruplandırmak için işlev uygulamasını kullanabilirsiniz.

  1. Visual Studio menüsünden Dosya>Yeni Proje'yi> seçin.

  2. Yeni proje oluştur'da, arama kutusuna işlevler yazın, Azure İşlevleri şablonunu seçin ve ardından İleri'yi seçin.

  3. Yeni projenizi yapılandırın bölümünde projeniz için bir Proje adı girin ve Oluştur'u seçin. İşlev uygulamasının adı, bir C# ad alanı olarak geçerli olmalıdır; bu nedenle alt çizgi, kısa çizgi veya alfasayısal olmayan herhangi bir karakter kullanmayın.

  4. Yeni Azure İşlevleri uygulama oluştur ayarları için aşağıdaki tabloda yer alan değerleri kullanın:

    Ayar Value Açıklama
    .NET sürümü .NET 6 Bu değer, Azure İşlevleri çalışma zamanının 4.x sürümüyle işlem içinde çalışan bir işlev projesi oluşturur. Daha fazla bilgi için bkz. Azure İşlevleri çalışma zamanı sürümlerine genel bakış.
    İşlev şablonu HTTP tetikleyicisi Bu değer, HTTP isteği tarafından tetiklenen bir işlev oluşturur.
    Depolama hesabı (AzureWebJobsStorage) Depolama öykünücüsü Azure'daki bir işlev uygulaması için depolama hesabı gerektiğinden, projenizi Azure'da yayımladığınızda bir uygulama atanır veya oluşturulur. HTTP tetikleyicisi bağlantı dizesi Bir Azure Depolama hesabı kullanmaz; diğer tüm tetikleyici türleri için geçerli bir Azure Depolama hesabı bağlantı dizesi gerekir.
    Yetkilendirme düzeyi Anonim Oluşturulan işlev, anahtar gerektirmeden herhangi bir istemci tarafından tetiklenebilir. Bu yetkilendirme ayarı yeni işlevinizi test etmenizi kolaylaştırır. Anahtarlar ve yetkilendirme hakkında daha fazla bilgi için bkz . Yetkilendirme anahtarları ve HTTP ve web kancası bağlamaları.

    Azure İşlevleri proje ayarlarının ekran görüntüsü


    Yetkilendirme düzeyini Anonim olarak ayarladığınızdan emin olun. varsayılan İşlev düzeyini seçerseniz işlev uç noktanıza erişme isteklerinde işlev anahtarını sunmanız gerekir.

  5. İşlev projesini ve HTTP tetikleyici işlevini oluşturmak için Oluştur'u seçin.

Uygulama Yapılandırması deposuna bağlanma

Bu proje .NET Azure İşlevleri'de bağımlılık ekleme özelliğini kullanacaktır. özellik bayraklarınızın depolandığı ek bir yapılandırma kaynağı olarak Azure Uygulaması Yapılandırması ekler.

  1. Projenize sağ tıklayın ve NuGet Paketlerini Yönet'i seçin. Gözat sekmesinde aşağıdaki NuGet paketlerini arayın ve projenize ekleyin.

  2. Aşağıdaki kodla Startup.cs yeni bir dosya ekleyin. Soyut sınıfını uygulayan FunctionsStartup adlı Startup bir sınıf tanımlar. Derleme özniteliği, Azure İşlevleri başlatma sırasında kullanılan tür adını belirtmek için kullanılır.

    using System;
    using Microsoft.Azure.Functions.Extensions.DependencyInjection;
    using Microsoft.Extensions.Configuration;
    using Microsoft.FeatureManagement;
    
    [assembly: FunctionsStartup(typeof(FunctionApp.Startup))]
    
    namespace FunctionApp
    {
        class Startup : FunctionsStartup
        {
            public override void ConfigureAppConfiguration(IFunctionsConfigurationBuilder builder)
            {
            }
    
            public override void Configure(IFunctionsHostBuilder builder)
            {
            }
        }
    }
    
  3. yöntemini güncelleştirin ConfigureAppConfiguration ve çağırarak AddAzureAppConfiguration()Azure Uygulaması Yapılandırma sağlayıcısını ek yapılandırma kaynağı olarak ekleyin.

    UseFeatureFlags() yöntemi, sağlayıcıya özellik bayraklarını yüklemesini söyler. Tüm özellik bayraklarının, değişiklikleri yeniden denetlemeden önce varsayılan önbellek süre sonu 30 saniyedir. Sona erme aralığı, yöntemine FeatureFlagsOptions.CacheExpirationInterval UseFeatureFlags geçirilen özellik ayarlanarak güncelleştirilebilir.

    public override void ConfigureAppConfiguration(IFunctionsConfigurationBuilder builder)
    {
        builder.ConfigurationBuilder.AddAzureAppConfiguration(options =>
        {
            options.Connect(Environment.GetEnvironmentVariable("ConnectionString"))
                   .Select("_")
                   .UseFeatureFlags();
        });
    }
    

    İpucu

    Uygulamanıza özellik bayrakları dışında bir yapılandırmanın yüklenmesini istemiyorsanız, yalnızca var olmayan bir kukla anahtarı "_"yüklemek için öğesini çağırabilirsinizSelect("_"). Varsayılan olarak, hiçbir yöntem çağrılmazsa Select Uygulama Yapılandırması deponuzdaki tüm yapılandırma anahtar değerleri yüklenir.

  4. Configure Azure Uygulaması Yapılandırma hizmetlerini ve özellik yöneticisini bağımlılık ekleme yoluyla kullanılabilir hale getirmek için yöntemini güncelleştirin.

    public override void Configure(IFunctionsHostBuilder builder)
    {
        builder.Services.AddAzureAppConfiguration();
        builder.Services.AddFeatureManagement();
    }
    
  5. Function1.cs açın ve aşağıdaki ad alanlarını ekleyin.

    using System.Linq;
    using Microsoft.FeatureManagement;
    using Microsoft.Extensions.Configuration.AzureAppConfiguration;
    

    bağımlılık ekleme yoluyla ve IConfigurationRefresherProvider örneklerini _featureManagerSnapshot almak için kullanılan bir oluşturucu ekleyin. ' IConfigurationRefresherProviderden örneğini IConfigurationRefresherelde edebilirsiniz.

    private readonly IFeatureManagerSnapshot _featureManagerSnapshot;
    private readonly IConfigurationRefresher _configurationRefresher;
    
    public Function1(IFeatureManagerSnapshot featureManagerSnapshot, IConfigurationRefresherProvider refresherProvider)
    {
        _featureManagerSnapshot = featureManagerSnapshot;
        _configurationRefresher = refresherProvider.Refreshers.First();
    }
    
  6. Özellik bayrağının Run durumuna bağlı olarak görüntülenen iletinin değerini değiştirmek için yöntemini güncelleştirin.

    TryRefreshAsync özellik bayraklarını yenilemek için İşlevler çağrısının başında yöntemi çağrılır. Önbellek süre sonu penceresine ulaşılamazsa işlem yapılmaz. await Özellik bayraklarının geçerli İşlevler çağrısını engellemeden yenilenmesini tercih ediyorsanız işlecini kaldırın. Bu durumda, daha sonra İşlevler çağrıları güncelleştirilmiş değer alır.

    [FunctionName("Function1")]
    public async Task<IActionResult> Run(
        [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
        ILogger log)
    {
        log.LogInformation("C# HTTP trigger function processed a request.");
    
        await _configurationRefresher.TryRefreshAsync();
    
        string message = await _featureManagerSnapshot.IsEnabledAsync("Beta")
                ? "The Feature Flag 'Beta' is turned ON"
                : "The Feature Flag 'Beta' is turned OFF";
    
        return (ActionResult)new OkObjectResult(message);
    }
    

İşlevi yerel olarak test etme

  1. ConnectionString adlı bir ortam değişkeni ayarlayın; burada değer, erişim anahtarları altında daha önce Uygulama Yapılandırması deponuzda aldığınız bağlantı dizesi. Windows komut istemini kullanıyorsanız, aşağıdaki komutu çalıştırın ve değişikliğin etkili olması için komut istemini yeniden başlatın:

        setx ConnectionString "connection-string-of-your-app-configuration-store"
    

    Windows PowerShell kullanıyorsanız aşağıdaki komutu çalıştırın:

        $Env:ConnectionString = "connection-string-of-your-app-configuration-store"
    

    macOS veya Linux kullanıyorsanız aşağıdaki komutu çalıştırın:

        export ConnectionString='connection-string-of-your-app-configuration-store'
    
  2. İşlevinizi test etmek için F5 tuşuna basın. İstenirse Visual Studio'dan Azure İşlevleri Core (CLI) araçlarını indirme ve yükleme isteğini kabul edin. Araçların HTTP isteklerini işleyebilmesi için bir güvenlik duvarı özel durumunu etkinleştirmeniz de gerekebilir.

  3. Azure İşlevleri çalışma zamanı çıktısından işlevinizin URL'sini kopyalayın.

    VS'de Hızlı Başlangıç İşlevi hata ayıklaması

  4. HTTP isteğinin URL’sini tarayıcınızın adres çubuğuna yapıştırın. Aşağıdaki görüntüde Beta özellik bayrağının devre dışı bırakıldığını belirten yanıt gösterilmektedir.

    Hızlı Başlangıç İşlevi özellik bayrağı devre dışı

  5. Azure Portal’ında oturum açın. Tüm kaynaklar'ı seçin ve oluşturduğunuz Uygulama Yapılandırması depoyu seçin.

  6. Özellik yöneticisi'ni seçin ve Beta anahtarının durumunu Açık olarak değiştirin.

  7. Tarayıcıyı birkaç kez yenileyin. Yenileme aralığı zaman penceresi geçtiğinde, sayfa aşağıdaki resimde gösterildiği gibi Beta özellik bayrağının açık olduğunu gösterecek şekilde değişir.

    Hızlı Başlangıç İşlevi özellik bayrağı etkin

Not

Bu öğreticide kullanılan örnek kod Azure Uygulaması Configuration GitHub deposundan indirilebilir.

Kaynakları temizleme

Bu makalede oluşturulan kaynakları kullanmaya devam etmek istemiyorsanız ücretlerden kaçınmak için burada oluşturduğunuz kaynak grubunu silin.

Önemli

Silinen kaynak grupları geri alınamaz. Kaynak grubu ve içindeki tüm kaynaklar kalıcı olarak silinir. Yanlış kaynak grubunu veya kaynakları yanlışlıkla silmediğinizden emin olun. Bu makalenin kaynaklarını, saklamak istediğiniz diğer kaynakları içeren bir kaynak grubu içinde oluşturduysanız, kaynak grubunu silmek yerine her kaynağı ilgili bölmeden tek tek silin.

  1. Azure portalında oturum açın ve Kaynak grupları'nı seçin.
  2. Ada göre filtrele kutusuna kaynak grubunuzun adını girin.
  3. Genel bir bakış görmek için sonuç listesinde kaynak grubu adını seçin.
  4. Kaynak grubunu sil'i seçin.
  5. Kaynak grubunun silinmesini onaylamanız istenir. Onaylamak için kaynak grubunuzun adını girin ve Sil'i seçin.

Birkaç dakika sonra kaynak grubu ve tüm kaynakları silinir.

Sonraki adımlar

Bu hızlı başlangıçta bir özellik bayrağı oluşturdunuz ve bunu bir Azure İşlevleri ile kullandınız.

Diğer uygulama türleri için özellik yönetimi özelliğini etkinleştirmek için aşağıdaki öğreticilere geçin.

Azure Uygulaması Yapılandırması'nda özellik bayraklarını yönetme hakkında daha fazla bilgi edinmek için aşağıdaki öğreticiye geçin.

.NET özellik yönetimi kitaplığının tam özellik çalıştırması için aşağıdaki belgeye geçin.