0Pricing
C# Academy · درس

سياسات المهلة والقيم البديلة

حدّدوا فترات الانتظار وقدّموا بدائل سلسة

سياسات المهلة والقيم البديلة درس مجاني في C# Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في C# Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة C# Academy 4 دروس في المجموع.

لماذا تهم المهلات الزمنية؟

الاستدعاء الذي لا يعود أبدًا أسوأ من الاستدعاء الذي يفشل؛ فهو يشغل مؤشرات الترابط والاتصالات. تحدد استراتيجية المهلة الزمنية الحد الأقصى لمدة تشغيل العملية قبل أن تلغيها Polly.

إضافة مهلة زمنية

توفر Polly v8 الدالة AddTimeout. وعند تجاوز الحد، تُلقي TimeoutRejectedException وتلغي الرمز المميز الأساسي.

using Polly.Timeout;

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

الإلغاء التعاوني

تعمل المهلة الزمنية من خلال إلغاء CancellationToken المُمرر إلى الاستدعاء التلقائي لديكم. ويجب أن يحترم الكود ذلك الرمز المميز حتى تسري المهلة بسرعة.

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

التفاعل مع المهلات الزمنية

استخدموا TimeoutStrategyOptions مع استدعاء OnTimeout لتسجيل الحالات أو إصدار المقاييس عندما يتم إيقاف عملية قبل اكتمالها.

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

ما هو البديل الاحتياطي؟

يوفر البديل الاحتياطي نتيجة بديلة عند فشل العملية، حتى يحصل المستخدم على تجربة متدهورة بطريقة سلسة بدلًا من ظهور خطأ: مثل بيانات مخزنة مؤقتًا، أو قيمة افتراضية، أو رسالة ودية.

إضافة استراتيجية البديل الاحتياطي

تحتاج AddFallback إلى خط أنابيب ذي نوع محدد. وتحددون حالات الفشل التي يجب التعامل معها والقيمة التي يجب إرجاعها بدلًا منها.

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();

إرجاع البيانات المخزنة مؤقتًا كبديل احتياطي

من الأنماط الشائعة تقديم آخر قيمة معروفة وسليمة من ذاكرة التخزين المؤقت عند فشل الاستدعاء المباشر، مما يحافظ على استجابة التطبيق.

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

مراقبة البدائل الاحتياطية

يُستدعى OnFallback عند تشغيل البديل الاحتياطي، مما يجعله مناسبًا لتسجيل الانتقال إلى مسار متدهور.

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

استخدام المهلة والبديل الاحتياطي معًا

يُعد دمجهما قويًا: تحدد المهلة مدة الانتظار، ويوفر البديل الاحتياطي قيمة عند حدوث المهلة، أو أي فشل آخر تتم معالجته، لذلك لا يظل المستدعون عالقين ولا يتعرضون لانهيار.

اختيار مهلات زمنية معقولة

اضبطوا المهلات استنادًا إلى زمن استجابة واقعي مع هامش مناسب، لا إلى قيم صغيرة اعتباطية. فإذا كانت المهلة ضيقة جدًا، ستفشل الاستدعاءات السليمة؛ وإذا كانت واسعة جدًا، فقد أبطلت الغرض منها.

البديل الاحتياطي هو الملاذ الأخير

ضعوا البديل الاحتياطي كاستراتيجية خارجية، حتى يتمكن من التقاط حالات الفشل الناتجة عن إعادة المحاولة والقواطع والمهلات الزمنية على حد سواء، مما يضمن حصول المستدعي دائمًا على نتيجة قابلة للاستخدام.

تحقق سريع

اختبروا استراتيجيات المهلة الزمنية والبديل الاحتياطي.

مراجعة

تحد المهلات الزمنية مدة العملية باستخدام AddTimeout، فتُلغي الرمز المميز وتُلقي TimeoutRejectedException، لذا احترموا الرمز المميز. توفر البدائل الاحتياطية نتائج بديلة عبر AddFallback مع FallbackAction، وغالبًا ما تقدم بيانات مخزنة مؤقتًا. ويحافظ الجمع بينهما على استجابة التطبيقات: حدّدوا مدة الانتظار، ثم تعاملوا مع الفشل بسلاسة. ضعوا البديل الاحتياطي في الخارج حتى يلتقط جميع حالات الفشل التي تتم معالجتها.

الأسئلة الشائعة

هل درس «سياسات المهلة والقيم البديلة» مجاني؟

نعم — نص درس «سياسات المهلة والقيم البديلة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة C# Academy، انتقل إلى CoddyKit PRO. تتضمن دورة C# Academy 4 دروس في المجموع.

ماذا ستتعلم في «سياسات المهلة والقيم البديلة»؟

حدّدوا فترات الانتظار وقدّموا بدائل سلسة تتمرن على C# Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ C# Academy؟

لا تُشترط خبرة سابقة. C# Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «سياسات المهلة والقيم البديلة»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس C# Academy هذا؟

نعم. كل درس في C# Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. سياسات إعادة المحاولة
  2. نمط قاطع الدائرة
  3. سياسات المهلة والقيم البديلة
  4. مسارات المرونة
← العودة إلى C# Academy