asp.net - आईआईएस 7 में 'क्लासिक' और 'एकीकृत' पाइपलाइन मोड के बीच क्या अंतर है?




asp.net-mvc iis (4)

मैं कल रात एएसपी.नेट एमवीसी एप्लीकेशन तैनात कर रहा था, और पाया कि आईआईएस 7 सेट को एकीकृत मोड में तैनात करने के लिए यह कम काम है। मेरा सवाल यह है कि क्या अंतर है? और एक या दूसरे का उपयोग करने के प्रभाव क्या हैं?


आईआईएस 6.0 और पिछले संस्करण:

एक आईएसएपीआई एक्सटेंशन के माध्यम से आईआईएस के साथ एकीकृत एएसपी.नेट, एक सी एपीआई (सी प्रोग्रामिंग भाषा आधारित एपीआई) और अपने स्वयं के आवेदन और प्रसंस्करण मॉडल का खुलासा किया।

इसने प्रभावी रूप से दो अलग सर्वर (अनुरोध / प्रतिक्रिया) पाइपलाइनों का खुलासा किया, एक देशी आईएसएपीआई फिल्टर और एक्सटेंशन घटकों के लिए, और दूसरा प्रबंधित अनुप्रयोग घटकों के लिए। एएसपी.नेट घटक पूरी तरह से एएसपी.नेट आईएसएपीआई एक्सटेंशन बबल के अंदर निष्पादित होंगे और केवल आईआईएस स्क्रिप्ट मैप कॉन्फ़िगरेशन में एएसपी.नेट पर मैप किए गए अनुरोधों के लिए।

गैर एएसपी.नेट सामग्री प्रकारों के लिए अनुरोध: - छवियों, टेक्स्ट फाइलों, एचटीएमएल पेज, और स्क्रिप्ट-कम एएसपी पेज, आईआईएस या अन्य आईएसएपीआई एक्सटेंशन द्वारा संसाधित किए गए थे और एएसपी.नेट को दिखाई नहीं दे रहे थे।

इस मॉडल की प्रमुख सीमा यह थी कि एएसपी.नेट मॉड्यूल और कस्टम एएसपी.नेट आवेदन कोड द्वारा प्रदान की जाने वाली सेवाएं गैर एएसपी.नेट अनुरोधों के लिए उपलब्ध नहीं थीं

एससीआरआईपीटी एमएपी क्या है?

स्क्रिप्ट मैप्स का उपयोग आईएसएपीआई हैंडलर के साथ फाइल एक्सटेंशन को जोड़ने के लिए किया जाता है जो उस फ़ाइल प्रकार के अनुरोध के दौरान निष्पादित करता है। स्क्रिप्ट मानचित्र में एक वैकल्पिक सेटिंग भी होती है जो सत्यापित करती है कि अनुरोध से जुड़े भौतिक फ़ाइल अनुरोध को संसाधित करने से पहले मौजूद है

यहां एक अच्छा उदाहरण seen here जा सकता seen here

आईआईएस 7 और ऊपर

आईआईएस 7.0 और ऊपर को एक नया सी ++ एपीआई आधारित आईएसएपीआई प्रदान करने के लिए ग्राउंड अप से फिर से इंजीनियर किया गया है।

आईआईएस 7.0 और बाद वाले वर्शन वेब सर्वर की मूल कार्यक्षमता के साथ एएसपी.NET रनटाइम को एकीकृत करता है, जो एक एकीकृत (एकल) अनुरोध प्रसंस्करण पाइपलाइन प्रदान करता है जो मॉड्यूल (IHttpModules) के नाम से जाना जाने वाला देशी और प्रबंधित दोनों घटकों के सामने आता है।

