Είναι ένα κοινόχρηστο .NET IWebProxy ασφαλές σε ταυτόχρονα αιτήματα;
Διακρίνετε τη σύμβαση ταυτοχρονισμού μιας υλοποίησης IWebProxy από τις καθυστερήσεις που προκαλεί η αυτόματη ανακάλυψη διακομιστή μεσολάβησης.
Το IWebProxy περιγράφει μια πολιτική διακομιστή μεσολάβησης. Δεν παρέχει σε κάθε υλοποίηση τις ίδιες εγγυήσεις ταυτοχρονισμού. Πριν μοιραστείτε ένα στιγμιότυπο μεταξύ εργασιών, προσδιορίστε τη συγκεκριμένη υλοποίησή του και το περιβάλλον εκτέλεσης στο οποίο ανήκει.
Η διεπαφή εκθέτει ερωτήματα διαδρομής που εξαρτώνται από τον προορισμό και διαπιστευτήρια. Μια προσαρμοσμένη υλοποίηση μπορεί να συμβουλεύεται μια σταθερή διεύθυνση, μεταβλητή κατάσταση ή αυτόματη διαμόρφωση. Αυτές οι επιλογές επηρεάζουν τόσο την ασφάλεια όσο και την απόδοση.
Κρατήστε τις αλλαγές διαμόρφωσης έξω από την επεξεργασία αιτημάτων
Αποφύγετε τη χρήση ενός κοινόχρηστου αντικειμένου μεσολάβησης ως πρόχειρου: η αλλαγή της διεύθυνσης ή των διαπιστευτηρίων του για την εργασία A ενώ η εργασία B επιλέγει διαδρομή καθιστά την κυριότητα ασαφή. Διαμορφώστε μια πολιτική πριν την παραδώσετε στον πελάτη. Για φόρτους εργασίας με διαφορετικούς λογαριασμούς ή τελικά σημεία μεσολάβησης, χρησιμοποιήστε διαμορφώσεις πελάτη με χωριστή κυριότητα.
Η ιστορική τεκμηρίωση του WebProxy δεν παρείχε εγγύηση ασφάλειας νημάτων για τα μέλη στιγμιοτύπου. Εφαρμόστε αυτή τη σύμβαση στη σχετική υλοποίηση. Αν απαιτείται συγχρονισμός, πρέπει να συμμετέχει κάθε αναγνώστης και συγγραφέας· ένα κλείδωμα περιτυλίγματος δεν μπορεί να συντονίσει καλούντες που χρησιμοποιούν απευθείας το αρχικό αντικείμενο.
Μια μεγάλη παύση στο GetProxy μπορεί αντ' αυτού να αφορά ανακάλυψη ή αξιολόγηση PAC. Η Microsoft τεκμηριώνει την αποκλειστική ανακάλυψη για το WinHTTP· αυτή η εξήγηση ισχύει όταν ο πελάτης χρησιμοποιεί αυτό το υπόβαθρο. Μετρήστε την αναζήτηση διαδρομής χωριστά από τον χρόνο σύνδεσης και απόκρισης. Η σειριοποίηση μιας αργής αναζήτησης μπορεί απλώς να δημιουργήσει ουρά.
Ένα σταθερό τελικό σημείο μπορεί να αφαιρέσει την ανακάλυψη όταν προορίζεται σταθερή διαδρομή. Η σύλληψη ενός URI από μια μεταβαλλόμενη πολιτική συστήματος επίσης απορρίπτει τις μελλοντικές της αποφάσεις. Διατηρήστε αυτή τη διάκριση κατά τη συντήρηση παλιού κώδικα· χρησιμοποιήστε το HttpClient και τη υποστηριζόμενη διαμόρφωση χειριστή του για νέα εργασία HTTP.