IWebProxy апісвае палітыку проксі. Ён не дае кожнай рэалізацыі аднолькавыя гарантыі паралельнасці. Перш чым дзяліць адзін экземпляр паміж задачамі рабочых, вызначце яго канкрэтную рэалізацыю і асяроддзе выканання, да якога ён належыць.

Інтэрфейс прадстаўляе запыты маршруту, якія залежаць ад пункту прызначэння, і ўліковыя даныя. Уласная рэалізацыя можа звяртацца да фіксаванага адрасу, зменлівага стану або аўтаматычнай канфігурацыі. Гэтыя выбары ўплываюць як на бяспеку, так і на прадукцыйнасць.

Трымайце змены канфігурацыі па-за апрацоўкай запытаў

Пазбягайце выкарыстання аднаго агульнага аб'екта проксі як чарнавіка: змена яго адрасу або ўліковых даных для задачы A, пакуль задача B выбірае маршрут, робіць права ўласнасці няясным. Наладзьце палітыку перад перадачай кліенту. Для нагрузак з рознымі ўліковымі запісамі проксі або канчатковымі пунктамі выкарыстоўвайце асобна ўласныя канфігурацыі кліентаў.

Гістарычная дакументацыя WebProxy не давала гарантыі бяспекі патокаў для ўдзельнікаў экземпляра. Прымяніце гэты кантракт да адпаведнай рэалізацыі. Калі патрабуецца сінхранізацыя, кожны чытач і пісьменнік павінны ўдзельнічаць; блакіроўка-абгортка не можа каардынаваць выклікі, якія напрамую выкарыстоўваюць зыходны аб'ект.

Доўгая пауза ў GetProxy можа замест гэтага ўключаць выяўленне або ацэнку PAC. Microsoft дакументуе блакіруючае выяўленне для WinHTTP; гэтае тлумачэнне прымяняецца, калі кліент выкарыстоўвае гэты бэкэнд. Вымярайце пошук маршруту асобна ад часу злучэння і адказу. Серыялізацыя павольнага пошуку можа проста стварыць чаргу.

Фіксаваны канчатковы пункт можа выдаліць выяўленне, калі маецца на ўвазе фіксаваны маршрут. Захоп адзінага URI са зменлівай сістэмнай палітыкі таксама адкідвае яго будучыя рашэнні. Захоўвайце гэта адрозненне пры падтрымцы старога коду; для новых прац па HTTP выкарыстоўвайце HttpClient і яго падтрыманую канфігурацыю апрацоўніка.

Падобныя артыкулы