एसिंक्रोनस प्रोग्रामिंग के साथ प्रारंभ करें

Complete

डेवलपर्स प्रदर्शन बाधाओं से बचने और अपने अनुप्रयोगों की समग्र जवाबदेही बढ़ाने के लिए अतुल्यकालिक प्रोग्रामिंग तकनीकों का उपयोग करते हैं। हालांकि, अतुल्यकालिक अनुप्रयोगों को लिखने की पारंपरिक तकनीकें जटिल हो सकती हैं, जिससे उन्हें लिखना, डिबग करना और बनाए रखना मुश्किल हो जाता है।

C# एक सरलीकृत async प्रोग्रामिंग दृष्टिकोण का समर्थन करता है जो .NET रनटाइम में अतुल्यकालिक समर्थन का लाभ उठाता है। कंपाइलर वह कठिन काम करता है जो डेवलपर करता था, और आपका एप्लिकेशन सिंक्रोनस कोड जैसा दिखता है जो तार्किक संरचना रखता है। नतीजतन, आपको प्रयास के एक अंश के साथ अतुल्यकालिक प्रोग्रामिंग के सभी लाभ मिलते हैं।

यह समझना कि वास्तविक दुनिया में अतुल्यकालिक प्रक्रियाएं कैसे काम करती हैं, आपको यह समझने में मदद कर सकती है कि आपके अनुप्रयोगों में एसिंक प्रोग्रामिंग का उपयोग कैसे करें।

वास्तविक दुनिया में एक अतुल्यकालिक प्रक्रिया की जांच करें

नाश्ता बनाना एक ऐसी प्रक्रिया का एक अच्छा उदाहरण है जो कार्यों को अतुल्यकालिक रूप से करने से लाभान्वित होती है। आप नाश्ते को उन कार्यों की एक श्रृंखला के रूप में बनाने के बारे में सोच सकते हैं जिन्हें तुल्यकालिक या अतुल्यकालिक रूप से किया जा सकता है।

  1. पेंट्री से नाश्ते की सामग्री प्राप्त करें।
  2. एक कप कॉफी डालो।
  3. एक पैन गरम करें, फिर बेकन के तीन स्लाइस भूनें।
  4. दो अंडे भूनें।
  5. ब्रेड के दो टुकड़े टोस्ट करें।
  6. टोस्ट पर मक्खन और जाम फैलाएं।
  7. एक गिलास संतरे का रस डालें।

यदि आपके पास खाना पकाने का अनुभव है, तो आप इन निर्देशों को अतुल्यकालिक रूप से पूरा कर सकते हैं। आप बेकन और अंडे के लिए पैन वार्मिंग शुरू करते हैं, फिर पेंट्री से सामग्री प्राप्त करें। आप ब्रेड को टोस्टर में डालते हैं, फिर बेकन पकाना शुरू करते हैं। प्रक्रिया के प्रत्येक चरण पर, आप कोई कार्य प्रारंभ करते हैं, और फिर आपके ध्यान के लिए तैयार अन्य कार्यों में संक्रमण करते हैं.

नाश्ता पकाना अतुल्यकालिक कार्य का एक अच्छा उदाहरण है जो समानांतर नहीं है। एक व्यक्ति (या धागा) सभी कार्यों को संभाल सकता है। एक व्यक्ति पिछले कार्य के पूरा होने से पहले अगला कार्य शुरू करके अतुल्यकालिक रूप से नाश्ता बना सकता है। प्रत्येक खाना पकाने का कार्य इस बात की परवाह किए बिना आगे बढ़ता है कि कोई सक्रिय रूप से प्रक्रिया को देख रहा है या नहीं। जैसे ही आप पैन को गर्म करना शुरू करते हैं, आप पेंट्री से सामग्री प्राप्त कर सकते हैं। बेकन पकने के बाद, आप ब्रेड को टोस्टर में डाल सकते हैं।

समानांतर एल्गोरिथ्म के लिए, आपको कई लोगों की आवश्यकता होती है जो खाना बनाते हैं (या कई धागे)। एक व्यक्ति अंडे पकाता है, दूसरा बेकन फ्राई करता है, और इसी तरह। प्रत्येक व्यक्ति अपने एक विशिष्ट कार्य पर ध्यान केंद्रित करता है। प्रत्येक व्यक्ति जो खाना बना रहा है (या प्रत्येक धागा) वर्तमान कार्य के पूरा होने की प्रतीक्षा में समकालिक रूप से अवरुद्ध है: बेकन फ्लिप करने के लिए तैयार है, टोस्टर में पॉप अप करने के लिए तैयार रोटी, और इसी तरह।

एसिंक प्रोग्रामिंग तकनीकों का उपयोग करके, आप अपने आवेदन की दक्षता और जवाबदेही में सुधार कर सकते हैं, ठीक उसी तरह जैसे आप एक साथ कई कार्य करके नाश्ते को अधिक कुशलता से कैसे बना सकते हैं।

Async जवाबदेही में सुधार करता है

अतुल्यकालन उन गतिविधियों के लिए आवश्यक है जो संभावित रूप से अवरुद्ध हैं, जैसे वेब एक्सेस। कभी-कभी वेब संसाधन तक पहुँच धीमी या विलंबित होती है. यदि ऐसी गतिविधि एक तुल्यकालिक प्रक्रिया में अवरुद्ध है, तो संपूर्ण अनुप्रयोग को प्रतीक्षा करनी होगी। एक अतुल्यकालिक प्रक्रिया में, एप्लिकेशन अन्य कार्य के साथ जारी रख सकता है जो संभावित रूप से अवरुद्ध कार्य समाप्त होने तक वेब संसाधन पर निर्भर नहीं करता है।

