Bagikan melalui


Tutorial: Menggunakan konfigurasi dinamis dalam layanan latar belakang .NET

Data dari App Configuration dapat dimuat sebagai Pengaturan Aplikasi dalam aplikasi .NET. Untuk informasi selengkapnya, lihat Mulai Cepat. Namun, seperti yang dirancang oleh .NET, Pengaturan Aplikasi hanya dapat di-refresh saat aplikasi dimulai ulang. Penyedia Konfigurasi Aplikasi .NET adalah pustaka Standar .NET. Ini mendukung penyimpanan dalam cache dan penyegaran konfigurasi secara dinamis tanpa mengulang aplikasi. Tutorial ini menunjukkan bagaimana Anda dapat menerapkan pembaruan konfigurasi dinamis dalam layanan latar belakang .NET.

Dalam tutorial ini, Anda akan mempelajari cara:

  • Siapkan layanan latar belakang .NET Anda untuk memperbarui konfigurasinya sebagai respons terhadap perubahan dalam penyimpanan konfigurasi aplikasi.
  • Terapkan konfigurasi terbaru pada layanan latar belakang Anda.

Prasyarat

Menambahkan nilai kunci

Tambahkan nilai kunci berikut ke penyimpanan App Configuration dan biarkan Label dan Tipe Konten dengan nilai defaultnya. Untuk informasi selengkapnya tentang cara menambahkan nilai kunci ke penyimpanan menggunakan portal Azure atau CLI, buka Membuat nilai kunci.

Kunci Nilai
TestApp:Settings:Message Data dari konfigurasi aplikasi Azure

Membuat layanan latar belakang .NET

Anda menggunakan antarmuka baris perintah .NET (CLI) untuk membuat proyek aplikasi .NET baru. Keuntungan menggunakan .NET CLI melalui Visual Studio adalah tersedia di seluruh platform Windows, macOS, dan Linux. Atau, gunakan alat yang sudah terinstal sebelumnya yang tersedia di Azure Cloud Shell.

  1. Membuat folder baru untuk proyek Anda.

  2. Di folder baru, jalankan perintah berikut untuk membuat proyek layanan latar belakang .NET baru:

    dotnet new worker
    

Memuat ulang data dari Azure App Configuration

  1. Tambahkan referensi ke Microsoft.Extensions.Configuration.AzureAppConfiguration paket NuGet dengan menjalankan perintah berikut:

    dotnet add package Microsoft.Extensions.Configuration.AzureAppConfiguration
    
  2. Jalankan perintah berikut untuk memulihkan paket untuk proyek Anda:

    dotnet restore
    
  3. Buka Program.cs dan tambahkan pernyataan berikut:

    using Microsoft.Extensions.Configuration;
    using Microsoft.Extensions.Configuration.AzureAppConfiguration;
    
  4. Sambungkan ke App Configuration menggunakan ID Microsoft Entra (disarankan), atau string koneksi.

    Anda menggunakan DefaultAzureCredential untuk mengautentikasi ke penyimpanan App Configuration Anda. Ikuti instruksi untuk menetapkan kredensial Anda ke dalam peran Pembaca Data App Configuration. Pastikan untuk mengizinkan waktu yang memadai agar izin disebarluaskan sebelum menjalankan aplikasi Anda.

    // Existing code in Program.cs
    // ... ...
    
    var builder = Host.CreateApplicationBuilder(args);
    
    builder.Configuration.AddAzureAppConfiguration(options =>
    {
        string endpoint = Environment.GetEnvironmentVariable("Endpoint"); 
        options.Connect(new Uri(endpoint), new DefaultAzureCredential());
            // Load all keys that start with `TestApp:` and have no label.
            .Select("TestApp:*")
            // Reload configuration if any selected key-values have changed.
            .ConfigureRefresh(refreshOptions =>
            {
                refreshOptions.RegisterAll();
            });
    
        // Register the refresher so that the Worker service can consume it through DI
        builder.Services.AddSingleton(options.GetRefresher());
    });
    
    // The rest of existing code in Program.cs
    // ... ...
    

    Di dalam metode ConfigureRefresh, Anda memanggil metode RegisterAll untuk menginstruksikan penyedia App Configuration agar memuat ulang seluruh konfigurasi setiap kali mendeteksi perubahan pada salah satu nilai kunci yang dipilih (yang dimulai dengan TestApp: dan tidak memiliki label). Untuk informasi selengkapnya tentang memantau perubahan konfigurasi, lihat Praktik terbaik untuk refresh konfigurasi.

    Petunjuk / Saran

    Anda dapat menambahkan panggilan ke metode refreshOptions.SetRefreshInterval untuk menentukan waktu minimum antara pembaruan konfigurasi. Dalam contoh ini, Anda menggunakan nilai default 30 detik. Sesuaikan ke nilai yang lebih tinggi jika Anda perlu mengurangi jumlah permintaan yang dibuat ke toko Konfigurasi Aplikasi Anda.

  5. Buka Worker.cs. IConfiguration Masukkan dan IConfigurationRefresher ke Worker layanan dan catat data konfigurasi dari App Configuration.

    public class Worker : BackgroundService
    {
        private readonly ILogger<Worker> _logger;
        private readonly IConfiguration _configuration;
        private readonly IConfigurationRefresher _refresher;
    
        public Worker(ILogger<Worker> logger, IConfiguration configuration, IConfigurationRefresher refresher)
        {
            _logger = logger ?? throw new ArgumentNullException(nameof(logger));
            _configuration = configuration ?? throw new ArgumentNullException(nameof(configuration));
            _refresher = refresher ?? throw new ArgumentNullException(nameof(refresher));
        }
    
        protected override async Task ExecuteAsync(CancellationToken stoppingToken)
        {
            while (!stoppingToken.IsCancellationRequested)
            {
                // Intentionally not await TryRefreshAsync to avoid blocking the execution.
                _refresher.TryRefreshAsync(stoppingToken);
    
                if (_logger.IsEnabled(LogLevel.Information))
                {
                    _logger.LogInformation(_configuration["TestApp:Settings:Message"] ?? "No data.");
                }
    
                await Task.Delay(TimeSpan.FromSeconds(30), stoppingToken);
            }
        }
    }
    

    Memanggil metode ConfigureRefresh saja tidak akan menyebabkan konfigurasi di-refresh secara otomatis. Anda memanggil metode TryRefreshAsync dari antarmuka IConfigurationRefresher untuk memicu refresh. Desain ini untuk menghindari permintaan yang dikirim ke App Configuration bahkan ketika aplikasi Anda menganggur. Anda dapat menyertakan panggilan TryRefreshAsync di mana Anda menganggap aplikasi Anda aktif. Misalnya, saat Anda memproses pesan masuk, pesanan, atau pengulangan tugas yang kompleks. Panggilan juga dapat berada dalam timer jika aplikasi Anda aktif sepanjang waktu. Dalam contoh ini, Anda memanggil TryRefreshAsync setiap kali layanan latar belakang dijalankan. Perhatikan bahwa, meskipun panggilan TryRefreshAsync gagal karena alasan apa pun, aplikasi Anda akan terus menggunakan konfigurasi yang di-cache. Upaya lain akan dilakukan ketika interval refresh yang dikonfigurasi telah berlalu dan TryRefreshAsync panggilan dipicu oleh aktivitas aplikasi Anda lagi. TryRefreshAsync Panggilan adalah no-op sebelum interval refresh yang dikonfigurasi berlalu, sehingga dampak performanya minimal, bahkan jika sering dipanggil.

