0Pricing
C# Academy · Pelajaran

Kebijakan Batas Waktu dan Cadangan

Batasi waktu tunggu dan sediakan cadangan yang anggun.

Kebijakan Batas Waktu dan Cadangan adalah pelajaran C# Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar C# Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C# Academy mencakup 4 pelajaran total.

Mengapa Batas Waktu Penting

Panggilan yang tidak pernah mengembalikan hasil lebih buruk daripada panggilan yang gagal: panggilan tersebut mengikat utas dan koneksi. Strategi batas waktu membatasi berapa lama operasi boleh berjalan sebelum Polly membatalkannya.

Menambahkan Batas Waktu

Polly v8 menyediakan AddTimeout. Ketika batas terlampaui, Polly melempar TimeoutRejectedException dan membatalkan token yang mendasarinya.

using Polly.Timeout;

var pipeline = new ResiliencePipelineBuilder()
    .AddTimeout(TimeSpan.FromSeconds(3))
    .Build();

Pembatalan Kooperatif

Batas waktu bekerja dengan membatalkan CancellationToken yang diteruskan ke panggilan balik Anda. Kode Anda harus mematuhi token tersebut agar batas waktu segera berlaku.

await pipeline.ExecuteAsync(async token =>
{
    // token is cancelled when the timeout fires
    await httpClient.GetAsync(url, token);
});

Merespons Batas Waktu

Gunakan TimeoutStrategyOptions dengan panggilan balik OnTimeout untuk mencatat atau mengirim metrik ketika operasi dihentikan sebelum selesai.

new TimeoutStrategyOptions
{
    Timeout = TimeSpan.FromSeconds(3),
    OnTimeout = args =>
    {
        Console.WriteLine($"Timed out after {args.Timeout}");
        return default;
    }
};

Apa Itu Pengganti?

Pengganti menyediakan hasil alternatif ketika operasi gagal, sehingga pengguna mendapatkan pengalaman yang tetap baik meski terbatas, bukan kesalahan: data cached, nilai bawaan, atau pesan yang ramah.

Menambahkan Strategi Pengganti

AddFallback memerlukan alur ketahanan bertipe. Anda menentukan kegagalan yang perlu ditangani dan nilai yang harus dikembalikan sebagai gantinya.

using Polly.Fallback;

var pipeline = new ResiliencePipelineBuilder<string>()
    .AddFallback(new FallbackStrategyOptions<string>
    {
        ShouldHandle = new PredicateBuilder<string>()
            .Handle<HttpRequestException>(),
        FallbackAction = args =>
            Outcome.FromResultAsValueTask("cached default")
    })
    .Build();

Mengembalikan Data cached sebagai Pengganti

Pola yang umum adalah menyajikan nilai terakhir yang diketahui baik dari singgahan ketika panggilan langsung gagal, sehingga aplikasi tetap responsif.

FallbackAction = args =>
{
    var cached = _cache.GetLastKnownGood();
    return Outcome.FromResultAsValueTask(cached);
}

Mengamati Pengganti

Panggilan balik OnFallback dijalankan ketika pengganti digunakan, sehingga ideal untuk mencatat bahwa jalur terbatas telah dipilih.

new FallbackStrategyOptions<string>
{
    FallbackAction = args => Outcome.FromResultAsValueTask("default"),
    OnFallback = args =>
    {
        Console.WriteLine("Fallback executed");
        return default;
    }
};

Batas Waktu dan Pengganti Bersama

Menggabungkan keduanya sangat bermanfaat: batas waktu membatasi waktu tunggu, sedangkan pengganti menyediakan nilai ketika batas waktu (atau kegagalan lain yang ditangani) terjadi, sehingga pemanggil tidak pernah menunggu tanpa akhir atau mengalami kerusakan.

Memilih Batas Waktu yang Wajar

Tetapkan batas waktu berdasarkan latensi realistis ditambah ruang cadangan, bukan nilai yang terlalu kecil secara sembarangan. Jika terlalu ketat, panggilan yang sehat akan gagal; jika terlalu longgar, tujuan batas waktu tidak tercapai.

Pengganti adalah Upaya Terakhir

Tempatkan pengganti sebagai strategi terluar agar dapat menangkap kegagalan dari percobaan ulang, pemutus sirkuit, dan batas waktu sekaligus, sehingga pemanggil selalu mendapatkan hasil yang dapat digunakan.

Pemeriksaan Singkat

Uji strategi batas waktu dan pengganti.

Rangkuman

Batas waktu membatasi durasi operasi dengan AddTimeout, membatalkan token, dan melempar TimeoutRejectedException (patuhi token tersebut!). Pengganti menyediakan hasil alternatif melalui AddFallback dengan FallbackAction, yang sering kali menyajikan data cached. Bersama-sama, keduanya menjaga aplikasi tetap responsif: batasi waktu tunggu, lalu berikan pengalaman yang tetap baik meski terbatas. Tempatkan pengganti di lapisan terluar agar menangkap semua kegagalan yang ditangani.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Kebijakan Batas Waktu dan Cadangan” gratis?

Ya — teks lengkap “Kebijakan Batas Waktu dan Cadangan” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C# Academy, upgrade ke CoddyKit PRO. Kursus C# Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Kebijakan Batas Waktu dan Cadangan”?

Batasi waktu tunggu dan sediakan cadangan yang anggun. Kamu berlatih C# Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai C# Academy?

Tidak diperlukan pengalaman sebelumnya. C# Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “Kebijakan Batas Waktu dan Cadangan” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran C# Academy ini?

Ya. Setiap pelajaran C# Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Kebijakan Percobaan Ulang
  2. Pola Pemutus Sirkuit
  3. Kebijakan Batas Waktu dan Cadangan
  4. Alur Ketahanan
← Kembali ke C# Academy