Ժամկետը փոխանցեք այն գործողությանը, որը կարող է չեղարկել ցանցային աշխատանքը։ Գոյություն ունեցող .NET HttpClient-ի համար, որը կարգավորված է վստահված սերվերի միջոցով՝

using var deadline = new CancellationTokenSource(TimeSpan.FromSeconds(20));
using var response = await client.GetAsync(uri, deadline.Token);

Ծրագիրը տրամադրում է client և uri։ Այս գերբեռնումը ստանում է չեղարկման թոքենը. նրա առաջադրանքի սպասման շուրջ եղած ժամկետը կսահմանափակի միայն այդ կանչողի սպասումը։ Ավարտման դրոշի հարցումն ունի նույն խնդիրը. կանչողը կարող է հեռանալ, մինչ սոքեթներն ու աշխատողները զբաղված են մնում։

Չեղարկումը հետևում է հաճախորդի իրականացմանը և մաքրման ուղուն։ Այն չի խոստանում, որ յուրաքանչյուր ցածր մակարդակի գործողություն կկանգնի ճշգրիտ հրահանգի վրա։ Թույլ տվեք այդ ուղուն ավարտվել և ազատեք գործողությանը պատկանող ռեսուրսները։ Դիզայնում ներառեք առանձին կառավարվող մարմնի ընթերցում. ժամանակակից .NET ResponseHeadersRead գործողության համար փոխանցեք նույն թոքենը մարմնի ընթերցման միջոցով։ Այլ հաճախորդներ տրամադրում են իրենց չեղարկման, ընդհատման և մաքրման ինտերֆեյսները։

Կրկնվող փորձը պահանջում է արդյունք նախորդ փորձի համար։ Պահեք դրա նույնացուցիչը և ընտրված վստահված սերվերը, պահանջեք չեղարկում, երբ անհրաժեշտ է, և խուսափեք առաջադրանքը կորցնելուց՝ անվերջ փոխարինողներ սկսելիս։ Հակառակ դեպքում դանդաղ վերջնակետը կարող է աշխատանք կուտակել ավելի արագ, քան ծրագիրը ազատում է այն։

Հեռավոր արդյունքը պահանջում է առանձին մշակում։ Հնարավոր է, որ նպատակակետն արդեն ստացել է ուղարկում, երբ տեղի է ունենում չեղարկումը։ Օգտագործեք ծրագրի վերականգնման կամ idempotency քաղաքականությունը. տեղական աշխատանքը դադարեցնելը չի չեղարկում հեռավոր գործողությունը։

Առնչվող հոդվածներ