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);
    });

Käytä rajattua työntekijäjoukkoa sen sijaan, että käynnistäisit oman tehtävän jokaista päätepistettä varten. Sallittuja julkisia kohteita vastaan tehtävissä tarkistuksissa ilmainen välityspalvelinluettelo tarjoaa ehdokasrivit; säilytä jokaisen merkinnän protokolla, kun rakennat koetinta. Tämä .NET-ajastuskatkelma olettaa välityspalvelintietoisen ProbeAsync-metodin ja säikeenkestävän observations-kerääjän. Kahdeksan on havainnollistava raja, ei mitattu optimi. Koetin tarvitsee yhä yrityskohtaiset rajat ja koko työn peruutuksen.

Säilytä jokainen valmistunut tulos syötteensä kanssa, vaikka valmistumisjärjestys poikkeaisi. Kirjaa protokolla, päätepiste, kohde, menetelmä, kulunut aika ja lopputulos. Yhteysvirhe, välityspalvelimen kirjautumisen hylkäys, evätty CONNECT ja sivustolta saatu vastaus ovat eri havaintoja.

TCP-portin avautuminen ei todista välityspalvelinneuvottelua. Välityspalvelimen osoitteen hakeminen sivustona eroaa myös sen käyttämisestä kohteen pyytämiseen.

Valitse kohde ja menetelmä tarvitun kyvyn mukaan. HEAD voi säästää runkotietoliikennettä, mutta ei todista, että GET palauttaa hyödyllistä sisältöä; sivusto voi hylätä toisen ja sallia toisen. HTTPS lisää CONNECTin ja kohteen TLS:n, jotka puuttuvat tavallisesta HTTP:stä. Lähtöosoite on toinen kohdepuolen havainto, erillään määritetystä sisäänkäynnistä.

Rajattu työ estää tarkistajaa kuluttamasta omia sokettejaan, muistiaan tai ajastintaan ennen kuin se voi arvioida reitin. Vaiheittainen tulos pysyy hyödyllisenä valintakäytännölle väittämättä, että yksi onnistunut kohde tekee päätepisteestä yleisesti hyvän.

Aiheeseen liittyvät artikkelit