Http हैंडलर इंटरफ़ेस में बूल इस् यूज़ेबल का महत्व


130

Http हैंडलर / मॉड्यूल लिखते समय, कार्यान्वित करने के लिए एक इंटरफ़ेस सदस्य होता है - bool IsReusable

इस सदस्य का महत्व क्या है? यदि मैं इसे गलत (या सत्य) पर सेट करता हूं, तो बाकी वेब ऐप के लिए इसका क्या मतलब है?


जवाबों:


152

एक हैंडलर के लिए सामान्य प्रवेश बिंदु ProcessRequest विधि है। हालाँकि आपके पास क्लास कंस्ट्रक्टर में कोड हो सकता है जो कुछ उदाहरण मूल्यों को एक साथ रखता है जो निर्माण के लिए महंगे हैं।

यदि आप पुन: प्रयोज्य निर्दिष्ट करते हैं तो यह सही है कि आवेदन उदाहरण को कैश कर सकता है और प्रत्येक बार फिर से इसे फिर से संगठित किए बिना, इसकी प्रक्रिया को फिर से और फिर से फिर से कहकर एक अन्य अनुरोध में पुन: उपयोग कर सकता है।

एप्लिकेशन इन हैंडलर में से कई को तुरंत चालू करेगा क्योंकि वर्तमान लोड को संभालने की आवश्यकता है।

नकारात्मक पक्ष यह है कि यदि आवश्यक उदाहरणों की संख्या वर्तमान में मौजूद उदाहरणों से अधिक है, तो वे अधिक मेमोरी का उपयोग करने का कारण बनते हैं। इसके विपरीत वे स्पष्ट मेमोरी उपयोगों को भी कम कर सकते हैं क्योंकि उनके उदाहरण मूल्य जीसी चक्रों से बचे रहेंगे और उन्हें बार-बार आवंटित होने की आवश्यकता नहीं है।

एक और चेतावनी है कि आपको यह सुनिश्चित करने की आवश्यकता है कि ProcessRequest निष्पादन के अंत में ऑब्जेक्ट राज्य है जैसा कि आप ऑब्जेक्ट के पुन: उपयोग के लिए एक और अनुरोध करना चाहते हैं।


2
आप ऑब्जेक्ट को पुन: उपयोग करने का उल्लेख करते हैं जो IsReusable = True को निर्दिष्ट करके प्राप्त किया गया महत्वपूर्ण अनुकूलन है। IsReusable को सेट करना = सर्वर में गलत परिणाम होना कभी भी हैंडलर के कई उदाहरणों को त्वरित नहीं करना है। IE - यह समवर्ती अनुरोधों को समाप्त करता है?
इयान

@ यदि मुझे विश्वास है कि पुन: प्रयोज्य झूठे होने पर यह एक सामान्य पृष्ठ के रूप में कार्य करता है, हालांकि मैं गलत हो सकता हूं। जब यह पुन: प्रयोज्य है तो यह 2 या 3 उदाहरणों (उदाहरण के लिए) के साथ 6 समवर्ती अनुरोधों को संभालने में सक्षम हो सकता है, जबकि जब यह पुन: प्रयोज्य नहीं होता है तो इसे 1: 1 उदाहरणों / प्रक्रियाओं की आवश्यकता होगी। मैं कल्पना नहीं कर सकता। नेट अनुरोधों को ढेर कर सकता है क्योंकि 1 श्रमिक धागा ने अपने राज्य को लगातार ताज़ा / पुन: व्यवस्थित करते हुए यह सब संभालने की कोशिश की।
डेविडशेकर

47

एंथनीवजन्स के जवाब के आगे, यदि आपका HTTP हैंडलर वापस आता है true, IsReusableतो आपको यह सुनिश्चित करना चाहिए कि यह पूरी तरह से थ्रेड-सुरक्षित है।

प्रलेखन में ऐसा कुछ भी नहीं है जो यह दर्शाता है कि पुन: प्रयोज्य हैंडलर को पुन: उपयोग नहीं किया जा सकता है, हालांकि वर्तमान Microsoft कार्यान्वयन केवल उन्हें लगातार उपयोग करने के लिए दिखाई देते हैं। लेकिन, कम से कम सिद्धांत रूप में, एक ही हैंडलर का उदाहरण एक साथ कई अनुरोधों द्वारा पुन: उपयोग किया जा सकता है, इसलिए आपको किसी भी डेटा पर भरोसा नहीं करना चाहिए जो अन्य समवर्ती धागे द्वारा संशोधित किया जा सकता है।


मोटी होने के लिए क्षमा करें, लेकिन क्या कोई व्यक्ति "संदर्भ स्विच" से अभिप्राय कर सकता है। यदि आप सीज़न या क्वेरी स्ट्रिंग से चीजें एक्सेस करते हैं (content.Request.QueryString) वह पुन: प्रयोज्य है या नहीं?
राशि

5
प्रसंग स्विचिंग तब होती है जब एक CPU एक थ्रेड पर प्रोसेसिंग को रोकता है और दूसरे पर प्रोसेसिंग शुरू करता है। IE CPU ने एक थ्रेड से दूसरे में इसका संदर्भ दिया। यह पीसी में लगातार होता है, इसने हमें मल्टीटास्किंग का भ्रम दिया इससे पहले कि मल्टीकोर कंप्यूटर थे।
लैरी ड्यूक

मुझे समझ में नहीं आया जब यू ने कहा कि किसी भी समय एक संदर्भ स्विच हो सकता है । जब हम url टाइप करते हैं और एंटर दबाते हैं, तो यह एक बार में एक अनुरोध को निष्पादित करता है। सही ?

संदर्भ स्विच करना एक समस्या होगी जब एक ही समय में कई उपयोगकर्ता किसी एप्लिकेशन का उपयोग कर रहे हों। उदाहरण के लिए, यदि दो उपयोगकर्ता एक ही समय में एक ही रिकॉर्ड अपडेट करना चाहते हैं, तो संदर्भ स्विच समस्या पैदा कर सकता है।
इस्माइल स्मरनॉउन

7
IsReusableथ्रेड सुरक्षा की आवश्यकता के बारे में यह बयान एंथनीवजोन प्रतिक्रिया के साथ विरोधाभास लगता है। जैसा कि मैं इसके तीसरे पैराग्राफ को समझता हूं (यह एप्लिकेशन बहुत सारे ... के रूप में तुरंत समाप्त हो जाएगा), एक पुन: प्रयोज्य हैंडलर का उदाहरण समवर्ती रूप से पुन: उपयोग नहीं किया जाएगा, लेकिन केवल इसके वर्तमान प्रसंस्करण को समाप्त करने के बाद। यदि यह सच है, तो थ्रेड सुरक्षित होने की आवश्यकता नहीं है।
फ्रैडरिक

3

यदि आप उस उदाहरण में किसी भी राज्य को संग्रहीत नहीं करते हैं (यानी: आपके पास कोई फ़ील्ड (उर्फ "क्लास चर") नहीं है) तो आपको इसे पुन: उपयोग करने के लिए सुरक्षित होना चाहिए।

डिफ़ॉल्ट रूप से यह सुरक्षित पक्ष पर होना गलत है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.