निम्न तालिका विशिष्ट क्षेत्रों को दिखाती है जहां अतुल्यकालिक प्रोग्रामिंग जवाबदेही में सुधार करती है। .NET और Windows रनटाइम से सूचीबद्ध API में ऐसी विधियाँ हैं जो async प्रोग्रामिंग का समर्थन करती हैं।

आवेदन क्षेत्र Async विधियों के साथ .NET प्रकार Async विधियों के साथ Windows रनटाइम प्रकार
वेब का उपयोग HttpClient Windows.Web.Http.HttpClient, SyndicationClient
फ़ाइलों के साथ कार्य करना JsonSerializer, StreamReader, StreamWriter, आदि। भंडारणफ़ाइल
छवियों के साथ कार्य करना MediaCapture, BitmapEncoder, BitmapDecoder
डब्ल्यूसीएफ प्रोग्रामिंग सिंक्रोनस और एसिंक्रोनस ऑपरेशन

कैसे बनाएं और एसिंक्रोनस विधियों को कॉल करें

सी # में, और कीवर्ड का उपयोग करके asyncawait कार्यान्वित अतुल्यकालिक संचालन। कीवर्ड का async उपयोग एसिंक्रोनस विधि को परिभाषित करने के लिए किया जाता है, जबकि कीवर्ड का उपयोग एसिंक्रोनस विधि को await कॉल करने और कॉलिंग थ्रेड को अवरुद्ध किए बिना इसके परिणाम की प्रतीक्षा करने के लिए किया जाता है। अतुल्यकालिक संचालन आमतौर पर या Task प्रकारों का Task<T> उपयोग करके कार्यान्वित किए जाते हैं, जो एक चल रहे ऑपरेशन का प्रतिनिधित्व करते हैं जिसकी प्रतीक्षा की जा सकती है।

सी # में एक अतुल्यकालिक कार्य बनाने और कॉल करने का एक उदाहरण यहां दिया गया है:


using System;
using System.IO;
using System.Threading.Tasks;

public class Program
{
    public static async Task Main()
    {
        string filePath = "example.txt";
        string content = await ReadFileAsync(filePath);
        Console.WriteLine(content);
    }

    public static async Task<string> ReadFileAsync(string filePath)
    {
        using (StreamReader reader = new StreamReader(filePath))
        {
            string content = await reader.ReadToEndAsync();
            return content;
        }
    }
}

इस उदाहरण में, विधि को ReadFileAsync कीवर्ड का उपयोग करके async परिभाषित किया गया है और इसमें वापसी प्रकार है Task<string>async कीवर्ड इंगित करता है कि विधि में एसिंक्रोनस ऑपरेशन हैं, और वापसी प्रकार का Task<string> इंगित करता है कि विधि एक कार्य लौटाती है जो एसिंक्रोनस ऑपरेशन का प्रतिनिधित्व करती है। Task<string> प्रकार एक सामान्य कार्य है जो एक अतुल्यकालिक कार्रवाई का प्रतिनिधित्व करता है जो एक स्ट्रिंग मान देता है। विधि एक पैरामीटर के ReadFileAsync रूप में एक फ़ाइल पथ लेती है और फ़ाइल की सामग्री को अतुल्यकालिक रूप से पढ़ती है।

विधि को Main अतुल्यकालिक के रूप में भी परिभाषित किया गया है, जिससे यह कीवर्ड का उपयोग करके विधि को ReadFileAsync कॉल करने की अनुमति देता है await । कीवर्ड का await उपयोग यह इंगित करने के लिए किया जाता है कि प्रोग्राम को जारी रखने से पहले एसिंक्रोनस ऑपरेशन के परिणाम की प्रतीक्षा करनी चाहिए। इस स्थिति में, प्रोग्राम कंसोल पर इसकी सामग्री को प्रिंट करने से पहले फ़ाइल को पढ़ने के लिए प्रतीक्षा करता है।

सारांश

इस इकाई में, आपने अतुल्यकालिक प्रोग्रामिंग के लाभों के बारे में सीखा और यह कैसे आपके अनुप्रयोगों की जवाबदेही में सुधार कर सकता है। आपने यह भी सीखा कि सी # में और कीवर्ड का उपयोग करके asyncawait अतुल्यकालिक विधियों को कैसे बनाया और कॉल किया जाए। इन तकनीकों का उपयोग करके, आप अधिक कुशल और उत्तरदायी एप्लिकेशन लिख सकते हैं जो उपयोगकर्ता इंटरफ़ेस को फ़्रीज़ किए बिना या अन्य कार्यों को अवरुद्ध किए बिना संभावित रूप से अवरुद्ध संचालन को संभाल सकते हैं।

प्रमुख बिंदु

  • अतुल्यकालिक प्रोग्रामिंग अनुप्रयोग प्रदर्शन और जवाबदेही को बढ़ाता है।
  • सी # एसिंक प्रोग्रामिंग के लिए एक सरलीकृत दृष्टिकोण प्रदान करता है।
  • Async प्रोग्रामिंग वेब एक्सेस जैसी गतिविधियों को संभावित रूप से अवरुद्ध करने में फायदेमंद है।
  • सी # में, कीवर्ड का उपयोग करके async अतुल्यकालिक विधियां बनाई जाती हैं और कीवर्ड का उपयोग करके कॉल की जाती हैं await
  • Task या Task<T> प्रकार चल रहे संचालन का प्रतिनिधित्व करते हैं जिन्हें सी # में प्रतीक्षित किया जा सकता है।