2009-02-11 24 views
124

जब एक http हैंडलर/मॉड्यूल लेखन, वहाँ एक अंतरफलक सदस्य कहा जाता है लागू करने के लिए है।महत्व

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

+0

[IHttpHandler.IsReusable संपत्ति के वास्तविक दुनिया उपयोग] (http://stackoverflow.com/questions/10806214/ihttphandler-isreusable-property-truly-usages) –

उत्तर

146

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

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

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

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

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

+0

आप के रूप में किया जा रहा IsReusable निर्दिष्ट करने के द्वारा हासिल की कुंजी अनुकूलन वस्तु का पुन: उपयोग का उल्लेख = यह सच है। सर्वर में IsReusable = गलत परिणाम सेट करना होगा हैंडलर के कई उदाहरणों को तुरंत चालू नहीं कर रहा है। अर्थात। - क्या यह समवर्ती अनुरोधों को खत्म करता है? – Ian

44
इसके अलावा AnthonyWJones के जवाब देने के लिए

, अपने HTTP हैंडलर लौटाता है यदि IsReusable के लिए true तो आप यह सुनिश्चित करना चाहिए कि यह पूरी तरह से धागा सुरक्षित है।

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

+0

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

+4

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

+0

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

3

आपको लगता है कि घटना में किसी भी राज्य की दुकान नहीं है, तो (यानी .: आप किसी भी क्षेत्रों (उर्फ "वर्ग चर") की जरूरत नहीं है) तो आप इसे पुन: उपयोग सुरक्षित होना चाहिए।

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

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^