2011-11-16 4 views
5

किसी प्रतिनिधि पर BeginInvoke को कॉल करते समय, कार्रवाई को एक अलग थ्रेड पर निष्पादित किया जाता है। अगर एएसपी.नेट में बुलाया जाता है तो क्या यह सीएलआर वर्कर थ्रेड का उपयोग करता है? या यह एक आईआईएस कार्यकर्ता धागा का उपयोग करता है?एएसपी.NET में प्रतिनिधियों का उपयोग एसिंक्रोनस ऑपरेशंस को संभालने के लिए

यदि बाद वाला, तो मुझे सीएलआर कार्यकर्ता धागे पर कार्रवाई निष्पादित करने के लिए एक एसिंक्रोनस एएसपी.NET पैटर्न को नियोजित करने की आवश्यकता होगी। लेकिन अगर मैं BeginInvoke पर कार्रवाई समाप्त होता हूं तो मैं ऐसा नहीं करता।

उत्तर

6

यह एक सीएलआर कार्यकर्ता धागा का उपयोग करता है।

here

साथ शुरू करने के लिए में वर्णित है, ASP.NET CLR थ्रेड पूल पर अधिक पृष्ठभूमि के लिए सेवा अनुरोध (करने के लिए प्रक्रिया में व्यापक CLR थ्रेड पूल का उपयोग करता है, इस मुद्दे में नेट स्तंभ देखें)।

संपादित करें:

अन्य संसाधन this blog

दुर्भाग्य से, BeginInvoke द्वारा इस्तेमाल किया धागा वास्तव में एक ही कार्यकर्ता थ्रेड पूल कि ASP.Net द्वारा किया जाता है संभाल करने से पृष्ठ अनुरोध

लिया जाता है है
+0

धन्यवाद। एमवीसी एक एसिंक्रोनस मॉडल का समर्थन करता है। ऐसा लगता है कि अगर मैं BeginInvoke तकनीक के साथ इसका लाभ उठाता हूं, तो मेरा पृष्ठ तेजी से वापस आ जाएगा और काम आईआईएस कार्यकर्ता धागा नहीं लेगा। सही बात? –

+0

उस ब्लॉग पोस्ट को दोबारा पढ़ना, मैं बस एक थ्रेड। स्टार्ट() तकनीक कर सकता हूं। मेरे आवेदन के लिए मुझे एक समय में होने वाली किसी भी प्रक्रिया में से कुछ से अधिक का जोखिम नहीं होगा (आमतौर पर केवल 1), इसलिए यह संभवतः मेरी आवश्यकताओं के लिए इस बिंदु पर सबसे आसान/सबसे रखरखाव योग्य समाधान है। किसी भी व्यक्ति के लिए "ठीक है" वाक्यांश के लिए ब्लॉग पोस्ट की खोज के साथ अनुसरण करने के लिए। मैं बस थ्रेड.स्टार्ट() का उपयोग करूंगा और अपना खुद का धागा बनाउंगा "। –

+0

@ जॉन हाँ आप सही हैं। यदि आप केवल पृष्ठ को तेज़ी से वापस करना चाहते हैं, तो उपयोगकर्ता परिणामों के बारे में जानने के बिना, यह अच्छा है। लेकिन यह प्रदर्शन में सुधार नहीं करेगा। – Mithir

1

आईआईएस 6, आईआईएस 7 और आईआईएस 7.5 में थ्रेड उपयोग/प्रबंधन थोड़ा अलग है।

सुंदर विस्तार और अद्यतन विवरण यहाँ:

ASP.NET Thread Usage on IIS 7.5, IIS 7.0, and IIS 6.0

सुनिश्चित नहीं हैं कि अगर यह अपने प्रश्न लेकिन एक अच्छा वैसे भी पढ़ा जवाब देता है।

1

एक कस्टम प्रतिनिधि का उपयोग करके और अपनी BeginInvoke विधि को कॉल करने से आपके आवेदन के लिए कार्यकर्ता धागे को बंद करने का एक त्वरित तरीका प्रदान करता है। लेकिन दुर्भाग्य से, वे आपके आवेदन के समग्र प्रदर्शन को चोट पहुंचाते हैं क्योंकि वे HTTP अनुरोधों को संभालने के लिए एएसपी.NET द्वारा उपयोग किए गए उसी पूल से थ्रेड का उपभोग करते हैं।

बस याद रखें, अगर असिंक्रोनस विधि से कॉलबैक महत्वपूर्ण है, तो आपको मुख्य थ्रेड को क्लाइंट पर लौटने से अवरुद्ध करने की आवश्यकता है जब तक कि एसिंक्रोनस प्रक्रिया पूरी नहीं हो जाती। अगर लॉगिंग और एनालिटिक्स 'फायर-एंड-भूल' विधि कॉल है, तो चीजें आसान होती हैं और आप बस विधि को बंद कर सकते हैं और सर्वर को क्लाइंट को जवाब देने की अनुमति दे सकते हैं। हालांकि, अगर कॉलबैक महत्वपूर्ण है और सर्वर ने प्रसंस्करण पूरा कर लिया है, तो सर्वर पर कॉलबैक को संभालने के लिए सर्वर पर कुछ भी नहीं हो रहा है; यह वह जगह है जहां ASP.NET अनुप्रयोगों के लिए सर्वर पर एसिंक्रोनस प्रोसेसिंग WinForms अनुप्रयोग से अलग है।

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

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