MediatR क्या है और इसकी आवश्यकता क्यों है?
MediatR .NET के लिए एक हल्की लेकिन शक्तिशाली लाइब्रेरी है, जो Mediator (मध्यस्थ) पैटर्न को लागू करती है। सॉफ्टवेयर डेवलपमेंट की दुनिया में, खासकर CQRS (Command Query Responsibility Segregation) आर्किटेक्चर पर बने एप्लिकेशन में, MediatR एक डी-फैक्टो मानक बन गया है।
इसकी आवश्यकता क्यों है?
क्लासिकल आर्किटेक्चर में, जब एक क्लास (जैसे कंट्रोलर) दूसरे क्लास (जैसे सर्विस) में कोई कार्य करना चाहता है, तो उसे उस सर्विस और उसके इंटरफेस के बारे में पता होना चाहिए। यह टाइट कपलिंग (tight coupling) पैदा करता है। यदि आप सर्विस को कॉल करने से पहले लॉगिंग, वैलिडेशन या कैशिंग जोड़ना चाहते हैं, तो आपको कंट्रोलर का कोड बदलना होगा या डेकोरेटर बनाने होंगे, जिससे मेंटेनेंस मुश्किल हो जाता है।
MediatR मध्यस्थ की अवधारणा पेश करके इस समस्या को हल करता है। सिस्टम के घटक (जैसे कंट्रोलर) अब सीधे संवाद नहीं करते। इसके बजाय, वे MediatR के माध्यम से रिक्वेस्ट (Request) या कमांड (Command) भेजते हैं। लाइब्रेरी स्वयं संबंधित हैंडलर (Handler) को ढूंढती और कॉल करती है।
MediatR उपयोग करने के मुख्य लाभ:
- लूज़ कपलिंग (Loose Coupling): रिक्वेस्ट भेजने वाले को रिसीवर के बारे में कुछ नहीं पता। उसे केवल रिक्वेस्ट के प्रकार के बारे में पता होता है।
- सिंगल रिस्पॉन्सिबिलिटी प्रिंसिपल (SRP): प्रत्येक हैंडलर केवल एक कार्य के लिए जिम्मेदार होता है (जैसे "यूजर बनाएं", "ऑर्डर की सूची प्राप्त करें")।
- CQRS को सरल बनाना: MediatR कमांड (स्टेट बदलने वाले) और क्वेरी (स्टेट पढ़ने वाले) को अलग करने के लिए आदर्श है।
- पाइपलाइन बिहेवियर (Pipeline Behaviors): आप हैंडलर के कोड को बदले बिना आसानी से क्रॉस-कटिंग फंक्शनैलिटी (लॉगिंग, वैलिडेशन, ट्रांजैक्शन) जोड़ सकते हैं।
- टेस्टेबिलिटी: हैंडलर को अलग-अलग टेस्ट करना आसान है, और उनके इम्प्लीमेंटेशन को बदलना भी आसान है।
MediatR इंस्टॉलेशन
MediatR NuGet के माध्यम से वितरित की जाती है। इसे कई तरीकों से इंस्टॉल किया जा सकता है:
1. .NET CLI के माध्यम से (अनुशंसित तरीका)
अपने प्रोजेक्ट की रूट डायरेक्टरी में टर्मिनल खोलें और यह कमांड चलाएं:
dotnet add package MediatR
यदि आप ASP.NET Core का उपयोग कर रहे हैं, तो आपको डिपेंडेंसी इंजेक्शन (DI) के लिए पैकेज की भी आवश्यकता होगी:
dotnet add package MediatR.Extensions.Microsoft.DependencyInjection
2. Package Manager Console (Visual Studio) के माध्यम से
Install-Package MediatR
Install-Package MediatR.Extensions.Microsoft.DependencyInjection
3. NuGet Package Manager UI के माध्यम से
Visual Studio में: Tools → NuGet Package Manager → Manage NuGet Packages for Solution... पर जाएं। "MediatR" खोजें और दोनों पैकेज इंस्टॉल करें।
कोड उदाहरण के साथ त्वरित शुरुआत
आइए एक सरल उदाहरण बनाते हैं: उपयोगकर्ता को अभिवादन भेजना।
चरण 1: प्रोजेक्ट बनाएं
एक नया कंसोल प्रोजेक्ट या ASP.NET Core Web API प्रोजेक्ट बनाएं।
चरण 2: रिक्वेस्ट (Request) परिभाषित करें
एक क्लास बनाएं जो रिक्वेस्ट को दर्शाए। इसे IRequest<TResponse> इंटरफेस को लागू करना चाहिए, जहां TResponse रिटर्न वैल्यू का प्रकार है।
using MediatR;
public class PingRequest : IRequest<string>
{
public string Message { get; set; } = "Ping";
}
चरण 3: हैंडलर (Handler) बनाएं
एक क्लास बनाएं जो IRequestHandler<TRequest, TResponse> इंटरफेस को लागू करे।
using MediatR;
using System.Threading;
using System.Threading.Tasks;
public class PingHandler : IRequestHandler<PingRequest, string>
{
public Task<string> Handle(PingRequest request, CancellationToken cancel पुस्तकालय में भी
TypeScript में कैशिंग: Redis, node-cache और अन्य उपकरण
जावा में PDF जनरेशन: सर्वश्रेष्ठ लाइब्रेरियों का अवलोकन (iText, Apache PDFBox, OpenPDF)
Kotlin में डेटा सत्यापन: लाइब्रेरीज़ और दृष्टिकोण (Kotlin, Java)
Hangfire C# (.NET) पूर्ण गाइड: उदाहरणों के साथ