कोटलिनमा RxSwift र coroutines - AGIMA र GeekBrains बाट मोबाइल विकासमा एक वैकल्पिक

कोटलिनमा RxSwift र coroutines - AGIMA र GeekBrains बाट मोबाइल विकासमा एक वैकल्पिक

ज्ञान राम्रो छ, केवल महान। तर अभ्यास पनि आवश्यक छ ताकि तपाईले प्राप्त डाटा प्रयोग गर्न सक्नुहुनेछ, तिनीहरूलाई "निष्क्रिय भण्डारण" स्थितिबाट "सक्रिय प्रयोग" स्थितिमा स्थानान्तरण गर्नुहोस्। सैद्धान्तिक तालिम जतिसुकै राम्रो किन नहोस्, “क्षेत्रमा” काम गर्नैपर्छ। माथिको अध्ययनको लगभग कुनै पनि क्षेत्रमा लागू हुन्छ, अवश्य पनि, सफ्टवेयर विकास सहित।

यस वर्ष, GeekBrains, अनलाइन विश्वविद्यालय GeekUniversity को मोबाइल विकास संकायको भागको रूपमा, अन्तरक्रियात्मक एजेन्सी AGIMA सँग काम गर्न थाल्यो, जसको टोली पेशेवर विकासकर्ताहरू छन् (तिनीहरूले जटिल उच्च-लोड परियोजनाहरू, कर्पोरेट पोर्टलहरू र मोबाइल अनुप्रयोगहरू सिर्जना गर्छन्, यति मात्रै)। AGIMA र GeekBrains ले मोबाइल अनुप्रयोग विकासको व्यावहारिक मुद्दाहरूमा गहिरो डुब्नको लागि एक वैकल्पिक सिर्जना गरेको छ।

अर्को दिन हामीले आईओएस विशेषज्ञ इगोर वेदेनिभ र एन्ड्रोइडमा विशेषज्ञ अलेक्ज्याण्डर टिजिकसँग कुरा गर्यौं। तिनीहरूलाई धन्यवाद, मोबाइल विकास मा वैकल्पिक व्यावहारिक संग समृद्ध थियो RxSwift फ्रेमवर्क मा विशेष पाठ्यक्रम и कोटलिन मा coroutines। यस लेखमा, विकासकर्ताहरूले प्रोग्रामरहरूको लागि प्रत्येक क्षेत्रको महत्त्वको बारेमा कुरा गर्छन्।

उदाहरणको रूपमा RxSwift प्रयोग गरेर iOS मा प्रतिक्रियाशील प्रोग्रामिङ

कोटलिनमा RxSwift र coroutines - AGIMA र GeekBrains बाट मोबाइल विकासमा एक वैकल्पिक
वैकल्पिक शिक्षक इगोर वेदेनेभ: "RxSwift संग, तपाइँको आवेदन उडान हुनेछ"

विद्यार्थीहरूले चुनावी समयमा के जानकारी प्राप्त गर्छन्?

हामी फ्रेमवर्कको क्षमताहरूको बारेमा मात्र कुरा गर्दैनौं, तर यसलाई क्लासिक MVVM + RxSwift संयोजनमा कसरी प्रयोग गर्ने भनेर पनि देखाउँछौं। धेरै व्यावहारिक उदाहरणहरू पनि छलफल गरिन्छ। प्राप्त डाटा समेकित गर्न, हामी एक अनुप्रयोग लेख्छौं जुन सम्भव भएसम्म फिल्ड अपरेटिङ सर्तहरूको नजिक छ। यो प्रयोग गरेर एक संगीत खोज अनुप्रयोग हुनेछ iTunes खोज API। त्यहाँ हामी सबै उत्तम अभ्यासहरू लागू गर्नेछौं, साथै MVC प्रतिमानमा RxSwift प्रयोग गर्नको लागि एक सरल विकल्पलाई विचार गर्नुहोस्।

RxSwift - किन एक iOS प्रोग्रामरलाई यो फ्रेमवर्क चाहिन्छ, यसले विकासकर्ताको लागि जीवन कसरी सजिलो बनाउँछ?

RxSwift स्ट्रिमलाइनहरूले घटना स्ट्रिमहरू र वस्तुहरू बीचको जडानहरूसँग काम गर्दछ। सबैभन्दा सरल र स्पष्ट उदाहरण बाइन्डिङहरू हो: उदाहरणका लागि, तपाईंले इन्टरफेसलाई केवल viewModel मा चलमा नयाँ मानहरू सेट गरेर अद्यावधिक गर्न सक्नुहुन्छ। यसरी, इन्टरफेस डाटा-संचालित हुन्छ। थप रूपमा, RxSwift ले तपाईंलाई प्रणालीलाई घोषणात्मक शैलीमा वर्णन गर्न अनुमति दिन्छ, जसले तपाईंलाई आफ्नो कोड व्यवस्थित गर्न र पठनीयता बढाउन अनुमति दिन्छ। यी सबैले अनुप्रयोगहरूलाई अझ प्रभावकारी रूपमा विकास गर्न मद्दत गर्दछ।

