C# पर सर्वरलेस फ़ंक्शन: AWS Lambda उन्नत स्तर

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

C# पर सर्वरलेस फ़ंक्शन: AWS Lambda — बुनियादी से उन्नत स्तर तक

\n\n

सर्वरलेस आर्किटेक्चर आधुनिक विकास की दुनिया में मजबूती से प्रवेश कर चुका है। यदि आपने पहले से ही C# पर AWS Lambda फ़ंक्शन बनाने का बुनियादी सिंटैक्स सीख लिया है, तो अब अगले स्तर पर जाने का समय आ गया है। इस लेख में हम उन्नत तकनीकों पर चर्चा करेंगे: डिपेंडेंसी इंजेक्शन (DI), Middleware बनाना, सीक्रेट्स के साथ काम करना और एसिंक्रोनस पैटर्न। ये ज्ञान आपको क्लाउड समाधानों के लिए अधिक लचीला, परीक्षण योग्य और कुशल कोड लिखने में मदद करेगा।

\n\n

1. C# पर AWS Lambda में डिपेंडेंसी इंजेक्शन (DI)

\n\n

Lambda फ़ंक्शन का मानक टेम्पलेट अक्सर प्रत्येक कॉल पर हैंडलर क्लास का एक नया इंस्टेंस बनाता है। इससे "भारी" ऑब्जेक्ट (जैसे डेटाबेस क्लाइंट या HTTP क्लाइंट) बार-बार बनते हैं। डिपेंडेंसी इंजेक्शन कंटेनर का उपयोग इस समस्या को हल करता है, जिससे इंस्टेंस का पुन: उपयोग किया जा सकता है और उनके जीवनकाल को प्रबंधित किया जा सकता है।

\n\n

.NET 8+ में Lambda के लिए DI लागू करने के लिए Amazon.Lambda.AspNetCoreServer.Hosting पैकेज का उपयोग किया जाता है। IServiceCollection का उपयोग करके DI सेटअप का एक उदाहरण देखें।

\n\n

उदाहरण: Lambda में DI सेटअप

\n\n
using Amazon.Lambda.Core;\nusing Amazon.Lambda.RuntimeSupport;\nusing Amazon.Lambda.Serialization.SystemTextJson;\nusing Microsoft.Extensions.DependencyInjection;\nusing Microsoft.Extensions.Hosting;\n\n// इंटरफ़ेस और सेवा का कार्यान्वयन\npublic interface IWeatherService\n{\n    string GetForecast(string city);\n}\n\npublic class WeatherService : IWeatherService\n{\n    public string GetForecast(string city) => $"{city} में मौसम: +25°C, धूप";\n}\n\n// Lambda हैंडलर\npublic class Function\n{\n    private readonly IWeatherService _weatherService;\n\n    public Function() : this(Startup.CreateHostBuilder().Build()) { }\n\n    public Function(IHost host)\n    {\n        _weatherService = host.Services.GetRequiredService<IWeatherService>();\n    }\n\n    public async Task<string> FunctionHandler(string input, ILambdaContext context)\n    {\n        return _weatherService.GetForecast(input);\n    }\n}\n\n// कॉन्फ़िगरेशन क्लास\npublic static class Startup\n{\n    public static IHostBuilder CreateHostBuilder() =>\n        Host.CreateDefaultBuilder()\n            .ConfigureServices((context, services) =>\n            {\n                services.AddSingleton<IWeatherService, WeatherService>();\n                // यहां अन्य सेवाएँ जोड़ें\n            });\n}
\n\n

महत्वपूर्ण: AWS SDK क्लाइंट (S3, DynamoDB) के लिए AddSingleton और हल्की सेवाओं के लिए AddTransient का उपयोग करें। इससे "कोल्ड स्टार्ट" (cold start) का समय कम होता है और संसाधनों की बचत होती है।

\n\n

2. AWS Lambda में Middleware: अनुरोध प्रसंस्करण श्रृंखला

\n\n

ASP.NET Core से परिचित Middleware की अवधारणा Lambda-फ़ंक्शन पर भी पूरी तरह लागू होती है। Middleware आपको क्रॉस-कटिंग लॉजिक जोड़ने की अनुमति देता है: लॉगिंग, त्रुटि प्रबंधन, प्रमाणीकरण, प्रतिक्रिया संपीड़न — मुख्य हैंडलर कोड को बदले बिना।

\n\n

Middleware लागू करने के लिए Amazon.Lambda.AspNetCoreServer पैकेज और ILambdaMiddleware इंटरफ़ेस (या कस्टम कार्यान्वयन) का उपयोग किया जाता है। नीचे निष्पादन समय लॉग करने के लिए एक सरल Middleware बनाने का उदाहरण दिया गया है।

\n\n

उदाहरण: लॉगिंग के लिए Middleware

\n\n
using Amazon.Lambda.Core;\nusing System.Diagnostics;\n\npublic class LoggingMiddleware : ILambdaMiddleware\n{\n    public async Task<TResponse> InvokeAsync<TRequest, TResponse>(TRequest request, \n        Func<TRequest, Task<TResponse>> next, ILambdaContext context)\n    {\n        var sw = Stopwatch.StartNew();\n        context.Logger.LogInformation($"अनुरोध प्राप्त हुआ: {request}");\n\n        try\n        {\n            var response = await next(request);\n            sw.Stop();\n            context.Logger.LogInformation($"प्रतिक्रिया {sw.ElapsedMillis                

ब्लॉग

पुस्तक अनुशंसाएँ