What happens when ASP.NET Core starts
जब ASP.NET Core एप्लीकेशन शुरू होता है, तो Main मेथड ही एंट्री पॉइंट होता है, बिल्कुल किसी भी C# कंसोल एप्लीकेशन की तरह. हालांकि, Main मेथड सीधे तौर पर वेब सर्वर को स्टार्ट नहीं करता. इसके बजाय, यह कुछ महत्वपूर्ण काम करता है जो एप्लीकेशन को चलने लायक बनाते हैं.
Main मेथड के बाद का फ्लो
CreateBuilder या CreateHostBuilder कॉल
Main मेथड के अंदर, आपको आमतौर पर Host.CreateApplicationBuilder() (ASP.NET Core 6.0 और बाद में) या Host.CreateHostBuilder() (पुराने वर्जन में) का कॉल मिलेगा. यह एक होस्ट बिल्डर ऑब्जेक्ट बनाता है. यह बिल्डर एप्लीकेशन के लिए कोर कॉन्फ़िगरेशन को सेट करने में मदद करता है. इसमें लॉगिंग, कॉन्फ़िगरेशन प्रोवाइडर्स, डिपेंडेंसी इंजेक्शन, और Kestrel (जो डिफ़ॉल्ट वेब सर्वर है) जैसे सर्विसेज़ शामिल होते हैं.
सर्विसेज़ और कॉन्फ़िगरेशन का रजिस्ट्रेशन
होस्ट बिल्डर बनाने के बाद, इसमें सर्विसेज़ (जैसे MVC, Entity Framework, ऑथेंटिकेशन, आदि) और कॉन्फ़िगरेशन को रजिस्टर किया जाता है. यह काम एक्सटेंशन मेथड्स जैसे कि AddControllersWithViews(), AddDbContext(), AddAuthentication(), ConfigureServices(), और ConfigureAppConfiguration() के ज़रिए होता है. ये मेथड्स बताते हैं कि एप्लीकेशन को कौन-कौन सी कार्यक्षमता की ज़रूरत है और उन्हें कैसे कॉन्फ़िगर किया जाना चाहिए.
मिडलवेयर पाइपलाइन का कॉन्फ़िगरेशन
Main मेथड में या Startup.cs फ़ाइल (पुराने वर्जन में) में, एक मिडलवेयर पाइपलाइन को कॉन्फ़िगर किया जाता है. मिडलवेयर छोटे-छोटे कॉम्पोनेंट्स होते हैं जो HTTP रिक्वेस्ट और रिस्पॉन्स को हैंडल करते हैं. यह पाइपलाइन तय करती है कि जब कोई रिक्वेस्ट आती है, तो उसे किस क्रम में प्रोसेस किया जाएगा. उदाहरण के लिए, इसमें स्टैटिक फाइल्स को सर्व करना, राउटिंग, ऑथेंटिकेशन, ऑथराइजेशन, और फिर MVC कंट्रोलर को इन्वोक करना शामिल हो सकता है.
होस्ट का निर्माण और रनिंग (Build() और Run())
सभी कॉन्फ़िगरेशन के बाद, होस्ट बिल्डर पर .Build() मेथड को कॉल किया जाता है. यह IHost इंटरफ़ेस का एक इंस्टेंस बनाता है, जिसमें एप्लीकेशन के लिए सभी कॉन्फ़िगरेशन और सर्विसेज़ शामिल होते हैं.
इसके बाद, .Run() या .RunAsync() मेथड को कॉल किया जाता है. यह मेथड:
- Kestrel वेब सर्वर को स्टार्ट करता है: Kestrel डिफ़ॉल्ट ASP.NET Core वेब सर्वर है जो इनकमिंग HTTP रिक्वेस्ट को सुनता है.
- एप्लीकेशन को सुनना शुरू करता है: यह निर्दिष्ट पोर्ट (आमतौर पर HTTP के लिए 5000 और HTTPS के लिए 5001) पर इनकमिंग वेब रिक्वेस्ट को स्वीकार करना शुरू कर देता है.
- एप्लीकेशन को सक्रिय रखता है: यह तब तक चलता रहता है जब तक इसे मैन्युअल रूप से बंद न किया जाए या कोई अनहैंडल्ड एक्सेप्शन न आए. (infinite loop)
रिक्वेस्ट हैंडलिंग
एक बार जब एप्लीकेशन चल रहा होता है, तो Kestrel सर्वर पर आने वाली हर HTTP रिक्वेस्ट को मिडलवेयर पाइपलाइन के ज़रिए प्रोसेस किया जाता है. पाइपलाइन में हर मिडलवेयर अपना काम करता है (जैसे लॉगिंग, ऑथेंटिकेशन, आदि) और फिर रिक्वेस्ट को अगले मिडलवेयर को पास करता है, जब तक कि वह एक एंडपॉइंट (जैसे एक MVC कंट्रोलर एक्शन या एक Razor पेज) तक न पहुँच जाए जो रिक्वेस्ट का जवाब देता है.
संक्षेप में, Main मेथड एक ऑर्केस्ट्रेटर की तरह है जो ASP.NET Core एप्लीकेशन के लिए होस्ट को सेट अप और स्टार्ट करता है. यह होस्ट ही वह एनवायरनमेंट है जो आपके वेब एप्लीकेशन को चलाता है और इनकमिंग रिक्वेस्ट को हैंडल करता है.
टिप्पणियाँ
एक टिप्पणी भेजें