0Pricing
C# Academy · درس

مسارات المرونة

ادمجوا الاستراتيجيات في مسارات للمرونة

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

تركيب الاستراتيجيات

تحتاج المرونة الحقيقية عادةً إلى عمل عدة استراتيجيات معًا. تتيح لكم Polly v8 تركيبها في خط أنابيب مرونة واحد باستخدام ResiliencePipelineBuilder.

‏ResiliencePipelineBuilder

تتسلسلون استدعاءات Add... وتنهونها باستخدام Build(). والنتيجة هي ResiliencePipeline قابل لإعادة الاستخدام وآمن لمؤشرات الترابط، تنفذون الاستدعاءات من خلاله.

var pipeline = new ResiliencePipelineBuilder()
    .AddRetry(new RetryStrategyOptions())
    .AddTimeout(TimeSpan.FromSeconds(5))
    .Build();

الترتيب مهم

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

var pipeline = new ResiliencePipelineBuilder()
    .AddTimeout(TimeSpan.FromSeconds(10))      // overall
    .AddRetry(new RetryStrategyOptions())
    .AddCircuitBreaker(new CircuitBreakerStrategyOptions())
    .AddTimeout(TimeSpan.FromSeconds(2))       // per attempt
    .Build();

خطوط الأنابيب ذات الأنواع

عندما تفحص الاستراتيجيات النتيجة، مثل البديل الاحتياطي أو إعادة المحاولة المستندة إلى النتيجة، استخدموا ResiliencePipelineBuilder<T> العام حتى يعرف خط الأنابيب نوع القيمة المرجعة.

var pipeline = new ResiliencePipelineBuilder<HttpResponseMessage>()
    .AddRetry(new HttpRetryStrategyOptions())
    .Build();

التنفيذ مع الحالة

لتجنب إنشاء الكائنات المغلقة، مرّروا الحالة إلى ExecuteAsync؛ إذ تعيدها Polly إلى الاستدعاء التلقائي لديكم.

await pipeline.ExecuteAsync(
    static async (state, token) => await state.CallAsync(token),
    myService);

‏ResiliencePipelineProvider

بدلًا من إنشاء خطوط الأنابيب داخل الكود، سجّلوا خطوط أنابيب مسماة في DI واسترجعوها عبر ResiliencePipelineProvider. وهذا يوحّد إعدادها في مكان مركزي.

builder.Services.AddResiliencePipeline("db", pipeline =>
{
    pipeline.AddRetry(new RetryStrategyOptions())
            .AddTimeout(TimeSpan.FromSeconds(3));
});

استرجاع خط أنابيب مسمى

أدخلوا ResiliencePipelineProvider<string> واعثروا على خط الأنابيب باستخدام مفتاحه أينما احتجتم إليه.

public class OrderService
{
    private readonly ResiliencePipeline _pipeline;
    public OrderService(ResiliencePipelineProvider<string> provider)
    {
        _pipeline = provider.GetPipeline("db");
    }
}

المرونة مع HttpClient

يربط ملحق AddResilienceHandler خط أنابيب بـ HttpClient ذي النوع أو المسمى، ويطبقه على كل طلب صادر.

builder.Services.AddHttpClient<CatalogClient>()
    .AddResilienceHandler("catalog", b =>
    {
        b.AddRetry(new HttpRetryStrategyOptions());
        b.AddCircuitBreaker(new HttpCircuitBreakerStrategyOptions());
    });

معالج المرونة القياسي

توفر Microsoft معالجًا متكاملًا AddStandardResilienceHandler يجمع إعادة المحاولة وقاطع الدائرة والمهلة الزمنية وتحديد معدل الطلبات بإعدادات معقولة وبالترتيب الموصى به.

builder.Services.AddHttpClient<CatalogClient>()
    .AddStandardResilienceHandler();

خطوط الأنابيب قابلة لإعادة الاستخدام وفعالة

أنشئوا خط الأنابيب مرة واحدة وأعيدوا استخدامه في عمليات تنفيذ كثيرة. فهي غير قابلة للتغيير وآمنة لمؤشرات الترابط، لذا فإن مشاركتها آمنة وفعالة في الوقت نفسه.

خطافات قابلية المراقبة

توفر كل استراتيجية استدعاءات مثل OnRetry وOnOpened وOnTimeout وOnFallback، كما تُصدر Polly بيانات قياس عن بُعد يمكنكم ربطها بالتسجيل والمقاييس للحصول على رؤية كاملة.

تحقق سريع

اختبروا خطوط أنابيب المرونة.

مراجعة

يركّب ResiliencePipelineBuilder إعادة المحاولة وقاطع الدائرة والمهلة الزمنية والبديل الاحتياطي في خط أنابيب واحد قابل لإعادة الاستخدام؛ ويُنفذ الترتيب من الخارج إلى الداخل، لذلك فهو مهم. استخدموا المنشئ العام للاستراتيجيات التي تراعي النتائج، وسجّلوا خطوط الأنابيب المسماة باستخدام AddResiliencePipeline واسترجعوها عبر ResiliencePipelineProvider. وبالنسبة إلى HTTP، يحمي AddResilienceHandler أو AddStandardResilienceHandler كل طلب.

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

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

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

ماذا ستتعلم في «مسارات المرونة»؟

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

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

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

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

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

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

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

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

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