นโยบายหมดเวลาและค่าทดแทน
จำกัดเวลารอและจัดเตรียมค่าทดแทนอย่างเหมาะสม
นโยบายหมดเวลาและค่าทดแทน เป็นบทเรียน C# Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 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 ต้องใช้ pipeline แบบระบุชนิด คุณกำหนดว่าความล้มเหลวใดที่ต้องจัดการ และจะส่งคืนค่าใดแทน
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 โดยมักส่งข้อมูลจากแคช การใช้ทั้งสองอย่างร่วมกันช่วยให้แอปพลิเคชันยังตอบสนองได้ดี คือจำกัดเวลารอแล้วลดระดับการทำงานอย่างเหมาะสม วางทางเลือกสำรองไว้ชั้นนอกสุดเพื่อให้จับความล้มเหลวที่ต้องจัดการได้ทั้งหมด
คำถามที่พบบ่อย
บทเรียน “นโยบายหมดเวลาและค่าทดแทน” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “นโยบายหมดเวลาและค่าทดแทน” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส C# Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส C# Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “นโยบายหมดเวลาและค่าทดแทน”
จำกัดเวลารอและจัดเตรียมค่าทดแทนอย่างเหมาะสม คุณปฏิบัติ C# Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน C# Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน C# Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “นโยบายหมดเวลาและค่าทดแทน” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน C# Academy นี้ได้ไหม
ได้ บทเรียน C# Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- นโยบายการลองใหม่
- รูปแบบตัวตัดวงจร
- นโยบายหมดเวลาและค่าทดแทน
- ไปป์ไลน์ความทนทาน