क्या साझा .NET IWebProxy समवर्ती अनुरोधों में सुरक्षित है?
IWebProxy कार्यान्वयन के समवर्तीता अनुबंध को स्वचालित प्रॉक्सी खोज से होने वाली देरी से अलग पहचानें।
IWebProxy एक प्रॉक्सी नीति का वर्णन करता है। यह हर कार्यान्वयन को समान समवर्तीता गारंटी नहीं देता। कार्यकर्ता कार्यों के बीच एक इंस्टेंस साझा करने से पहले उसका ठोस कार्यान्वयन और वह रनटाइम पहचानें जिससे वह संबंधित है।
इंटरफ़ेस गंतव्य-निर्भर मार्ग क्वेरी और क्रेडेंशियल उजागर करता है। कोई कस्टम कार्यान्वयन किसी स्थिर पते, परिवर्तनशील स्थिति या स्वचालित कॉन्फ़िगरेशन से परामर्श कर सकता है। ये विकल्प सुरक्षा और प्रदर्शन दोनों को प्रभावित करते हैं।
कॉन्फ़िगरेशन परिवर्तनों को अनुरोध प्रसंस्करण से बाहर रखें
एक साझा प्रॉक्सी ऑब्जेक्ट को ड्राफ़्ट के रूप में उपयोग करने से बचें: कार्य A के लिए उसका पता या क्रेडेंशियल बदलना, जबकि कार्य B कोई मार्ग चुन रहा हो, स्वामित्व को अस्पष्ट बना देता है। क्लाइंट को सौंपने से पहले नीति कॉन्फ़िगर करें। भिन्न प्रॉक्सी खातों या एंडपॉइंट वाले कार्यभार के लिए अलग स्वामित्व वाली क्लाइंट कॉन्फ़िगरेशन का उपयोग करें।
ऐतिहासिक WebProxy दस्तावेज़ीकरण ने इंस्टेंस सदस्यों के लिए थ्रेड-सुरक्षा गारंटी नहीं दी थी। उस अनुबंध को संबंधित कार्यान्वयन पर लागू करें। यदि सिंक्रनाइज़ेशन आवश्यक है, तो हर पाठक और लेखक को भाग लेना चाहिए; रैपर लॉक उन कॉलरों का समन्वय नहीं कर सकता जो मूल ऑब्जेक्ट सीधे उपयोग करते हैं।
GetProxy में लंबा ठहराव इसके बजाय खोज या PAC मूल्यांकन से जुड़ा हो सकता है। Microsoft WinHTTP के लिए अवरोधक खोज का दस्तावेज़ीकरण करता है; वह स्पष्टीकरण तब लागू होता है जब क्लाइंट उस बैकएंड का उपयोग करता है। मार्ग खोज को कनेक्शन और प्रतिक्रिया समय से अलग मापें। धीमी खोज को क्रमबद्ध करना केवल एक कतार बना सकता है।
एक स्थिर एंडपॉइंट स्थिर मार्ग इच्छित होने पर खोज को हटा सकता है। बदलती सिस्टम नीति से एक URI कैप्चर करना भी उसके भविष्य के निर्णयों को त्याग देता है। पुराने कोड के रखरखाव में उस अंतर को बनाए रखें; नए HTTP कार्य के लिए HttpClient और उसके समर्थित हैंडलर कॉन्फ़िगरेशन का उपयोग करें।