ଡେଡଲାଇନ୍ ଟୋକେନ୍ ସହିତ ପ୍ରକ୍ସି ମାଧ୍ୟମରେ .NET HttpClient ଅନୁରୋଧ ବାତିଲ୍ କରନ୍ତୁ
କେବଳ କଲରଙ୍କ ଅପେକ୍ଷା ସମାପ୍ତ କରିବା ପରିବର୍ତ୍ତେ ପ୍ରକ୍ସି ଡେଡଲାଇନ୍ ସମାପ୍ତ ହେଲେ ନେଟୱାର୍କ କାର୍ଯ୍ୟକୁ ହିଁ ବାତିଲ୍ କରନ୍ତୁ।
ଡେଡଲାଇନ୍କୁ ସେହି କାର୍ଯ୍ୟକୁ ଦିଅନ୍ତୁ ଯାହା ନେଟୱାର୍କ କାମ ବାତିଲ୍ କରିପାରେ। ପ୍ରକ୍ସି ମାଧ୍ୟମରେ ବିନ୍ୟାସିତ ବିଦ୍ୟମାନ .NET HttpClient ପାଇଁ:
using var deadline = new CancellationTokenSource(TimeSpan.FromSeconds(20));
using var response = await client.GetAsync(uri, deadline.Token);ଆପ୍ଲିକେସନ୍ client ଏବଂ uri ଯୋଗାଇଦିଏ। ଏହି ଓଭରଲୋଡ୍ ବାତିଲ୍ ଟୋକେନ୍ ଗ୍ରହଣ କରେ; ଏହାର ଟାସ୍କ ପାଇଁ ଅପେକ୍ଷାର ଚାରିପାଖରେ ଥିବା ଟାଇମଆଉଟ୍ କେବଳ ସେହି କଲରଙ୍କ ଅପେକ୍ଷାକୁ ସୀମିତ କରିବ। ସମ୍ପୂର୍ଣ୍ଣତା ଫ୍ଲାଗ୍ ପୋଲ୍ କରିବାରେ ମଧ୍ୟ ସେହି ସମସ୍ୟା ଅଛି: ସକେଟ୍ ଏବଂ ୱାର୍କର୍ ବ୍ୟସ୍ତ ରହିବା ସମୟରେ କଲର୍ ଚାଲିଯାଇପାରେ।
ବାତିଲ୍ କ୍ଲାଏଣ୍ଟର କାର୍ଯ୍ୟାନ୍ୱୟନ ଏବଂ ସଫା କରିବା ପଥକୁ ଅନୁସରଣ କରେ। ଏହା ପ୍ରତ୍ୟେକ ନିମ୍ନ ସ୍ତରୀୟ କାର୍ଯ୍ୟ ଏକ ସଠିକ୍ ନିର୍ଦ୍ଦେଶରେ ଅଟକିବ ବୋଲି ପ୍ରତିଶ୍ରୁତି ଦିଏ ନାହିଁ। ସେହି ପଥକୁ ସମାପ୍ତ ହେବାକୁ ଦିଅନ୍ତୁ ଏବଂ କାର୍ଯ୍ୟର ମାଲିକାନାରେ ଥିବା ସମ୍ବଳ ମୁକ୍ତ କରନ୍ତୁ। ଡିଜାଇନରେ ପୃଥକ୍ ନିୟନ୍ତ୍ରିତ ବଡି ପଠନ ଅନ୍ତର୍ଭୁକ୍ତ କରନ୍ତୁ; ଆଧୁନିକ .NET ResponseHeadersRead କାର୍ଯ୍ୟ ପାଇଁ, ସେହି ଟୋକେନ୍ ବଡି ପଠନ ମାଧ୍ୟମରେ ପଠାନ୍ତୁ। ଅନ୍ୟ କ୍ଲାଏଣ୍ଟମାନେ ସେମାନଙ୍କର ନିଜସ୍ୱ ବାତିଲ୍, ବନ୍ଦ ଏବଂ ସଫା କରିବା ଇଣ୍ଟରଫେସ୍ ଯୋଗାଇଦିଅନ୍ତି।
ପୁନଃ ପ୍ରୟାସ ପାଇଁ ପୂର୍ବ ପ୍ରୟାସର ଫଳାଫଳ ଦରକାର। ଏହାର ପରିଚାୟକ ଏବଂ ମନୋନୀତ ପ୍ରକ୍ସି ରଖନ୍ତୁ, ଆବଶ୍ୟକ ହେଲେ ବାତିଲ୍ ମାଗନ୍ତୁ ଏବଂ ଅସୀମିତ ଭାବରେ ବିକଳ୍ପ ଆରମ୍ଭ କରିବା ସମୟରେ କାର୍ଯ୍ୟ ହରାଇବାରୁ ଦୂରେଇ ରୁହନ୍ତୁ। ନଚେତ୍ ମନ୍ଥର ଏଣ୍ଡପଏଣ୍ଟ ଆପ୍ଲିକେସନ୍ ଯେତିକି ମୁକ୍ତ କରେ ତାହାଠାରୁ ଅଧିକ ଶୀଘ୍ର କାମ ସଞ୍ଚୟ କରିପାରେ।
ଦୂର ଫଳାଫଳ ପାଇଁ ପୃଥକ୍ ପରିଚାଳନା ଦରକାର। ବାତିଲ୍ ହେବା ସମୟରେ ଗନ୍ତବ୍ୟସ୍ଥଳ ପୂର୍ବରୁ ଦାଖଲ ଗ୍ରହଣ କରିସାରିଥାଇପାରେ। ଆପ୍ଲିକେସନର ପୁନରୁଦ୍ଧାର କିମ୍ବା idempotency ନୀତି ବ୍ୟବହାର କରନ୍ତୁ; ସ୍ଥାନୀୟ କାମ ବନ୍ଦ କରିବା ଦୂର କାର୍ଯ୍ୟକୁ ବାତିଲ୍ କରେ ନାହିଁ।