आपके C# प्रोजेक्ट को API Gateway की आवश्यकता क्यों है?
\n\nकल्पना करें कि आप C# में एक आधुनिक वेब एप्लिकेशन बना रहे हैं। आपके पास उपयोगकर्ता सेवा, ऑर्डर सेवा, भुगतान सेवा है — और प्रत्येक अपने पोर्ट पर, या विभिन्न सर्वरों पर रहता है। क्लाइंट एप्लिकेशन (फ्रंटएंड या मोबाइल एप्लिकेशन) को इन सभी पतों, डेटा प्रारूपों, प्रमाणीकरण प्रोटोकॉल के बारे में पता होना चाहिए। एक बुरा सपना, है ना?
\n\nयहाँ C# सेवाओं के लिए API Gateway मंच पर आता है — एक एकल प्रवेश बिंदु जो सारा "गंदा काम" अपने ऊपर ले लेता है: रूटिंग, प्रतिक्रियाओं का एकत्रीकरण, टोकन सत्यापन, कैशिंग और लोड बैलेंसिंग। इस लेख में, हम Ocelot C# और YARP .NET जैसे आधुनिक टूल का उपयोग करके व्यवहार में .NET API गेटवे को लागू करने का तरीका समझेंगे।
\n\nAPI Gateway क्या है और माइक्रोसर्विसेज़ को इसकी आवश्यकता क्यों है?
\n\nAPI Gateway क्लाइंट और आपकी बैकएंड सेवाओं के बीच एक मध्यवर्ती परत है। यह एक "डिस्पैचर" की तरह काम करता है: आने वाले HTTP अनुरोधों को प्राप्त करता है, उनका विश्लेषण करता है और उन्हें आवश्यक C# माइक्रोसर्विसेज़ पर रीडायरेक्ट करता है। साथ ही, गेटवे अतिरिक्त कार्य कर सकता है:
\n\n- \n
- अनुरोध रूटिंग — URL, हेडर या पैरामीटर के आधार पर अनुरोधों को विभिन्न सेवाओं पर निर्देशित करना। \n
- डेटा एग्रीगेशन — कई सेवाओं से प्रतिक्रियाएँ एकत्र करना और क्लाइंट को एक एकल JSON लौटाना। \n
- API Gateway प्रमाणीकरण — अनुरोध सेवा तक पहुँचने से पहले JWT टोकन या API कुंजियाँ सत्यापित करना। \n
- लोड बैलेंसिंग — एक ही सेवा के इंस्टेंस के बीच अनुरोधों को वितरित करना। \n
- कैशिंग — बार-बार अनुरोधित डेटा के लिए प्रतिक्रियाओं को अस्थायी रूप से संग्रहीत करना। \n
- रेट लिमिटिंग — एक क्लाइंट से अनुरोधों की संख्या को सीमित करना। \n
.NET API गेटवे के बिना, प्रत्येक क्लाइंट को पूरे सिस्टम आर्किटेक्चर को जानना होगा। इसके साथ, क्लाइंट केवल एक एंडपॉइंट से संवाद करता है, और बाकी सब "हुड के नीचे" होता है।
\n\nC# पर API Gateway के लिए दो मुख्य उपकरण
\n\n.NET इकोसिस्टम में दो शक्तिशाली समाधान हैं जो आपके ध्यान के योग्य हैं:
\n\nOcelot C#
\nशायद C# सेवाओं के लिए सबसे लोकप्रिय API Gateway। Ocelot एक ओपन-सोर्स लाइब्रेरी है जो किसी भी ASP.NET Core एप्लिकेशन में गेटवे कार्यक्षमता जोड़ती है। यह समर्थन करता है:
\n- \n
- JSON कॉन्फ़िगरेशन-आधारित रूटिंग \n
- प्रतिक्रिया एकत्रीकरण \n
- प्रमाणीकरण और प्राधिकरण \n
- रेट लिमिटिंग \n
- लोड बैलेंसिंग (RoundRobin, LeastConnection) \n
- WebSockets \n
YARP .NET (Yet Another Reverse Proxy)
\nMicrosoft की एक परियोजना, जो एक उच्च-प्रदर्शन रिवर्स प्रॉक्सी के रूप में स्थित है। YARP अधिक लचीला और प्रदर्शनकारी है, लेकिन अधिक मैन्युअल कॉन्फ़िगरेशन की आवश्यकता है। यह तब उपयुक्त है जब आपको प्रत्येक अनुरोध पर पूर्ण नियंत्रण की आवश्यकता हो।
\n\nइस लेख में, हम Ocelot पर ध्यान केंद्रित करेंगे — यह शुरू करने में आसान है और 90% सामान्य कार्यों को कवर करता है।
\n\nOcelot के साथ C# पर API Gateway बनाना: चरण-दर-चरण गाइड
\n\nआइए वास्तविक कोड लिखें। हम एक .NET API गेटवे बनाएंगे जो दो माइक्रोसर्विसेज़: UserService (पोर्ट 5001) और OrderService (पोर्ट 5002) पर अनुरोधों को रूट करेगा।
चरण 1: प्रोजेक्ट बनाएँ
\nटर्मिनल खोलें और निष्पादित करें:
\ndotnet new webapi -n ApiGatewayDemo\ncd ApiGatewayDemo\n\nOcelot पैकेज स्थापित करें:
\ndotnet add package Ocelot\n\nचरण 2: रूट कॉन्फ़िगरेशन सेट करें
\nप्रोजेक्ट रूट में ocelot.json फ़ाइल बनाएँ। इसमें हम रूटिंग नियमों का वर्णन करेंगे:
{\n "Routes": [\n {\n "DownstreamPathTemplate": "/api/users/{everything}",\n "DownstreamScheme": "http",\n "DownstreamHostAndPorts": [\n