इसका अर्थ यह है कि आईआईएस 7 उन प्रक्रियाओं को संसाधित करता है जो किसी भी सामग्री प्रकार के लिए आते हैं, जिसमें सभी NON ASP.NET Modules / native IIS modules और ASP.NET modules दोनों चरणों में अनुरोध प्रसंस्करण प्रदान करते हैं , यही वजह है कि गैर एएसपी.नेट सामग्री प्रकार ( एचटीएमएल, स्थिर फाइलें) .NET मॉड्यूल द्वारा संभाला जा सकता है।

  • आप नए प्रबंधित मॉड्यूल ( IHttpModule ) का निर्माण कर सकते हैं जिनके पास सभी एप्लिकेशन सामग्री के लिए निष्पादित करने की क्षमता है, और आपके आवेदन के लिए अनुरोध प्रसंस्करण सेवाओं का एक उन्नत सेट प्रदान किया गया है।
  • नए प्रबंधित हैंडलर जोड़ें ( IHttpHandler )

एकीकृत अनुप्रयोग पूल मोड

जब एक अनुप्रयोग पूल एकीकृत मोड में होता है, तो आप आईआईएस और एएसपी.नेट के एकीकृत अनुरोध-प्रसंस्करण वास्तुकला का लाभ उठा सकते हैं। जब किसी एप्लिकेशन पूल में कोई कार्यकर्ता प्रक्रिया अनुरोध प्राप्त करती है, तो अनुरोध ईवेंट की ऑर्डर की गई सूची से गुज़रता है। प्रत्येक घटना अनुरोध के भाग को संसाधित करने और प्रतिक्रिया उत्पन्न करने के लिए आवश्यक देशी और प्रबंधित मॉड्यूल को कॉल करती है।

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

क्लासिक एप्लिकेशन पूल मोड

जब क्लासिक मोड में कोई एप्लिकेशन पूल होता है, तो आईआईएस 7.0 आईआईएस 6.0 कार्यकर्ता प्रक्रिया अलगाव मोड में अनुरोधों को संभालता है। एएसपी.NET अनुरोध पहले आईआईएस में देशी प्रसंस्करण चरणों के माध्यम से जाते हैं और फिर प्रबंधित रनटाइम में प्रबंधित कोड की प्रसंस्करण के लिए Aspnet_isapi.dll पर जाते हैं। अंत में, प्रतिक्रिया भेजने के लिए आईआईएस के माध्यम से अनुरोध वापस भेजा गया है।

आईआईएस और एएसपी.नेट अनुरोध-प्रसंस्करण मॉडल के इस अलगाव के परिणामस्वरूप प्रमाणीकरण और प्रमाणीकरण जैसे कुछ प्रसंस्करण चरणों के दोहराव में परिणाम मिलता है। इसके अतिरिक्त, प्रबंधित प्रमाणीकरण जैसे प्रबंधित कोड सुविधाएं, केवल एएसपी.NET अनुप्रयोगों या अनुप्रयोगों के लिए उपलब्ध हैं जिनके लिए आपके पास स्क्रिप्ट है, सभी अनुरोधों को aspnet_isapi.dll द्वारा प्रबंधित किया जा सकता है।

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

से लिया गया: IIS7 में DefaultAppPool और क्लासिक .NET AppPool के बीच क्या अंतर है?

मूल स्रोत: आईआईएस वास्तुकला का परिचय


क्लासिक मोड में आईआईएस एच आईएसएपीआई एक्सटेंशन और आईएसएपीआई फ़िल्टर सीधे काम करता है। और दो पाइप लाइनों का उपयोग करता है, एक देशी कोड के लिए और अन्य प्रबंधित कोड के लिए। आप बस इतना कह सकते हैं कि क्लासिक मोड IIS 7.x में आईआईएस 6 के रूप में काम करता है और आपको आईआईएस 7.x सुविधाओं से अतिरिक्त लाभ नहीं मिलते हैं।

क्लासिक मोड के मामले में एएसपीनेट पर केवल दो डीएलएल के आधार पर एकीकृत मोड आईआईएस और एएसपी.Net को कसकर जोड़ दिया जाता है।


