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 προσθέτει CONNECT και TLS προορισμού που λείπουν από το απλό HTTP. Η διεύθυνση εξόδου είναι άλλη μια παρατήρηση από την πλευρά του προορισμού, χωριστή από τη ρυθμισμένη είσοδο.

Η φραγμένη εργασία εμποδίζει τον ελεγκτή να εξαντλήσει τα δικά του socket, τη μνήμη ή τον χρονοπρογραμματιστή πριν αξιολογήσει τη διαδρομή. Ένα σταδιακό αποτέλεσμα παραμένει χρήσιμο για την πολιτική επιλογής χωρίς να προσποιείται ότι ένας επιτυχής προορισμός κάνει ένα τελικό σημείο καλό παντού.

Σχετικά άρθρα