Differences between in-process and out-of-process hosting models

ASP.NET Core: इन-प्रोसेस और आउट-ऑफ-प्रोसेस होस्टिंग मॉडल में अंतर

ASP.NET Core में सेल्फ-होस्टिंग मॉडल और आउट-प्रोसेस होस्टिंग मॉडल दो अलग-अलग तरीके हैं जिनका उपयोग आप अपने वेब एप्लिकेशन को होस्ट करने के लिए कर सकते हैं।

सेल्फ-होस्टिंग मॉडल

सेल्फ-होस्टिंग मॉडल में, ASP.NET Core एप्लिकेशन अपने आप में एक वेब सर्वर की भूमिका निभाता है। इसका मतलब है कि एप्लिकेशन अपने आप HTTP रिक्वेस्ट को सीधे हैंडल करता है और उन्हें प्रोसेस करता है। सेल्फ-होस्टिंग के लिए Kestrel नामक एक क्रॉस-प्लेटफ़ॉर्म वेब सर्वर का उपयोग किया जाता है।

आउट-प्रोसेस होस्टिंग मॉडल

आउट-प्रोसेस होस्टिंग मॉडल में, ASP.NET Core एप्लिकेशन एक अलग प्रोसेस में चलता है, और एक बाहरी वेब सर्वर (जैसे कि आईआईएस या एनजिनएक्स) HTTP रिक्वेस्ट को प्राप्त करता है और उन्हें एप्लिकेशन को फॉरवर्ड करता है। इस मॉडल में, एप्लिकेशन और वेब सर्वर अलग-अलग प्रोसेस में चलते हैं।

अब इनके बारे में विस्तार से समझते हैं -

1. इन-प्रोसेस होस्टिंग (In-Process Hosting)

  • कार्यप्रणाली: इस मॉडल में, आपका NET Core एप्लीकेशन सीधे IIS वर्कर प्रोसेस (w3wp.exe) के भीतर रन होता है। इसका मतलब है कि ASP.NET Core एप्लीकेशन और IIS एक ही प्रोसेस में चलते हैं। इसमें Kestrel सर्वर का सीधे उपयोग नहीं होता, बल्कि IIS HTTP सर्वर का उपयोग होता है जो रिक्वेस्ट को हैंडल करता है।
  • अनुकूलता: यह NET Core 2.2 के बाद से डिफ़ॉल्ट होस्टिंग मॉडल बन गया है।
  • फायदे:
    • बेहतर परफॉर्मेंस: रिक्वेस्ट सीधे IIS वर्कर प्रोसेस में हैंडल किए जाते हैं, जिससे Kestrel तक रिक्वेस्ट फॉरवर्ड करने की अतिरिक्त परत समाप्त हो जाती है। इससे संचार ओवरहेड कम होता है और प्रदर्शन बेहतर होता है।
    • सरलता: कॉन्फ़िगरेशन अक्सर सरल होता है क्योंकि IIS सीधे एप्लीकेशन को होस्ट कर रहा होता है।
  • नुकसान:
    • अगर NET Core एप्लीकेशन क्रैश होता है, तो पूरा IIS वर्कर प्रोसेस भी प्रभावित हो सकता है (हालांकि IIS इसे फिर से शुरू करने का प्रयास करता है)।
    • यह IIS पर निर्भर करता है और अन्य ऑपरेटिंग सिस्टम (जैसे लिनक्स) पर लागू नहीं होता, जहाँ IIS उपलब्ध नहीं है।

