Http हैंडलर / मॉड्यूल लिखते समय, कार्यान्वित करने के लिए एक इंटरफ़ेस सदस्य होता है - bool IsReusable ।
इस सदस्य का महत्व क्या है? यदि मैं इसे गलत (या सत्य) पर सेट करता हूं, तो बाकी वेब ऐप के लिए इसका क्या मतलब है?
Http हैंडलर / मॉड्यूल लिखते समय, कार्यान्वित करने के लिए एक इंटरफ़ेस सदस्य होता है - bool IsReusable ।
इस सदस्य का महत्व क्या है? यदि मैं इसे गलत (या सत्य) पर सेट करता हूं, तो बाकी वेब ऐप के लिए इसका क्या मतलब है?
जवाबों:
एक हैंडलर के लिए सामान्य प्रवेश बिंदु ProcessRequest विधि है। हालाँकि आपके पास क्लास कंस्ट्रक्टर में कोड हो सकता है जो कुछ उदाहरण मूल्यों को एक साथ रखता है जो निर्माण के लिए महंगे हैं।
यदि आप पुन: प्रयोज्य निर्दिष्ट करते हैं तो यह सही है कि आवेदन उदाहरण को कैश कर सकता है और प्रत्येक बार फिर से इसे फिर से संगठित किए बिना, इसकी प्रक्रिया को फिर से और फिर से फिर से कहकर एक अन्य अनुरोध में पुन: उपयोग कर सकता है।
एप्लिकेशन इन हैंडलर में से कई को तुरंत चालू करेगा क्योंकि वर्तमान लोड को संभालने की आवश्यकता है।
नकारात्मक पक्ष यह है कि यदि आवश्यक उदाहरणों की संख्या वर्तमान में मौजूद उदाहरणों से अधिक है, तो वे अधिक मेमोरी का उपयोग करने का कारण बनते हैं। इसके विपरीत वे स्पष्ट मेमोरी उपयोगों को भी कम कर सकते हैं क्योंकि उनके उदाहरण मूल्य जीसी चक्रों से बचे रहेंगे और उन्हें बार-बार आवंटित होने की आवश्यकता नहीं है।
एक और चेतावनी है कि आपको यह सुनिश्चित करने की आवश्यकता है कि ProcessRequest निष्पादन के अंत में ऑब्जेक्ट राज्य है जैसा कि आप ऑब्जेक्ट के पुन: उपयोग के लिए एक और अनुरोध करना चाहते हैं।
एंथनीवजन्स के जवाब के आगे, यदि आपका HTTP हैंडलर वापस आता है true
, IsReusable
तो आपको यह सुनिश्चित करना चाहिए कि यह पूरी तरह से थ्रेड-सुरक्षित है।
प्रलेखन में ऐसा कुछ भी नहीं है जो यह दर्शाता है कि पुन: प्रयोज्य हैंडलर को पुन: उपयोग नहीं किया जा सकता है, हालांकि वर्तमान Microsoft कार्यान्वयन केवल उन्हें लगातार उपयोग करने के लिए दिखाई देते हैं। लेकिन, कम से कम सिद्धांत रूप में, एक ही हैंडलर का उदाहरण एक साथ कई अनुरोधों द्वारा पुन: उपयोग किया जा सकता है, इसलिए आपको किसी भी डेटा पर भरोसा नहीं करना चाहिए जो अन्य समवर्ती धागे द्वारा संशोधित किया जा सकता है।
IsReusable
थ्रेड सुरक्षा की आवश्यकता के बारे में यह बयान एंथनीवजोन प्रतिक्रिया के साथ विरोधाभास लगता है। जैसा कि मैं इसके तीसरे पैराग्राफ को समझता हूं (यह एप्लिकेशन बहुत सारे ... के रूप में तुरंत समाप्त हो जाएगा), एक पुन: प्रयोज्य हैंडलर का उदाहरण समवर्ती रूप से पुन: उपयोग नहीं किया जाएगा, लेकिन केवल इसके वर्तमान प्रसंस्करण को समाप्त करने के बाद। यदि यह सच है, तो थ्रेड सुरक्षित होने की आवश्यकता नहीं है।
यदि आप उस उदाहरण में किसी भी राज्य को संग्रहीत नहीं करते हैं (यानी: आपके पास कोई फ़ील्ड (उर्फ "क्लास चर") नहीं है) तो आपको इसे पुन: उपयोग करने के लिए सुरक्षित होना चाहिए।
डिफ़ॉल्ट रूप से यह सुरक्षित पक्ष पर होना गलत है।