यह मेरी समझ है कि वेब एप्लिकेशन को कैसे शुरू / होस्ट किया जाता है, इसका अनुसरण करना बहुत ही भ्रामक है। एक छोटा सारांश:
1. क्लासिक ASP.NET: अनिवार्य IIS पाइपलाइन के अंतिम चरण में चलाने के लिए केवल एप्लिकेशन कोड लिखें
2. ASP.NET OWIN के साथ: एक .NET वेबसर्वर कॉन्फ़िगर करें और अपना एप्लिकेशन कोड लिखें। अब सीधे IIS से युग्मित नहीं किया जाता है, इसलिए अब आप इसका उपयोग करने के लिए मजबूर नहीं हैं।
3. ASP.NET Core: अपने एप्लिकेशन कोड का उपयोग करने और लिखने के लिए होस्ट और वेबसर्वर दोनों को कॉन्फ़िगर करें। यदि आप .NET .NET के बजाय पूर्ण .NET फ्रेमवर्क को लक्षित करते हैं तो .NET वेबसर्वर का उपयोग करने के लिए अनिवार्य नहीं है।
अब मैं विस्तार से थोड़ा और विस्तार करूँगा कि यह कैसे काम करता है और आवेदन शुरू करने के लिए किन वर्गों का उपयोग किया जाता है:
क्लासिक ASP.NET
क्लासिक ASP.NET अनुप्रयोगों Global.asax
में प्रवेश बिंदु के रूप में फ़ाइल है। ये एप्लिकेशन केवल IIS में चलाए जा सकते हैं और आपका कोड IIS पाइपलाइन के अंत में निष्पादित हो जाता है (इसलिए IIS आपके कोड से पहले भी, प्रमाणीकरण, CORS के लिए ज़िम्मेदार है ...)। IIS 7 के बाद से आप अपने एप्लिकेशन को एकीकृत मोड में चला सकते हैं जो ASP.NET रनटाइम को IIS में एकीकृत करता है। यह आपके कोड को कार्यक्षमता को कॉन्फ़िगर करने में सक्षम बनाता है जो पहले (या केवल IIS में ही) संभव नहीं था जैसे कि आपकी फ़ाइल की स्थिति में url पुनर्लेखन या Application_Start
आपकी Global.asax
फ़ाइल में नए <system.webserver>
अनुभाग का उपयोग करें web.config
।
OWIN के साथ ASP.NET
सबसे पहले OWIN एक पुस्तकालय नहीं है, लेकिन .NET वेब सर्वर (उदाहरण के लिए IIS) वेब अनुप्रयोगों के साथ सहभागिता का एक विनिर्देश है। Microsoft के पास स्वयं OWIN का एक प्रोजेक्ट है जिसे प्रोजेक्ट कटाना (कई अलग-अलग NuGet पैकेजों के माध्यम से वितरित) कहा जाता है। यह कार्यान्वयन Microsoft द्वारा प्रदान किए गए IAppBuilder
इंटरफ़ेस को आपको एक Startup
क्लास और कुछ OWIN मिडलवेयर घटकों (OMC) में प्रदान करता है। का उपयोग करते हुएIAppBuilder
आप मूल रूप से वेबसर्वर के लिए पाइपलाइन बनाने के लिए प्लग-एंड-प्ले तरीके से मिडलवेयर की रचना करते हैं (IIS7 में केवल ASP.NET पाइपलाइन के अलावा + ऊपर के बिंदु में) के बजाय IIS पाइपलाइन से बंधा हुआ है (लेकिन अब आप उपयोग करते हैं CORS के लिए एक मिडिलवेयर घटक, प्रमाणीकरण के लिए एक मिडलवेयर घटक ...)। इस वजह से, आपका एप्लिकेशन विशेष रूप से IIS के लिए अब और युग्मित नहीं है और आप इसे किसी भी .NET वेबसर्वर पर चला सकते हैं, उदाहरण के लिए:
- OwinHost पैकेज आत्म मेजबान एक कटाना वेबसर्वर के साथ अपने आवेदन करने के लिए इस्तेमाल किया जा सकता।
- Microsoft.Owin.Host.SystemWeb पैकेज सही जीवन की घटनाओं को आंतरिक रूप से करने के लिए अपने मिडलवेयर सदस्यता लेने के द्वारा, एकीकृत मोड में IIS7 + में अपने Owin आवेदन की मेजबानी के लिए प्रयोग किया जाता है।
वह चीज़ जो हर चीज़ को इतना भ्रामक बना देती है कि Global.asax
वह अभी भी OWIN Startup
वर्ग के साथ एक साथ समर्थित है , जबकि वे दोनों समान काम कर सकते हैं। उदाहरण के लिए, आप Global.asax
OWIN मिडलवेयर का उपयोग करके कोर्स को और प्रमाणीकरण को लागू कर सकते हैं जो वास्तव में भ्रामक हो जाता है।
जब भी मुझे OWIN को जोड़ने की आवश्यकता होती है, मेरे अंगूठे का नियम पूरी तरह से Global.asax
फ़ाइल को हटाने के पक्ष में है Startup
।
ASP.NET कोर
ASP.NET Core अगला विकास है और अब आप .NET कोर या पूर्ण .NET फ्रेमवर्क को लक्षित कर सकते हैं। जब आप .NET कोर को लक्षित करते हैं तो आप अपने एप्लिकेशन को किसी भी होस्ट पर चला सकते हैं जो .NET मानक का समर्थन करता है। इसका मतलब है कि आप अब एक .NET वेबसर्वर (पिछले बिंदु की तरह) तक सीमित नहीं हैं, लेकिन अपने एप्लिकेशन को डॉकर कंटेनर, एक लिनक्स वेबसर्वर, IIS ... में होस्ट कर सकते हैं।
एक ASP.NET कोर वेब अनुप्रयोग के लिए प्रवेश बिंदु Program.cs
फ़ाइल है। वहां आप अपने होस्ट को कॉन्फ़िगर करते हैं और फिर से अपनी Startup
कक्षा को निर्दिष्ट करते हैं जहां आप अपनी पाइपलाइन को कॉन्फ़िगर करते हैं। OWIN ( IAppBuilder.UseOwin
एक्सटेंशन विधि का उपयोग करके ) वैकल्पिक है, लेकिन पूरी तरह से समर्थित है ।
AreaRegistration.RegisterAllAreas();
मेरे लिए एक त्रुटि का कारण बना क्योंकि इस पद्धति को स्टार्टअप के दौरान इस तरह उपयोग करने की अनुमति नहीं है, केवल मेंApplication_Start
। हालाँकि, मेरा एप्लिकेशन API है और यह विधि जाहिरा तौर पर केवल MVC अनुप्रयोगों के लिए उपयोगी है: stackoverflow.com/questions/18404637/…