क्लासिक मोड आमतौर पर, आईआईएस 6.0 से आईआईएस 7.0 क्लासिक मोड में वेब एप्लिकेशन को ले जाने की आवश्यकता होती है केवल क्लासिक मोड में चल रहे एप्लिकेशन पूल में एप्लिकेशन को रखना आवश्यक है। उदाहरण के लिए, जब आप IIS 7.0 को डिफ़ॉल्ट रूप से स्थापित करते हैं, तो वेब सर्वर को एकीकृत मोड में संचालित करने के लिए कॉन्फ़िगर किया गया है। यह डिफ़ॉल्ट अनुप्रयोग पूल के अंतर्गत चलाने के लिए भी कॉन्फ़िगर किया गया है, जिसे DefaultAppPool कहा जाता है। क्लासिक मोड में वेब अनुप्रयोग चलाने के लिए, क्लासिक .NETAppPool एप्लिकेशन का उपयोग करें या क्लासिक मोड में चलाने के लिए कॉन्फ़िगर किया गया एक नया एप्लिकेशन पूल बनाएं। एप्लिकेशन पूल बनाने के तरीके के बारे में जानकारी के लिए, एक एप्लिकेशन पूल बनाएं देखें। क्लासिक मोड में चल रहे किसी एप्लिकेशन में IHttpModule इंटरफ़ेस को लागू करने वाले किसी भी कस्टम मॉड्यूल को केवल एएसपी.NET रनटाइम द्वारा प्रबंधित किए गए पाइपलाइन अनुरोधों के बारे में सूचित किया जाता है। उदाहरण के लिए, उन्हें .aspx पृष्ठ के अनुरोधों के बारे में सूचित किया जाता है। क्लासिक मोड के लिए एप्लिकेशन लाइफ चक्र आईआईएस 6.0 में एएसपी.नेट के लिए जीवन चक्र जैसा ही है। अधिक जानकारी के लिए, आईआईएस 5.0 और 6.0 के लिए एएसपी.NET एप्लिकेशन लाइफ साइकिल अवलोकन देखें। यदि क्लासिक मोड में चलने वाले एक एप्लिकेशन में एक हैंडलर होता है जिसके लिए आईआईएस में कस्टम एक्सटेंशन को संभालने के लिए स्क्रिप्ट मैप की आवश्यकता होती है, तो आपको httpHandler समूह और हैंडलर समूह दोनों में हैंडलर पंजीकृत करना होगा। आप हैंडलर तत्व में मॉड्यूल और स्क्रिप्ट प्रोसेसर विशेषताओं को निर्दिष्ट करके ASP.NET ISAPI एक्सटेंशन (Aspnet_isapi.dll) पर कस्टम फ़ाइल-नाम एक्सटेंशन को मैप करते हैं। ये गुण निर्दिष्ट करते हैं कि हैंडलर को परिभाषित करने वाला मॉड्यूल एक आईएसएपीआई एक्सटेंशन है, और वे उस एक्सटेंशन का पथ निर्दिष्ट करते हैं। क्लासिक मोड में आईआईएस 7.0 आईआईएस के पिछले संस्करणों के साथ पिछड़ा संगतता प्रदान करता है। हालांकि, यदि आप एकीकृत मोड में एप्लिकेशन चलाते हैं, तो आपको मॉड्यूल और स्क्रिप्ट प्रोसेसर विशेषताओं को हटा देना होगा। अधिक जानकारी के लिए, देखें कि कैसे IIS में HTTP हैंडलर एक्सटेंशन कॉन्फ़िगर करें। जब आप आईआईएस 6.0 से क्लासिक मोड में वेब एप्लिकेशन ले जाते हैं, तो इसे बिना किसी बदलाव के एकीकृत मोड में काम करने की गारंटी नहीं है। यदि आप क्लासिक मोड से इंटीग्रेटेड मोड (और किसी भी कस्टम मॉड्यूल और हैंडलर को बदलें) से एप्लिकेशन स्विच करते हैं, तो आपको एकीकृत मोड में एप्लिकेशन को सही तरीके से चलाने के लिए अतिरिक्त परिवर्तन करना पड़ सकता है। इस विषय में अगला अनुभाग बताता है कि एप्लिकेशन को आईआईएस 7.0 एकीकृत मोड में कैसे स्थानांतरित किया जाए।

