Je sdílený .NET IWebProxy bezpečný při souběžných požadavcích?
Odlište kontrakt souběžnosti implementace IWebProxy od zpoždění způsobených automatickým zjišťováním proxy.
IWebProxy popisuje proxy politiku. Nedává každé implementaci stejné záruky souběžnosti. Než budete sdílet jednu instanci mezi pracovními úlohami, zjistěte její konkrétní implementaci a běhové prostředí, ke kterému patří.
Rozhraní vystavuje dotazy na trasu závislé na cíli a přihlašovací údaje. Vlastní implementace může nahlížet do pevné adresy, měnitelného stavu nebo automatické konfigurace. Tyto volby ovlivňují bezpečnost i výkon.
Udržujte změny konfigurace mimo zpracování požadavků
Vyhněte se používání jednoho sdíleného proxy objektu jako konceptu: změna jeho adresy nebo přihlašovacích údajů pro úlohu A, zatímco úloha B vybírá trasu, činí vlastnictví nejasným. Nakonfigurujte politiku, než ji předáte klientovi. Pro úlohy s různými proxy účty nebo koncovými body používejte samostatně vlastněné konfigurace klientů.
Historická dokumentace WebProxy neposkytovala záruku bezpečnosti vláken pro členy instance. Aplikujte tento kontrakt na odpovídající implementaci. Pokud je vyžadována synchronizace, musí se zúčastnit každý čtenář i zapisovatel; zámek obalu nemůže koordinovat volající, kteří používají původní objekt přímo.
Dlouhá pauza v GetProxy může místo toho zahrnovat zjišťování nebo vyhodnocení PAC. Microsoft dokumentuje blokující zjišťování pro WinHTTP; toto vysvětlení platí, když klient používá toto rozhraní. Měřte vyhledání trasy odděleně od doby připojení a odezvy. Serializace pomalého vyhledávání může pouze vytvořit frontu.
Pevný koncový bod může odstranit zjišťování, pokud je zamýšlena pevná trasa. Zachycení jednoho URI z měnící se systémové politiky také zahazuje její budoucí rozhodnutí. Zachovejte tento rozdíl při údržbě staršího kódu; pro novou práci s HTTP používejte HttpClient a jeho podporovanou konfiguraci obslužné rutiny.