IIS7 में 'क्लासिक' और 'एकीकृत' पाइपलाइन मोड के बीच अंतर क्या है?


490

मैं कल रात एक ASP.NET MVC एप्लिकेशन को तैनात कर रहा था, और यह पता चला कि यह IIS7 सेट के साथ एकीकृत मोड पर तैनात करने के लिए कम काम है। मेरा सवाल यह है कि अंतर क्या है? और एक या दूसरे का उपयोग करने के निहितार्थ क्या हैं?


10
यह कैसे एकीकृत मोड बनाम क्लासिक के साथ तैनात करने के लिए कम काम था? बस जिज्ञासु
पीटर लिलवॉल्ड

9
@ पेटर: विस्तार रहित यूआरएल को क्लासिक मोड में मैन्युअल रूप से मैप करने की आवश्यकता होती है।
मेहरदाद अफश्री

2
MVC Global.asax में भी नोट्स पढ़ें: IIS6 या IIS7 क्लासिक मोड को सक्षम करने के निर्देशों के लिए, go.microsoft.com/?LinkId=9394801 पर जाएं । या आप बस एकीकृत मोड को चालू कर सकते हैं और इसमें System.Web.Mvc असेंबली और सब कुछ शामिल है जो बस काम करता है।
जॉन एलिकसन

जवाबों:


642

क्लासिक मोड (IIS6 और नीचे का एकमात्र मोड) एक ऐसी विधि है, जहां IIS केवल ISAPI एक्सटेंशन और ISAPI फ़िल्टर के साथ सीधे काम करता है। वास्तव में, इस मोड में, ASP.NET केवल एक ISAPI एक्सटेंशन (aspnet_isapi.dll) और एक ISAPI फ़िल्टर (aspnet_filter.dll) है। IIS केवल ASP.NET को ISAPI में लागू किए गए बाहरी प्लगइन के रूप में मानता है और इसके साथ एक ब्लैक बॉक्स की तरह काम करता है (और केवल तभी जब इसे ASP.NET को अनुरोध करने की आवश्यकता होती है)। इस मोड में, ASP.NET, IIS के लिए PHP या अन्य तकनीकों से बहुत अलग नहीं है।

दूसरी ओर एकीकृत मोड, IIS7 में एक नया मोड है जहां IIS पाइपलाइन कसकर एकीकृत है (यानी सिर्फ एक ही है) ASP.NET अनुरोध पाइपलाइन के रूप में। ASP.NET हर उस अनुरोध को देख सकता है जिसे वह चाहता है और रास्ते में चीजों में हेरफेर कर सकता है। ASP.NET अब बाहरी प्लगइन के रूप में नहीं माना जाता है। यह पूरी तरह से मिश्रित और IIS में एकीकृत है। इस मोड में, ASP.NET HttpModuleमूल रूप से एक ISAPI फ़िल्टर के रूप में लगभग शक्ति के रूप में होगा और ASP.NET के HttpHandlerपास लगभग समान क्षमता हो सकती है क्योंकि ISAPI एक्सटेंशन हो सकता है। इस मोड में, ASP.NET मूल रूप से IIS का एक हिस्सा है।


8
क्लासिक की तुलना में धीमी है?
एलेक्स नोल्को

मुझे यकीन नहीं है कि अगर यह कहना सही है कि asp.net IIS का एक हिस्सा है। वे एक अलग (यद्यपि एकीकृत) उत्पादों की तरह दिखते हैं। मै गलत हो सकता हूँ।
एंड्रयू साविनिख

@MehrdadAfshari में HttpModulesकार्यप्रणाली / iis7कार्यप्रणाली से अधिक कार्यक्षमता है iis6? क्या आप इसे विस्तार में बताने में सक्षम हैं ?
रॉय नमिर

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

1
इस तरह के प्रश्न का एक सही उत्तर, कम से कम Microsoft लेखों में से एक को संदर्भित करना चाहिए, जैसे कि iis.net/learn/application-frameworks/…
लेक्स ली

115

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

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

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

क्लासिक अनुप्रयोग पूल मोड

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

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

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

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

मूल स्रोत: IIS आर्किटेक्चर का परिचय


28
अंतिम पैराग्राफ में मुख्य वाक्य: "यदि आवेदन एकीकृत मोड में काम करने में विफल रहता है, तो आपको केवल क्लासिक मोड में एप्लिकेशन पूल में एक आवेदन जोड़ना चाहिए।"
डेविडआरआर

6
@JsonStatham - इसका एक कारण यह है कि एकीकृत मोड ASP.NET प्रतिरूपण (साइट्स> YourSite> IIS> प्रमाणीकरण) का उपयोग नहीं कर सकता है। यदि आपके पास एक इंट्रानेट साइट है और विंडोज ऑथेंटिकेशन का उपयोग कर रहे हैं, तो यह एक महत्वपूर्ण विचार है। लिंक
user3308241

11

IIS 6.0 और पिछले संस्करण:

ASP.NET एक ISAPI एक्सटेंशन, एक C API (C प्रोग्रामिंग भाषा आधारित API) के माध्यम से IIS के साथ एकीकृत हुआ और अपने स्वयं के एप्लिकेशन और अनुरोध प्रसंस्करण मॉडल को उजागर किया।

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

गैर-ASP.NET सामग्री प्रकारों के लिए अनुरोध: - छवियाँ, पाठ फ़ाइलें, HTML पृष्ठ और स्क्रिप्ट-कम ASP पृष्ठ, IIS या अन्य ISAPI एक्सटेंशन द्वारा संसाधित किए गए थे और ASP.NET के लिए दृश्यमान नहीं थे।

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

SCRIPT MAP क्या है?

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

एक अच्छा उदाहरण हो सकता है seen here

IIS 7 और ऊपर

IIS 7.0 और इसके बाद के संस्करण को नए सिरे से ISAPI आधारित एक नया C ++ एपीआई प्रदान करने के लिए जमीन से फिर से इंजीनियर किया गया है।

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

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

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

5

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

एकीकृत मोड में IIS और ASP.Net कसकर युग्मित किए जाते हैं, बल्कि Asp.net पर सिर्फ दो DLL पर निर्भर करते हैं जैसे कि क्लासिक मोड के मामले में।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.