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

Әр соңғы нүкте үшін жеке тапсырма іске қосудың орнына шектеулі жұмысшы пулын пайдаланыңыз. Рұқсат етілген жария мақсаттарға тексеру үшін тегін прокси тізімі кандидат жолдар береді; зондты құрғанда әр жазбаның хаттамасын сақтаңыз. Бұл .NET жоспарлау үзіндісі проксиді білетін ProbeAsync мен ағындарға қауіпсіз observations жинаушыны болжайды. Сегіз — иллюстративтік шек, өлшенген оптимум емес. Зондқа әлі де әр әрекетке шектеу мен бүкіл жұмысты болдырмау қажет.

Аяқталу реті өзгеше болса да, әр аяқталған нәтижені кірісімен бірге сақтаңыз. Хаттаманы, соңғы нүктені, мақсатты, әдісті, өткен уақытты және нәтижені жазыңыз. Байланыс сәтсіздігі, проксиге кірудің қабылданбауы, қабылданбаған CONNECT және сайттан алынған жауап — әртүрлі бақылаулар.

TCP портының ашылуы проксимен келіссөзді дәлелдемейді. Прокси мекенжайын сайт ретінде алу да оны мақсатты сұрауға пайдаланудан өзгеше.

Мақсат пен әдісті қажетті мүмкіндікке қарай таңдаңыз. HEAD дене трафигін үнемдей алады, бірақ GET пайдалы мазмұн қайтаратынын дәлелдемейді; сайт біреуін қабылдамай, екіншісіне рұқсат беруі мүмкін. HTTPS қарапайым HTTP-де жоқ CONNECT пен мақсаттық TLS қосады. Шығу мекенжайы — конфигурацияланған кіруден бөлек, мақсат тарапының тағы бір бақылауы.

Шектеулі жұмыс тексерушінің маршрутты бағалауға дейін өз сокеттерін, жадын немесе жоспарлағышын таусылуынан сақтайды. Кезеңдік нәтиже бір сәтті мақсаттың соңғы нүктені барлық жерде жақсы ететінін көрсетпей-ақ, таңдау саясаты үшін пайдалы болып қалады.

Қатысты мақалалар