2. आउट-ऑफ-प्रोसेस होस्टिंग (Out-of-Process Hosting)

  • कार्यप्रणाली: इस मॉडल में, आपका NET Core एप्लीकेशन IIS वर्कर प्रोसेस (w3wp.exe) से एक अलग प्रोसेस (dotnet.exe) में रन होता है। IIS इस स्थिति में एक रिवर्स प्रॉक्सी सर्वर के रूप में कार्य करता है। यह इनकमिंग HTTP रिक्वेस्ट को प्राप्त करता है और फिर उन्हें Kestrel वेब सर्वर (जो आपके ASP.NET Core एप्लीकेशन के साथ चल रहा है) पर फॉरवर्ड करता है। Kestrel रिक्वेस्ट को प्रोसेस करता है और रिस्पॉन्स को वापस IIS को भेजता है, और फिर IIS उसे क्लाइंट को भेजता है।
  • अनुकूलता: NET Core 2.2 से पहले यह एकमात्र उपलब्ध होस्टिंग मॉडल था। इसे आज भी कई परिदृश्यों में उपयोग किया जाता है।
  • फायदे:
    • मजबूती और स्थिरता: यदि NET Core एप्लीकेशन क्रैश होता है, तो IIS वर्कर प्रोसेस प्रभावित नहीं होता क्योंकि दोनों अलग-अलग प्रोसेस में चल रहे होते हैं। IIS एप्लीकेशन को स्वचालित रूप से फिर से शुरू कर सकता है।
    • क्रॉस-प्लेटफ़ॉर्म: चूंकि आपका एप्लीकेशन Kestrel (जो क्रॉस-प्लेटफ़ॉर्म है) पर चलता है, इसलिए इसे IIS के अलावा Nginx, Apache जैसे अन्य रिवर्स प्रॉक्सी सर्वर के पीछे Linux या macOS पर भी डिप्लॉय किया जा सकता है।
    • सुरक्षा: IIS एक अतिरिक्त सुरक्षा परत प्रदान करता है और नेटवर्क के सामने सीधे Kestrel को उजागर नहीं करता है। यह लोड बैलेंसिंग और अन्य IIS-विशिष्ट सुविधाओं के लिए भी फायदेमंद है।
  • नुकसान:
    • प्रदर्शन में मामूली कमी: रिक्वेस्ट को IIS से Kestrel तक प्रॉक्सी करने में एक अतिरिक्त नेटवर्क हॉप शामिल होता है, जिससे इन-प्रोसेस होस्टिंग की तुलना में प्रदर्शन थोड़ा कम हो सकता है।
    • जटिलता: कॉन्फ़िगरेशन इन-प्रोसेस की तुलना में थोड़ा अधिक जटिल हो सकता है क्योंकि इसमें दो अलग-अलग प्रक्रियाओं के बीच समन्वय शामिल होता है।

मुख्य अंतर

सेल्फ-होस्टिंग और आउट-प्रोसेस होस्टिंग के बीच मुख्य अंतर हैं:

  1. वेब सर्वर: सेल्फ-होस्टिंग में, एप्लिकेशन अपने आप में एक वेब सर्वर की भूमिका निभाता है, जबकि आउट-प्रोसेस होस्टिंग में, एक बाहरी वेब सर्वर का उपयोग किया जाता है।
  2. प्रोसेस अलगाव: आउट-प्रोसेस होस्टिंग में, एप्लिकेशन और वेब सर्वर अलग-अलग प्रोसेस में चलते हैं, जबकि सेल्फ-होस्टिंग में, एप्लिकेशन और वेब सर्वर एक ही प्रोसेस में चलते हैं।
  3. स्केलेबिलिटी और सुरक्षा: आउट-प्रोसेस होस्टिंग में, वेब सर्वर और एप्लिकेशन के बीच अलगाव होने से स्केलेबिलिटी और सुरक्षा में सुधार हो सकता है।

विशेषताएँ

विशेषता इन-प्रोसेस होस्टिंग (In-Process) आउट-ऑफ-प्रोसेस होस्टिंग (Out-of-Process)
एप्लीकेशन रन होता है IIS वर्कर प्रोसेस (w3wp.exe) के भीतर IIS वर्कर प्रोसेस (w3wp.exe) से अलग (dotnet.exe) में
प्राइमरी वेब सर्वर IIS HTTP सर्वर (Kestrel का उपयोग नहीं) Kestrel वेब सर्वर (IIS एक रिवर्स प्रॉक्सी के रूप में)
डिफ़ॉल्ट ASP.NET Core 2.2+ से डिफ़ॉल्ट ASP.NET Core 2.2 से पहले डिफ़ॉल्ट था
परफॉर्मेंस बेहतर (सीधा संचार, कोई प्रॉक्सी नहीं) मामूली रूप से कम (IIS से Kestrel तक प्रॉक्सीिंग के कारण)
मजबूती एप्लीकेशन क्रैश होने पर IIS वर्कर प्रोसेस प्रभावित हो सकता है एप्लीकेशन क्रैश होने पर IIS वर्कर प्रोसेस प्रभावित नहीं होता (अधिक मजबूत)
प्लेटफ़ॉर्म मुख्य रूप से IIS/विंडोज के लिए क्रॉस-प्लेटफ़ॉर्म (IIS, Nginx, Apache आदि के साथ उपयोग किया जा सकता है)
सुरक्षा IIS सुरक्षा प्रदान करता है IIS एक अतिरिक्त सुरक्षा परत के रूप में कार्य करता है

टिप्पणियाँ

इस ब्लॉग से लोकप्रिय पोस्ट

Web Fundamental Concepts in Hindi for Beginners - FAQs with their Answers Part-1

Introduction to ASP.NET Core and Web Frameworks