Дали споделениот .NET IWebProxy е безбеден при истовремени барања?
Разликувајте го договорот за истовременост на имплементацијата на IWebProxy од доцнењата предизвикани од автоматско откривање на прокси.
IWebProxy опишува прокси политика. Не им дава на сите имплементации исти гаранции за истовременост. Пред да споделите една инстанца меѓу работни задачи, идентификувајте ја нејзината конкретна имплементација и околината во која припаѓа.
Интерфејсот изложува барања за рута зависни од одредиштето и акредитиви. Приспособена имплементација може да консултира фиксна адреса, променлива состојба или автоматска конфигурација. Тие избори влијаат и на безбедноста и на перформансите.
Држете ги промените во конфигурацијата надвор од обработката на барања
Избегнувајте користење на еден споделен прокси објект како работна скица: менувањето на неговата адреса или акредитиви за задача A додека задача B избира рута ја прави сопственоста нејасна. Конфигурирајте политика пред да ја предадете на клиентот. За оптоварувања со различни прокси сметки или крајни точки, користете одделно поседувани конфигурации на клиентот.
Историската документација на WebProxy не даваше гаранција за безбедност на нишки за членовите на инстанцата. Применете го тој договор на соодветната имплементација. Ако е потребна синхронизација, секој читач и писател мора да учествува; заклучувањето со обвивка не може да ги координира повикувачите што директно го користат оригиналниот објект.
Долга пауза во GetProxy може наместо тоа да вклучува откривање или оценка на PAC. Microsoft документира блокирачко откривање за WinHTTP; тоа објаснување важи кога клиентот го користи тој бекенд. Мерете го пребарувањето на рутата одделно од времето на поврзување и одговор. Сериализирањето на бавно пребарување може само да создаде ред.
Фиксна крајна точка може да го отстрани откривањето кога е предвидена фиксна рута. Заземањето на еден URI од променлива системска политика исто така ги отфрла нејзините идни одлуки. Зачувајте ја таа разлика при одржување стар код; користете HttpClient и неговата поддржана конфигурација на ракувач за нова HTTP работа.