एक विकासकर्ताको लागि, फ्रेमवर्कको ज्ञान पनि पुन: सुरुमा राम्रो प्लस हो, किनकि प्रतिक्रियात्मक प्रोग्रामिङको बुझाइ, र विशेष गरी RxSwift सँगको अनुभव, बजारमा मूल्यवान छ।

किन अरूलाई भन्दा यो विशेष फ्रेमवर्क छनौट?

RxSwift सँग सबैभन्दा ठूलो समुदाय छ। त्यो हो, विकासकर्ताले सामना गरिरहेको समस्या पहिले नै कसैद्वारा हल भइसकेको छ भन्ने ठूलो सम्भावना छ। साथै बक्स बाहिर बाइन्डिङ को एक ठूलो संख्या। यसबाहेक, RxSwift ReactiveX को हिस्सा हो। यसको मतलब एन्ड्रोइडका लागि एनालग छ, उदाहरणका लागि (RxJava, RxKotlin), र कार्यशालाका सहकर्मीहरूले एकअर्कासँग एउटै भाषा बोल्न सक्छन्, यो तथ्यको बावजुद केही आईओएससँग काम गर्छन्, अरू एन्ड्रोइडसँग।

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

RxSwift कहाँ प्रयोग गर्नुपर्छ?

  1. बाइन्डिङहरू। एक नियमको रूपमा, हामी UI को बारेमा कुरा गर्दैछौं, UI परिवर्तन गर्ने क्षमता, जस्तै डेटा परिवर्तनहरूमा प्रतिक्रिया दिँदै, र स्पष्ट रूपमा इन्टरफेसलाई यो अपडेट गर्ने समय हो भनेर बताइएन।
  2. कम्पोनेन्टहरू र सञ्चालनहरू बीचको सम्बन्ध। उदाहरण मात्र। हामीले नेटवर्कबाट डाटाको सूची प्राप्त गर्न आवश्यक छ। वास्तवमा, यो त्यस्तो सरल अपरेशन होइन। यो गर्नको लागि, तपाईंले अनुरोध पठाउनु पर्छ, प्रतिक्रियालाई वस्तुहरूको एर्रेमा नक्सा गर्नुहोस्, यसलाई डाटाबेसमा बचत गर्नुहोस् र UI मा पठाउनुहोस्। एक नियमको रूपमा, यी अपरेशनहरू प्रदर्शन गर्नका लागि विभिन्न घटकहरू जिम्मेवार छन् (हामीले सिद्धान्तहरूलाई माया गर्छौं र पालना गर्छौं SOLID?) हातमा RxSwift जस्तो उपकरण भएकोले, यो प्रणालीले के गर्छ, र यसले अन्य ठाउँहरूमा कसरी गर्नेछ भनेर वर्णन गर्न सम्भव हुन्छ। यो कारणले गर्दा कोडको राम्रो संगठन प्राप्त हुन्छ र पठनीयता बढ्छ। तुलनात्मक रूपमा बोल्दा, कोडलाई सामग्रीको तालिका र पुस्तकमा विभाजन गर्न सकिन्छ।

कोटलिनमा कोरुटिनहरू

कोटलिनमा RxSwift र coroutines - AGIMA र GeekBrains बाट मोबाइल विकासमा एक वैकल्पिक
वैकल्पिक पाठ्यक्रम शिक्षक अलेक्जेन्डर टिजिक: "आधुनिक विकासलाई आधुनिक प्राविधिक माध्यमहरू चाहिन्छ"

ब्रान्डेड क्वार्टरको भागको रूपमा GeekBrains संकायमा के सिकाइनेछ?

सिद्धान्त, अन्य दृष्टिकोणहरूसँग तुलना, शुद्ध कोटलिन र एन्ड्रोइड अनुप्रयोग मोडेलमा व्यावहारिक उदाहरणहरू। अभ्यासको लागि, विद्यार्थीहरूलाई एउटा एप्लिकेसन देखाइनेछ जसमा सबै कुरा कोराउटिनहरूसँग जोडिएको हुन्छ। तथ्य यो हो कि अधिकांश अनुप्रयोगहरू पूर्ण रूपमा एसिन्क्रोनस र समानान्तर कम्प्युटिङ हुन्। तर कोटलिन कोरुटिनहरूले भ्रामक, विषम वा अत्यधिक जटिल र कार्यसम्पादन-माग गर्ने कोडलाई एकल, बुझ्न-सजिलो शैलीमा घटाउन, सही कार्यान्वयन र कार्यसम्पादनमा फाइदाहरू प्राप्त गर्न अनुमति दिन्छ।

