मैं कुछ इतिहास के साथ एक वैकल्पिक उत्तर देना चाहता हूं, ताकि आप समझ सकें कि केटलर क्यों आता है, भले ही आप केवल विंडोज और आईआईएस का उपयोग करें।
वर्ष 2000 से पहले ASP.NET विकास की शुरुआत में, स्पष्ट रूप से Microsoft ने ASP.NET WebForms ऐप्स की मेजबानी के लिए दो टुकड़े बनाए,
- कैसिनी, बाद में विजुअल स्टूडियो में ASP.NET डेवलपमेंट सर्वर बन गया। यह पूरी तरह से प्रबंधित वेब सर्वर है जो C # पर आधारित है
HttpListener
। बेशक, चूंकि यह केवल विकास के लिए था, कई सुविधाओं को कभी भी लागू नहीं किया गया था। जैसा कि माइक्रोसॉफ्ट ने कैसिनी के स्रोत कोड को जनता के लिए उपलब्ध कराया है, तीसरे पक्ष हैं जिन्होंने कोड आधार को कांटा और अधिक सुविधाएँ जोड़ीं, जिससे कैसिनी परिवार शुरू हुआ।
- IIS पर ASP.NET समर्थन (संशोधन 1)। क्योंकि उस समय IIS 4.0 और 5.0 / 5.1 था, जिसमें एप्लिकेशन पूल जैसा कुछ भी नहीं था, ASP.NET की अपनी कार्यकर्ता प्रक्रिया (
aspnet_wp.exe
) भी है।
तो एक वेब ऐप विकसित करने के लिए, आप कैसिनी का उपयोग करते हैं, और आपको आईआईएस का उपयोग करने के लिए तैनात करते हैं।
IIS 6 में एप्लिकेशन पूल की शुरूआत को ASP.NET की ओर से कुछ बदलावों की आवश्यकता थी, इसलिए aspnet_wp.exe
अप्रचलित हो गया और इसे बदल दिया गया aspnet_isapi.dll
। इसे IIS संशोधन पर ASP.NET समर्थन के रूप में देखा जा सकता है। इसलिए ASP.NET ऐप को IIS कार्यकर्ता प्रक्रियाओं में होस्ट किया जा रहा है w3wp.exe
।
IIS 7 और इसके बाद के संस्करण में एकीकृत पाइपलाइन की शुरूआत में और परिवर्तन हुए, जो इसके aspnet_isapi.dll
साथ बदल गया webengine4.dll
। इसे IIS संशोधन पर ASP.NET समर्थन के रूप में देखा जा सकता है। ASP.NET और IIS पाइपलाइन एकीकृत हैं।
आप देख सकते हैं ASP.NET बहुत अधिक जटिल और कसकर IIS के साथ एकीकृत हो गया है, इसलिए कैसिनी ने अपनी उम्र दिखाना शुरू कर दिया, और धीरे-धीरे IIS एक्सप्रेस (एक उपयोगकर्ता मोड लाइट IIS) द्वारा प्रतिस्थापित किया गया।
इस प्रकार, कई मामलों में, जब लोग दोष लगाते हैं कि IIS धीमा है, तो उन्हें वास्तव में ASP.NET को दोष देना चाहिए। ASP.NET के बिना IIS अपने आप में बहुत तेज़ और स्थिर है, जबकि ASP.NET को मन में पर्याप्त प्रदर्शन मेट्रिक्स के साथ विकसित नहीं किया गया था (जैसा कि WebForms काफी उत्पादकता और आरएडी पर केंद्रित है)।
फिर नवंबर 2014 में, ASP.NET 5 (बाद में इसका नाम बदलकर ASP.NET Core) कर दिया गया और यह क्रॉस प्लेटफॉर्म तकनीक बन गया। जाहिर है कि Microsoft को Windows, macOS और Linux को समर्थन देने के लिए एक नए डिज़ाइन की आवश्यकता थी, जहाँ IIS के अलावा सभी प्रमुख वेब सर्वर, nginx / Apache (या अन्य वेब सर्वर) पर विचार किया जाना चाहिए।
मुझे लगता है कि कई इस बात से सहमत होंगे कि माइक्रोसॉफ्ट ने NodeJS से काफी कुछ सीखा है, और फिर Kestrel को डिज़ाइन किया और विकसित किया है ( libuv
शुरू में आधारित है लेकिन जल्द ही अन्य तकनीक में स्थानांतरित हो सकता है)। यह शुरुआत में कैसिनी की तरह एक हल्के वजन वाला वेब सर्वर है, लेकिन बाद में इसमें और फीचर जोड़े जा रहे हैं (जैसे एक अन्य उत्तर में टिप्पणी की गई, बहुत अधिक सुविधाओं को पूर्ण वेब सर्वर के रूप में माना जा सकता है)। हालांकि पूरी तरह से प्रबंधित (कुछ देशी निर्भरताएं मौजूद हैं), यह अब कैसिनी की तरह एक खिलौना वेब सर्वर नहीं है।
तो फिर आप सिर्फ Kestrel का उपयोग क्यों नहीं कर सकते? IIS एक्सप्रेस और संभावित IIS, nginx या Apache अभी भी क्यों आवश्यक है? यह मुख्य रूप से आज के इंटरनेट अभ्यास का एक परिणाम है। अधिकांश वेब साइटें अपने वेब ब्राउज़र से अनुरोधों को लेने के लिए रिवर्स प्रोक्सीज़ का उपयोग करती हैं और फिर बैकग्राउंड में एप्लिकेशन सर्वरों पर अग्रेषित करती हैं।
- IIS एक्सप्रेस / IIS / nginx / Apache रिवर्स प्रॉक्सी सर्वर हैं
- Kestrel / NodeJS / Tomcat और इतने पर अनुप्रयोग सर्वर हैं
एक अन्य उत्तर में पहले से ही Microsoft दस्तावेज़ का लिंक दिखाया गया है, ताकि आप देख सकें।
Microsoft ने शुरू में HttpPlatformHandler को विकसित किया ताकि IIS को Java / Python के लिए एक अच्छा रिवर्स प्रॉक्सी बनाया जा सके और इसलिए ASP.NET कोर के लिए इसका उपयोग करने की योजना बनाई। विकास के दौरान मुद्दे दिखाई देने लगे, इसलिए बाद में Microsoft ने ASP.NET Core मॉड्यूल को विशेष रूप से ASP.NET कोर के लिए बनाया। कि IIS संशोधन 4 पर ASP.NET का समर्थन है।
ASP.NET Core 2.2 से शुरू, IIS के लिए ASP.NET कोर मॉड्यूल (संस्करण 2) IIS कार्यकर्ता प्रक्रिया ( w3wp.exe
) के अंदर .NET कोर वातावरण की मेजबानी कर सकता है , काफी हद तक ASP.NET 2.x / 4.x के समान है। इस मोड को "IIS इन-प्रोसेस होस्टिंग" कहा जाता है । इसे IIS संशोधन 5 पर ASP.NET समर्थन के रूप में माना जा सकता है।
खैर, काफी लंबा है, लेकिन मुझे आशा है कि मैंने सभी आवश्यक टुकड़ों को एक साथ रखा है और आप इसे पढ़ने का आनंद लेते हैं।