2010-10-21 14 views
6

चलो इमेजिंग वेबसाइट पर 2 पेज हैं: त्वरित और धीमी। पृष्ठ को धीमा करने के अनुरोध 1 मिनट के लिए निष्पादित किए जाते हैं, त्वरित 5 सेकंड का अनुरोध करते हैं।एएसपी.नेट: कैसे समानांतर अनुरोध संसाधित किए जाते हैं

मेरा पूरा विकास कैरियर मैंने सोचा कि यदि पहला प्रारंभ अनुरोध धीमा है: वह डीबी को एक (सिंक्रोनस) कॉल करेगा ... उत्तर का इंतजार करें ... यदि इस समय के दौरान त्वरित पृष्ठ का अनुरोध किया जाएगा, तो यह अनुरोध सिस्टम संसाधित हो जाएगा जबकि सिस्टम डीबी से प्रतिक्रिया के लिए इंतजार कर रहा है।

लेकिन आज मैंने पाया: http://msdn.microsoft.com/en-us/library/system.web.httpapplication.aspx

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

क्या इसका मतलब यह है कि मेरे मूल विचार गलत हैं?

क्या आप कृपया स्पष्ट कर सकते हैं कि उनका क्या अर्थ है? मुझे पूरा यकीन है कि चीज की अपेक्षा है ...

उत्तर

4

आपके मूल विचार सही हैं, और दस्तावेज़ीकरण भी है। आईआईएस कार्यकर्ता प्रक्रिया कई धागे पैदा कर सकती है, जिनमें से प्रत्येक HttpApplication वर्ग के अपने उदाहरण के साथ।

+0

जाहिर है यह भी despawn कर सकते हैं http://stackoverflow.com/questions/2675910/how-to-know-who-kills-my-threads – Justin

+0

आप कहना है कि इसके बारे में कई उदाहरण संभव है करना चाहते हैं किसी भी पल में एचटीपी आवेदन। मेरे पास मेरे लिए बहुत समझदारी नहीं है ... क्या मैं सही ढंग से समझता हूं कि केवल 1 बनाए गए धागे को "Application_Start" ईवेंट उत्पन्न करना चाहिए? – Budda

+0

बीटीडब्ल्यू, आपकी मदद के लिए धन्यवाद। :) – Budda

4

एएसपी .NET एक एकल कार्यकर्ता प्रक्रिया (w3wp.exe) के तहत आपके वेब एप्लिकेशन के लिए एकाधिक ऐपडोमेन होस्ट करेगा। यह एक ही कार्यकर्ता प्रक्रिया के तहत विभिन्न वेब अनुप्रयोगों के लिए ऐपडोमेन साझा कर सकता है (यदि उन्हें एक ही ऐप पूल में असाइन किया गया है)।

प्रत्येक एपडोमेन कि एएसपी .NET बनाता है कई एचटीपी अनुप्रयोग उदाहरण होस्ट कर सकता है जो अनुरोधों को पूरा करता है और एएसपी .NET जीवन चक्र के माध्यम से चलता है। प्रत्येक एचटीपी एप्लीकेशन (जैसा कि आपने कहा है) एक समय में एक अनुरोध का जवाब दे सकता है।

+1

अनुमान लगाएं, आप कहना चाहते हैं "एएसपी .NET आपके वेब अनुप्रयोगों के लिए एकाधिक ऐपडोमेन होस्ट करेगा"। मेरे परिप्रेक्ष्य से यह एक वेब अनुप्रयोग के लिए कुछ ऐप डोमेन रखने का कोई अर्थ नहीं है। क्या मैं सही हू? – Budda

+0

बीटीडब्ल्यू, आपकी मदद के लिए धन्यवाद। :) – Budda

+1

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

4

अनुरोधों को सर्वर पक्ष पर क्रमिक क्रम में संसाधित किया जाना चाहिए यदि दोनों अनुरोध एएसपीनेट सत्र लॉकिंग के कारण पढ़ने/लिखने के उपयोग के साथ समान सत्र स्थिति का उपयोग करते हैं।

आप यहाँ अधिक जानकारी प्राप्त कर सकते हैं: http://msdn.microsoft.com/en-us/library/ie/ms178581.aspx

समवर्ती अनुरोध और सत्र स्थिति

ASP.NET सत्र स्थिति तक पहुंच प्रति सत्र विशेष है, जिसका अर्थ है कि दो अलग-अलग उपयोगकर्ताओं समवर्ती अनुरोध करने , प्रत्येक अलग सत्र तक पहुंच समवर्ती रूप से दी जाती है। हालांकि, यदि एक ही सत्र (उसी सत्र आईडी मान का उपयोग करके) के लिए दो समवर्ती अनुरोध किए जाते हैं, तो पहला अनुरोध सत्र जानकारी तक विशेष पहुंच प्राप्त करता है। पहला अनुरोध पूरा होने के बाद ही दूसरा अनुरोध निष्पादित होता है। (दूसरा सत्र भी एक्सेस प्राप्त कर सकता है यदि जानकारी पर विशेष लॉक मुक्त हो जाता है क्योंकि पहला अनुरोध लॉक टाइम-आउट से अधिक है।) यदि @ Page निर्देश में EnableSessionState मान केवल पढ़ने के लिए सेट है, केवल पढ़ने के लिए अनुरोध सत्र जानकारी के परिणामस्वरूप सत्र डेटा पर एक विशेष लॉक नहीं होता है। हालांकि, सत्र डेटा के लिए केवल-पढ़ने के अनुरोधों को सत्र डेटा के लिए पढ़ने के लिए एक रीड-राइट अनुरोध द्वारा लॉक सेट की प्रतीक्षा करनी पड़ सकती है।

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