Membangun dan menjalankan aplikasi secara lokal

  1. Atur variabel lingkungan.

    Atur variabel lingkungan bernama Titik Akhir ke titik akhir penyimpanan App Configuration Anda yang ditemukan di bawah Gambaran Umum penyimpanan Anda di portal Azure.

    Jika Anda menggunakan perintah Windows, jalankan perintah berikut dan hidupkan ulang perintah untuk memungkinkan perubahan berlaku:

    setx Endpoint "<endpoint-of-your-app-configuration-store>"
    

    Jika Anda menggunakan PowerShell, jalankan perintah berikut:

    $Env:Endpoint = "<endpoint-of-your-app-configuration-store>"
    

    Jika Anda menggunakan macOS atau Linux, jalankan perintah berikut:

    export Endpoint='<endpoint-of-your-app-configuration-store>'
    
  2. Jalankan perintah berikut untuk membangun aplikasi.

    dotnet build
    
  3. Setelah build berhasil diselesaikan, jalankan perintah berikut untuk menjalankan aplikasi secara lokal.

    dotnet run
    
  4. Anda akan melihat output berikut di konsol.

    Cuplikan layar layanan latar belakang.

  5. Di portal Microsoft Azure, navigasikan ke Penjelajah konfigurasi penyimpanan App Configuration, dan perbarui nilai kunci berikut.

    Kunci Nilai
    TestApp:Settings:Message Data dari Azure App Configuration - Diperbarui
  6. Tunggu beberapa saat agar jangka waktu penyegaran berakhir. Anda akan melihat output konsol berubah.

    Cuplikan layar layanan latar belakang yang disegarkan.

Membersihkan sumber daya

Jika Anda tidak ingin terus menggunakan sumber daya yang dibuat dalam artikel ini, hapus grup sumber daya yang Anda buat di sini untuk menghindari biaya.

Penting

Penghapusan grup sumber daya tidak bisa dipulihkan. Grup sumber daya dan semua sumber daya yang ada di dalamnya akan dihapus secara permanen. Pastikan Anda tidak menghapus grup atau sumber daya yang salah secara tidak sengaja. Jika Anda membuat sumber daya untuk artikel ini dalam grup sumber daya yang ada yang berisi sumber daya lain yang ingin disimpan, hapus setiap sumber daya satu per satu dari panelnya masing-masing, bukan menghapus grup sumber daya.

  1. Masuk ke portal Azure, lalu pilih Grup sumber daya.
  2. Dalam kotak Filter menurut nama, masukkan nama grup sumber daya Anda.
  3. Dalam daftar hasil, pilih nama grup sumber daya untuk melihat gambaran umum.
  4. Pilih Hapus grup sumber daya.
  5. Anda akan diminta untuk mengonfirmasi penghapusan grup sumber daya. Masukkan nama grup sumber daya Anda untuk mengonfirmasi, dan pilih Hapus.

Setelah beberapa saat, grup sumber daya dan semua sumber dayanya akan dihapus.

Langkah berikutnya

Dalam tutorial ini, Anda mengaktifkan layanan latar belakang .NET untuk menyegarkan pengaturan konfigurasi secara dinamis dari App Configuration. Untuk mempelajari cara mengaktifkan konfigurasi dinamis dalam Aplikasi Web ASP.NET, lanjutkan ke tutorial berikutnya:

Untuk mempelajari cara menggunakan identitas terkelola Azure guna mempermudah akses ke App Configuration, lanjutkan ke tutorial berikutnya: