Je zdieľaný .NET IWebProxy bezpečný pri súbežných požiadavkách?
Odlíšte kontrakt súbežnosti implementácie IWebProxy od oneskorení spôsobených automatickým zisťovaním proxy.
IWebProxy opisuje proxy politiku. Nedáva každej implementácii rovnaké záruky súbežnosti. Pred zdieľaním jednej inštancie medzi pracovnými úlohami identifikujte jej konkrétnu implementáciu a prostredie, do ktorého patrí.
Rozhranie sprístupňuje dotazy na trasu závislé od cieľa a prihlasovacie údaje. Vlastná implementácia môže nahliadať do pevnej adresy, premenlivého stavu alebo automatickej konfigurácie. Tieto voľby ovplyvňujú bezpečnosť aj výkon.
Udržujte zmeny konfigurácie mimo spracovania požiadaviek
Vyhnite sa používaniu jedného zdieľaného proxy objektu ako návrhu: zmena jeho adresy alebo prihlasovacích údajov pre úlohu A, kým úloha B vyberá trasu, robí vlastníctvo nejasným. Nakonfigurujte politiku pred odovzdaním klientovi. Pre úlohy s rôznymi proxy účtami alebo koncovými bodmi používajte samostatne vlastnené konfigurácie klientov.
Historická dokumentácia WebProxy neposkytovala záruku bezpečnosti vlákien pre členov inštancie. Aplikujte tento kontrakt na príslušnú implementáciu. Ak je potrebná synchronizácia, musí sa zúčastniť každý čitateľ a zapisovateľ; zámok obalu nemôže koordinovať volajúcich, ktorí priamo používajú pôvodný objekt.
Dlhá pauza v GetProxy môže namiesto toho zahŕňať zisťovanie alebo vyhodnotenie PAC. Microsoft dokumentuje blokujúce zisťovanie pre WinHTTP; toto vysvetlenie platí, keď klient používa toto rozhranie. Merajte vyhľadanie trasy oddelene od času pripojenia a odpovede. Serializácia pomalého vyhľadávania môže len vytvoriť front.
Pevný koncový bod môže odstrániť zisťovanie, ak je zamýšľaná pevná trasa. Zachytenie jedného URI z meniacej sa systémovej politiky tiež zahadzuje jej budúce rozhodnutia. Zachovajte tento rozdiel pri údržbe staršieho kódu; pre novú prácu s HTTP používajte HttpClient a jeho podporovanú konfiguráciu obsluhy.