2008-08-14 12 views
9

हमारे पास एक अलग विंडोज सेवा में चल रहे एक रिमोटिंग सिंगलटन सर्वर है (चलिए उसे रिमोटिंग सेवा कहते हैं)। RemotingService के ग्राहक ASP.NET उदाहरण हैं (कई कई)।असिंक्रोनस रीमोटिंग कॉल

वर्तमान में, ग्राहक RemotingService कॉल को रिमोटिंग सेवा और ब्लॉक को रिमोट करते हैं जबकि RemotingService कॉल की सेवा की जाती है। हालांकि, रिमोटिंग सेवा काफी जटिल हो रही है (अधिक आरपीसी कॉल और जटिल एल्गोरिदम के साथ) कि एएसपीनेट वर्कर थ्रेड को काफी लंबे समय (4-5 सेकेंड) के लिए अवरुद्ध कर दिया गया है।

this msdn article के अनुसार, ऐसा करने में अच्छी तरह से स्केल नहीं करेगा क्योंकि एक asp.net कार्यकर्ता धागा प्रत्येक दूरस्थ आरपीसी के लिए अवरुद्ध है। यह asp.net कार्यकर्ता धागे को मुक्त करने के लिए एसिंक हैंडलर पर स्विच करने की सलाह देता है।

एक अतुल्यकालिक हैंडलर के प्रयोजन के सेवा के लिए अतिरिक्त अनुरोध जबकि हैंडलर मूल अनुरोध संसाधित कर रहा है एक ASP.NET थ्रेड पूल धागा को मुक्त करने के लिए है।

यह ठीक लगता है, रिमोटिंग कॉल को छोड़कर थ्रेड पूल से अभी भी एक थ्रेड लेता है। क्या यह वही थ्रेड पूल एएसपीनेट वर्कर थ्रेड के रूप में है?

मुझे अपने रिमोटिंग सिंगलटन सर्वर को एसिंक सिस्टम में बदलने के बारे में कैसे जाना चाहिए जैसे कि मैं अपने एएसपीनेट वर्कर थ्रेड को मुक्त करता हूं?

शायद मुझे कुछ महत्वपूर्ण जानकारी याद आ गई है, तो कृपया मुझे बताएं कि क्या आपको कुछ जवाब देने के लिए जानने की आवश्यकता है।

उत्तर

0

थ्रेडपूल का उपयोग करने के पीछे विचार यह है कि इसके माध्यम से आप सिंक्रोनस थ्रेड की मात्रा को नियंत्रित कर सकते हैं, और यदि उन्हें बहुत अधिक मिलता है, तो थ्रेड पूल स्वचालित रूप से नए धागे की प्रतीक्षा का प्रबंधन करता है।

Asp.Net काम थ्रेड (AFAIK) थ्रेड पूल से नहीं आया है और रिमोटिंग सेवा पर आपके कॉल से प्रभावित नहीं होना चाहिए (जब तक कि यह बहुत धीमी प्रोसेसर न हो, और आपका रिमोटिंग फ़ंक्शन बहुत CPU है गहन - इस मामले में, आपके कंप्यूटर पर सबकुछ प्रभावित होगा)।

आप हमेशा एक अलग भौतिक सर्वर पर रिमोटिंग सेवा होस्ट कर सकते हैं। उस स्थिति में, आपका एएसपीनेट वर्कर थ्रेड आपके रिमोटिंग कॉल से पूरी तरह से स्वतंत्र होगा (यदि रिमोटिंग कॉल को एक अलग थ्रेड पर कहा जाता है)।

+0

जैसा कि प्रश्न में जुड़े आलेख में बताया गया है, एएसपीनेट वर्कर थ्रेड वास्तव में रनटाइम्स थ्रेड पूल से आता है। – CVertex

0

Asynchronous Pages in ASP.NET पर एक नज़र डालें।

+0

धन्यवाद, लेकिन मैं विशेष रूप से HttpHandlers की तलाश में हूं। – CVertex

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