हामी coroutines मा idiomatic कोड लेख्न सिक्ने छौँ जसले व्यावहारिक समस्याहरू समाधान गर्छ र पहिलो नजरमा बुझ्न सकिने छ, यहाँसम्म कि coroutines कसरी काम गर्दछ (जसलाई RxJava जस्ता पुस्तकालयहरूको बारेमा भन्न सकिँदैन)। हामी MVI अवधारणामा डेटा गोदाम जस्ता थप जटिल समस्याहरू समाधान गर्न अभिनेता मोडेल जस्ता थप जटिल अवधारणाहरू कसरी प्रयोग गर्ने भनेर पनि बुझ्नेछौं।

वैसे, थप राम्रो समाचार। ऐच्छिक रेकर्ड भइरहेको बेला, कोटलिन कोरुटिन्स पुस्तकालयमा अपडेट जारी गरियो, जसमा कक्षा देखा पर्‍यो। Flow - प्रकार को एनालॉग Flowable и Observable RxJava बाट। अपडेटले अनिवार्य रूपमा एप्लिकेसन विकासकर्ताको दृष्टिकोणबाट कोराउटिन सुविधालाई पूर्ण बनाउँछ। साँचो, त्यहाँ अझै सुधारको लागि ठाउँ छ: कोटलिन/नेटिभमा कोरुटिनहरूको समर्थनको लागि धन्यवाद, यो पहिले नै कोटलिनमा बहु-प्लेटफर्म अनुप्रयोगहरू लेख्न सम्भव छ र शुद्ध कोटलिनमा RxJava वा एनालगहरूको अभावबाट पीडित छैन। कोटलिन/नेटिभमा कोराउटिनहरूको लागि समर्थन अझै पूरा भएको छैन। उदाहरणका लागि, अभिनेताहरूको कुनै अवधारणा छैन। सामान्यतया, कोटलिन टोलीसँग सबै प्लेटफर्महरूमा थप जटिल अभिनेताहरूलाई समर्थन गर्ने योजना छ।

Kotlin Coroutines - तिनीहरूले Kotlin विकासकर्तालाई कसरी मद्दत गर्छन्?

Coroutines ले पढ्न योग्य, मर्मतयोग्य, र सुरक्षित, एसिन्क्रोनस, र समवर्ती कोड लेख्ने ठूलो अवसर प्रदान गर्दछ। तपाईले अन्य एसिन्क्रोनस फ्रेमवर्क र दृष्टिकोणहरूका लागि एडेप्टरहरू पनि सिर्जना गर्न सक्नुहुन्छ जुन कोडबेसमा पहिले नै प्रयोग हुन सक्छ।

कोरुटिनहरू थ्रेडहरूबाट कसरी फरक छन्?

कोटलिन टोलीले coroutines लाई हल्का थ्रेडहरू बोलाउँछ। साथै, एक कोरुटिनले केहि प्रकारको मान फिर्ता गर्न सक्छ, किनभने, यसको मूलमा, एक कोरुटिन एक निलम्बित गणना हो। यो सिधै प्रणाली थ्रेडहरूमा निर्भर गर्दैन; थ्रेडहरूले मात्र कोराउटिनहरू कार्यान्वयन गर्दछ।

कुन व्यावहारिक समस्याहरू Coroutine प्रयोग गरेर समाधान गर्न सकिन्छ, जुन "शुद्ध" कोटलिन प्रयोग गरेर समाधान गर्न सक्दैन वा गाह्रो छ?

कुनै पनि एसिन्क्रोनस, समानान्तर, "प्रतिस्पर्धी" कार्यहरू कोराउटिनहरू प्रयोग गरेर राम्रोसँग हल हुन्छन् - यो प्रयोगकर्ता क्लिकहरू प्रशोधन गर्ने, अनलाइन जाने, वा डाटाबेसबाट अद्यावधिकहरूको सदस्यता लिने हो।

शुद्ध कोटलिनमा, यी समस्याहरू जाभामा जस्तै समाधान गरिन्छ - हजारौं फ्रेमवर्कहरूको सहयोगमा, जसमध्ये प्रत्येकको आफ्नै फाइदा र विपक्ष छ, तर ती मध्ये कुनै पनि भाषा स्तर समर्थन छैन।

निष्कर्षको रूपमा, यो भन्न लायक छ कि दुवै ऐच्छिक (र मुख्य पाठ्यक्रमहरू पनि) बाह्य परिस्थितिहरूमा परिवर्तनहरू अनुसार अद्यावधिक गरिएको छ। यदि महत्त्वपूर्ण अद्यावधिकहरू भाषा वा फ्रेमवर्कहरूमा देखा पर्छन् भने, शिक्षकहरूले यसलाई ध्यानमा राख्छन् र कार्यक्रम परिमार्जन गर्छन्। यो सबैले तपाईंलाई विकास प्रक्रियाको पल्समा आफ्नो औंला राख्न अनुमति दिन्छ, त्यसैले बोल्न।

स्रोत: www.habr.com

एक टिप्पणी थप्न