var options = new ParallelOptions
{
    MaxDegreeOfParallelism = 8,
    CancellationToken = cancellationToken
};
await Parallel.ForEachAsync(endpoints, options,
    async (endpoint, token) =>
    {
        var result = await ProbeAsync(endpoint, target, token);
        observations.Add(result);
    });

Koristite ograničenu skupinu radnika umjesto pokretanja zasebnog zadatka za svaku završnu točku. Za provjere prema dopuštenim javnim ciljevima besplatna lista proxy poslužitelja daje retke kandidata; pri izgradnji sonde zadržite protokol svakog unosa. Ovaj .NET ulomak zakazivanja pretpostavlja ProbeAsync koji poznaje proxy i sakupljač observations siguran za dretve. Osam je ilustrativna granica, a ne izmjereni optimum. Sonda i dalje traži ograničenja po pokušaju i otkazivanje cijelog posla.

Čuvajte svaki završeni rezultat uz njegov ulaz čak i kada se redoslijed završetka razlikuje. Bilježite protokol, završnu točku, cilj, metodu, proteklo vrijeme i ishod. Neuspjeh veze, odbijanje prijave na proxy, odbijeni CONNECT i primljeni odgovor web mjesta različita su opažanja.

Otvoren TCP port ne dokazuje pregovaranje s proxy poslužiteljem. Dohvaćanje adrese proxy poslužitelja kao web mjesta također se razlikuje od njezine upotrebe za zahtjev prema cilju.

Odaberite cilj i metodu prema traženoj mogućnosti. HEAD može uštedjeti promet tijela, ali ne dokazuje da GET vraća koristan sadržaj; mjesto može odbiti jedno i dopustiti drugo. HTTPS dodaje CONNECT i TLS odredišta kojih nema u običnom HTTP-u. Adresa izlaza još je jedno opažanje na strani odredišta, odvojeno od postavljenog ulaza.

Ograničen rad sprječava provjerivača da iscrpi vlastite utičnice, memoriju ili raspoređivač prije nego što može ocijeniti rutu. Etapni rezultat ostaje koristan za politiku odabira bez pretvaranja da jedno uspješno odredište čini završnu točku univerzalno dobrom.

Povezani članci