Proxy vasitəsilə gedən .NET HttpClient sorğusunu son tarix tokeni ilə ləğv edin
Yalnız çağıranın gözləməsini bitirmək əvəzinə, proxy son tarixi bitdikdə şəbəkə əməliyyatının özünü ləğv edin.
Son tarixi şəbəkə işini ləğv edə bilən əməliyyata ötürün. Proxy ilə konfiqurasiya edilmiş mövcud .NET HttpClient üçün:
using var deadline = new CancellationTokenSource(TimeSpan.FromSeconds(20));
using var response = await client.GetAsync(uri, deadline.Token);Tətbiq client və uri təqdim edir. Bu həddindən artıq yükləmə ləğvetmə tokenini alır; onun tapşırığını gözləmək ətrafındakı zaman aşımı yalnız həmin çağıranın gözləməsini məhdudlaşdırır. Tamamlanma bayrağını yoxlamağın da eyni problemi var: çağıran çıxıb gedə bilər, soketlər və işçi axınlar isə məşğul qalır.
Ləğvetmə müştərinin tətbiqinə və təmizləmə yoluna uyğun gedir. Hər aşağı səviyyəli hərəkətin dəqiq bir təlimatda dayanacağına söz vermir. O yolun bitməsinə icazə verin və əməliyyatın sahib olduğu resursları sərbəst buraxın. Dizayna ayrıca idarə olunan body oxunuşunu daxil edin; müasir .NET ResponseHeadersRead əməliyyatı üçün eyni tokeni body oxunuşundan keçirin. Digər müştərilər öz ləğvetmə, abort və təmizləmə interfeyslərini təqdim edir.
Yenidən cəhd əvvəlki cəhd üçün nəticə tələb edir. Onun identifikatorunu və seçilmiş proxy-ni saxlayın, lazım olduqda ləğvetmə tələb edin və əvəzləri sonsuz başladarkən tapşırığı itirməkdən çəkinin. Əks halda yavaş endpoint tətbiqin buraxdığından daha sürətli iş yığa bilər.
Uzaq nəticə ayrıca idarə olunmalıdır. Ləğvetmə baş verərkən təyinat artıq göndərişi almış ola bilər. Tətbiqin bərpa və ya idempotentlik siyasətindən istifadə edin; yerli işin dayandırılması uzaq əməliyyatı geri qaytarmır.