संदेश

RequestDelegate in Middleware

ASP.NET Core में प्रत्येक मिडिलवेयर क्लास अपने भीतर RequestDelegate का उपयोग करती है। यह ASP.NET Core के रिक्वेस्ट प्रोसेसिंग पाइपलाइन का एक मूलभूत हिस्सा है। आइए इसे विस्तार से समझते हैं कि  RequestDelegate क्या है? RequestDelegate एक C# delegate (प्रतिनिधि) है जो एक HTTP रिक्वेस्ट को प्रोसेस करने के लिए एक फ़ंक्शन हस्ताक्षर को परिभाषित करता है। संक्षेप में, यह एक ऐसा फ़ंक्शन है जो एक HttpContext ऑब्जेक्ट को इनपुट के रूप में लेता है और एक Task (आमतौर पर एक अतुल्यकालिक ऑपरेशन) देता है। इसका method signature कुछ इस तरह दिखता है: public delegate Task RequestDelegate(HttpContext context); मुख्य बातें: HttpContext context: यह वह ऑब्जेक्ट है जिसमें वर्तमान HTTP रिक्वेस्ट और रिस्पॉन्स से संबंधित सभी जानकारी होती है। मिडिलवेयर इस ऑब्जेक्ट के माध्यम से रिक्वेस्ट (हेडर, बॉडी, क्वेरी पैरामीटर आदि) को पढ़ और संशोधित कर सकता है और रिस्पॉन्स (स्थिति कोड, हेडर, बॉडी आदि) लिख सकता है। Task: चूंकि ASP.NET Core एक अतुल्यकालिक (asynchronous) फ्रेमवर्क है, इसलिए RequestDelegate एक Task देता...

How to Use Dependency Injection (DI) with Abstract Classes in ASP.NET Core

यदि इंटरफेस की जगह एब्स्ट्रेक्ट क्लास को इंप्लीमेंट करके यदि कोई क्लास बनता है तो इस स्थिति में डिपेंडेंसी इंजेक्शन और डिपेंडेंसी की रजिस्ट्रेशन को इस पोस्ट में समझते हैं। ASP.NET Core में डिपेंडेंसी इंजेक्शन (DI) को एब्स्ट्रेक्ट क्लास (Abstract Class) के साथ कैसे उपयोग किया जाता है, इसे एक उदाहरण के साथ समझते हैं। संकल्पना (Concept) डिपेंडेंसी इंजेक्शन कंटेनर (DI Container) को इंटरफ़ेस (Interface) के बजाय एब्स्ट्रेक्ट क्लास को भी हल करने के लिए कॉन्फ़िगर किया जा सकता है। सिद्धांत वही रहता है: एक उच्च-स्तरीय क्लास (जैसे CustomerService) एक निम्न-स्तरीय क्लास (जैसे CustomerRepository) पर निर्भर करती है, लेकिन सीधे उसके कंक्रीट इम्प्लीमेंटेशन पर नहीं, बल्कि उसके एब्स्ट्रेक्ट बेस क्लास पर निर्भर करती है। मुख्य अंतर यह है कि: इंटरफ़ेस केवल एक कॉन्ट्रैक्ट (अनुबंध) को परिभाषित करता है, जबकि एब्स्ट्रेक्ट क्लास कॉन्ट्रैक्ट को परिभाषित करने के साथ-साथ कुछ डिफ़ॉल्ट इम्प्लीमेंटेशन या साझा लॉजिक भी प्रदान कर सकता है। एब्स्ट्रेक्ट क्लास का सीधे इंस्टेंस नहीं बनाया जा सकता है; इसे हमेशा एक कंक्री...

Understanding Dependency Injection in ASP.NET Core

इस पोस्ट में ASP.NET Core में डिपेंडेंसी इंजेक्शन (Dependency Injection) को समझते हैं। ASP.NET Core में, जब क्लास A को क्लास B के ऑब्जेक्ट की आवश्यकता होती है, तो हम कहते हैं कि क्लास A की क्लास B पर निर्भरता (Dependency) है। यदि क्लास A सीधे new ऑपरेटर का उपयोग करके क्लास B का ऑब्जेक्ट बनाता है, तो यह टाइट कपलिंग (Tight Coupling) कहलाता है। टाइट कपलिंग एक अच्छी प्रैक्टिस नहीं मानी जाती है क्योंकि यह कोड को कम लचीला और टेस्ट करने में मुश्किल बना देती है। इस समस्या से बचने के लिए, क्लास A अपने भीतर क्लास B के ऑब्जेक्ट को बनाने की जिम्मेदारी किसी और क्लास को दे देता है। जब क्लास A को क्लास B के ऑब्जेक्ट की आवश्यकता होती है, तो यह Dependency ऑब्जेक्ट बाहर से इंजेक्ट (Inject) किया जाता है। इसी प्रक्रिया को डिपेंडेंसी इंजेक्शन (Dependency Injection - DI) के रूप में जाना जाता है। सरल शब्दों में, डिपेंडेंसी इंजेक्शन एक डिज़ाइन पैटर्न है जो आपको क्लासों के बीच की निर्भरताओं को ढीला करने (Decouple) में मदद करता है।  डिपेंडेंसी इंजेक्शन के मुख्य प्रकार डिपेंडेंसी इंजेक्शन मुख्य रूप से ...