Je deljeni .NET IWebProxy varen pri sočasnih zahtevah?
Ločite pogodbo o sočasnosti izvedbe IWebProxy od zamud, ki jih povzroči samodejno odkrivanje proxyja.
IWebProxy opisuje proxy politiko. Vsaki izvedbi ne daje enakih jamstev sočasnosti. Preden delite eno instanco med delovnimi opravili, določite njeno konkretno izvedbo in okolje izvajanja, ki mu pripada.
Vmesnik izpostavlja poizvedbe poti, odvisne od cilja, in poverilnice. Izvedba po meri lahko upošteva fiksni naslov, spremenljivo stanje ali samodejno konfiguracijo. Te izbire vplivajo na varnost in zmogljivost.
Ohranite spremembe konfiguracije zunaj obdelave zahtev
Izogibajte se uporabi enega deljenega proxy objekta kot osnutka: spreminjanje njegovega naslova ali poverilnic za opravilo A, medtem ko opravilo B izbira pot, naredi lastništvo nejasno. Konfigurirajte politiko, preden jo predate odjemalcu. Za delovne obremenitve z različnimi proxy računi ali končnimi točkami uporabite ločeno lastniške konfiguracije odjemalca.
Zgodovinska dokumentacija WebProxy ni dajala jamstva varnosti niti za člane instance. Uporabite to pogodbo za ustrezno izvedbo. Če je potrebna sinhronizacija, morajo sodelovati vsi bralci in pisci; zaklep ovoja ne more usklajevati klicev, ki neposredno uporabljajo izvirni objekt.
Dolg premor v GetProxy lahko namesto tega vključuje odkrivanje ali ocenjevanje PAC. Microsoft dokumentira blokirajoče odkrivanje za WinHTTP; ta razlaga velja, ko odjemalec uporablja to zaledje. Merite iskanje poti ločeno od časa povezave in odziva. Serializacija počasnega iskanja lahko le ustvari čakalno vrsto.
Fiksna končna točka lahko odpravi odkrivanje, ko je mišljena fiksna pot. Zajem enega URI-ja iz spreminjajoče se sistemske politike tudi zavrže njene prihodnje odločitve. Ohranite to razlikovanje pri vzdrževanju stare kode; za novo delo s HTTP uporabite HttpClient in njegovo podprto konfiguracijo upravljalnika.