एकीकृत मोड वेब अनुप्रयोग जिनमें कस्टम मॉड्यूल या हैंडलर शामिल नहीं हैं आमतौर पर आईआईएस 7.0 में एकीकृत मोड में बदलाव किए बिना काम करेंगे। कस्टम मॉड्यूल या हैंडलरों पर भरोसा करने वाले वेब अनुप्रयोगों को एकीकृत मोड में एप्लिकेशन को चलाने में सक्षम करने के लिए निम्न चरणों की आवश्यकता होती है: माइग्रेटिंग में वर्णित विधियों में से किसी एक का उपयोग करके Web.config फ़ाइल के system.web सर्वर अनुभाग में कस्टम मॉड्यूल और हैंडलर पंजीकृत करें इस विषय में बाद में एकीकृत मोड अनुभाग में एक वेब कॉन्फ़िगर फ़ाइल। कस्टम मॉड्यूल की इनिट विधि में केवल BeginRequest और EndRequest जैसे Http अनुप्रयोग अनुरोध पाइपलाइन ईवेंट के लिए इवेंट हैंडलर को परिभाषित करें। सुनिश्चित करें कि आपने आईआईएस 7.0 में एएसपी.NET अनुप्रयोगों को अपग्रेड करने के एकीकृत "मोड और क्लासिक मोड के बीच ज्ञात मतभेद" अनुभाग में चर्चा किए गए किसी भी मुद्दे को संबोधित किया है: आईआईएस 7.0 एकीकृत मोड और क्लासिक मोड के बीच मतभेद। IHttpModule इंटरफ़ेस को लागू करने वाले मॉड्यूल को प्रबंधित-कोड मॉड्यूल के रूप में संदर्भित किया जाता है क्योंकि वे .NET Framework का उपयोग कर बनाए जाते हैं। प्रबंधित कोड कोड मॉड्यूल सर्वर स्तर पर या आवेदन स्तर पर पंजीकृत किया जा सकता है। मूल-कोड मॉड्यूल डीएलएल (गैर-प्रबंधित कोड) हैं जो केवल सर्वर स्तर पर पंजीकृत हैं। कोर एएसपी.नेट सुविधाओं, जैसे कि सत्र राज्य और प्रपत्र प्रमाणीकरण, एकीकृत मोड में प्रबंधित मॉड्यूल के रूप में लागू किए जाते हैं। जब आप क्लासिक से इंटीग्रेटेड मोड में किसी एप्लिकेशन को ले जाते हैं, तो आप क्लासिक मोड के लिए कस्टम मॉड्यूल और हैंडलर पंजीकरण छोड़ सकते हैं, या आप उन्हें हटा सकते हैं। यदि आप क्लासिक मोड में उपयोग किए जाने वाले httpModules और httpHandlers रजिस्ट्रेशन को नहीं हटाते हैं, तो आपको त्रुटियों से बचने के लिए सत्यापन तत्व की वैध एकीकृत इंटीग्रेटेड मोड कॉन्फ़िगरेशन विशेषता को गलत पर सेट करना होगा। सत्यापन तत्व system.web सर्वर तत्व का एक बाल तत्व है। अधिक जानकारी के लिए, IIS 7.0 के साथ ASP.NET एकीकरण में "माइग्रेशन संदेश अक्षम करना" अनुभाग देखें।





integrated-pipeline-mode