क्रॉस-प्लेटफ़ॉर्म ऐप लिखने का एक और तरीका: तटस्थ इंटर्नल्स और इलेक्ट्रॉन और NW.js के साथ तुलना


मैं श्रीलंका से शालीथा सुरंगा हूं। मैंने विश्वविद्यालय में हमारे अनुसंधान परियोजना के रूप में अन्य दो सदस्यों के साथ तटस्थ परियोजना शुरू की।


क्रॉस-प्लेटफ़ॉर्म एप्लिकेशन डेवलपमेंट सॉफ़्टवेयर डेवलपमेंट संगठनों के बीच बेहद उपयोगी है क्योंकि एक बड़े एंड-यूज़र दर्शकों को लक्षित किया जा सकता है। पहले कई दृष्टिकोण थे, जैसे कि प्रत्येक प्लेटफ़ॉर्म पर कई कोडबेस लिखना, प्लेटफार्म चयन के लिए सशर्त का उपयोग करके या प्रोग्रामिंग भाषा का उपयोग करके एक सिंगल कोडबेस लिखना, जिसमें रन-टाइम पर क्रॉस-प्लेटफॉर्म वर्चुअल मशीन होती है। प्रत्येक में डिजाइन की जटिलता, सीमित निम्न-स्तरीय पहुंच और धीमी गति से सीखने की दर जैसी कमियां थीं। वेब तकनीकों के साथ क्रॉस-प्लेटफॉर्म एप्लिकेशन डेवलपमेंट के बाद [1] आया। इलेक्ट्रॉन और NW.j सबसे लोकप्रिय फ्रेमवर्क हैं जो डेवलपर्स को जावास्क्रिप्ट का उपयोग करके क्रॉस-प्लेटफ़ॉर्म एप्लिकेशन बनाने की अनुमति देते हैं। मूल रूप से, ये लोकप्रिय रूपरेखा एम्बेडेड क्रोमियम ब्राउज़र और नोड रन-टाइम [2], [3] को जोड़ती है।


इन चौखटों का उपयोग कई क्रॉस-प्लेटफ़ॉर्म एप्लिकेशन बनाने के लिए किया जा रहा है। जबकि समुदाय ने इन रूपरेखाओं की कई अनदेखी कमियां बताई हैं। बड़े बंडल एप्लिकेशन आकार, उच्च मेमोरी खपत और लंबे विकास वर्कफ़्लो प्रमुख चीजें हैं जिनकी इंटरनेट मंचों और वेबसाइटों [4], [5], [6], [7], [8] के माध्यम से आलोचना की गई थी। तालिका १.१ इलेक्ट्रॉन / NW.js. के फायदे और नुकसान को दर्शाता है।


तालिका 1.1: इलेक्ट्रॉन / एनडब्ल्यू, जेएस के फायदे और नुकसान


इलेक्ट्रॉन और NW.js के लाभइलेक्ट्रॉन और NW.js के नुकसान
जावास्क्रिप्ट का उपयोग करने के बाद से विकास बहुत आसान हैएप्लिकेशन बंडल को ब्लोटवेयर के रूप में माना जाता है (उच्च डिस्क स्थान उपयोग)
सभी समर्थित प्लेटफार्मों लिनक्स, विंडोज और मैकओएस के लिए नोड रनटाइमसिगल कोडबेस के माध्यम से मूल कार्यों तक पहुंचेंउच्च स्मृति खपत और सुस्ती
कई नोड मॉड्यूल स्थापित करने की आवश्यकता है

प्रेरणा


इलेक्ट्रॉनज और NW.js क्रोमियम-नोड आधारित रूपरेखाओं की तरह अनुप्रयोग बंडल आकार को और कम नहीं कर सकते क्योंकि एम्बेडेड घटक आकार को और गिराया नहीं जा सकता है। एक संभावित समाधान एक नया क्रॉस-प्लेटफ़ॉर्म एप्लिकेशन डेवलपमेंट फ्रेमवर्क पेश कर रहा है, जिसमें इलेक्ट्रॉन और एनडब्ल्यू.जेएस के सभी फायदे हैं, लेकिन जो कंप्यूटर मेमोरी के लिए हल्का, पोर्टेबल और हल्का है। महत्वपूर्ण रूप से प्रत्येक प्लेटफॉर्म में अंतर्निहित ब्राउज़र घटक होता है जिसका उपयोग एम्बेडेड क्रोमियम के बजाय किया जा सकता है। विंडोज प्लेटफॉर्म में MSHTML (IE10 / 11) और लिनक्स में gtk-webkit2 है।


इसके अलावा, प्रत्येक प्लेटफ़ॉर्म में एक डिफ़ॉल्ट वेब ब्राउज़र भी है। इसलिए, क्रोमियम मॉड्यूल को उपयोगकर्ता के वेब ब्राउज़र या वेब ब्राउज़र घटक के साथ बदल दिया जा सकता है। नोड रन-टाइम को हल्के वेब सर्वर से बदला जा सकता है जो देशी ओएस कार्यक्षमता को उजागर करता है।


प्रमुख लक्ष्य


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


लाइटवेट


एप्लिकेशन बंडल और एप्लिकेशन डेवलपमेंट किट समान हैं, और यह बहुत कम डिस्क स्थान पर कब्जा कर लेगा। आवेदन बंडल को एक वांछित संग्रह प्रारूप में संकुचित किया जा सकता है ताकि इसके आकार को और कम किया जा सके।


पूरी तरह से पोर्टेबल


एप्लिकेशन डेवलपमेंट किट पूरी तरह से पोर्टेबल होना चाहिए, इसका मतलब है कि विकास प्रक्रिया से पहले किसी और चीज की आवश्यकता नहीं है। इस प्रकार, एप्लिकेशन पैकेज भी पूरी तरह से पोर्टेबल होना चाहिए, इसलिए नए फ्रेमवर्क के साथ बनाए गए एप्लिकेशन के निष्पादन से पहले किसी भी आवश्यक शर्तें की आवश्यकता नहीं है।


सरल विकास वर्कफ़्लो


अनुप्रयोग विकास वर्कफ़्लो यथासंभव सरल होना चाहिए। इंटरनेट की बचत करने वाले डेवलपर के समय और नेटवर्क के उपयोग पर कोई निर्भरता स्थापित नहीं की जानी चाहिए। इस प्रकार, डिबगिंग अनुप्रयोग सरल होना चाहिए क्योंकि इलेक्ट्रॉन करता है [12]।


मूल निवासी


नई रूपरेखा को जावास्क्रिप्ट आधारित पुस्तकालय के माध्यम से आवश्यक निम्न-स्तरीय ओएस कार्यों को उजागर करना चाहिए और सिस्टम कॉल थ्रेड्स का उपयोग करके देशी कॉल को समवर्ती तरीके से नियंत्रित किया जाना चाहिए।


समाधान वास्तुकला


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



चित्र 1.1: तटस्थ समाधान डिजाइन


तटस्थ सर्वर



चित्र 1.2: तटस्थ सर्वर डिज़ाइन


एक आवक HTTP अनुरोध CML के माध्यम से देशी इंटरफेस तक पहुंच प्राप्त करता है जो कार्यात्मक निष्पादन के लिए एक अलग थ्रेड बनाता है या पुन: उपयोग करता है। बॉडी पार्सर संदेश को पार्स करता है और राउटर से अनुरोध करने के लिए प्रासंगिक डेटा भेजता है जो विशेष देशी इंटरफेस को कॉल करता है। दो पृष्ठभूमि सूत्र हैं। UI थ्रेड मुख्य देशी विंडो लूप चलाता है, पिंग रिसीवर थ्रेड तटस्थ टैब सर्वर को रोकता है जब ब्राउज़र टैब डीबग मोड में बंद हो गया था। कॉन्फ़िगरेशन मैप एक इन-मेमोरी संरचना है जो एप्लिकेशन कॉन्फ़िगरेशन के लिए कुंजी-मूल्य जोड़े रखती है।


तटस्थ ग्राहक



चित्र 1.3: तटस्थ ग्राहक डिजाइन


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


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


आज तटस्थता के साथ शुरुआत करें!


वेबसाइट
Github


अधिक खुले स्रोत परियोजनाओं के लिए गितुब पर शालिथा सुरंगा का पता लगाएं


संदर्भ

01 Lnu.diva-portal.org। (2018)। [ऑनलाइन] यहां उपलब्ध है: http://lnu.diva-portal.org/smash/get/diva2:1081105/FULLTEXT01.pdf


02 इलेक्ट्रॉनज.ओआरजी। (2018)। इलेक्ट्रॉन के बारे में | इलेक्ट्रॉन। [ऑनलाइन] यहां उपलब्ध है: https://electronjs.org/docs/tutorial/about


03 गिटहब। (2018)। nwjs / nw.js. [ऑनलाइन] यहां उपलब्ध है: https://github.com/nwjs/nw.js/wiki/NW13-altureure


04 गिटहब। (2018)। NW निष्पादन योग्य फ़ाइल आकार: एक हल्के स्टैंडअलोन निष्पादन योग्य मुद्दा # 3955 · nwjs / nw.js. [ऑनलाइन] यहां उपलब्ध है: https://github.com/nwjs/nw.js/issues/3955


05 गिटहब। (2018)। अपेक्षित ऐप बंडल आकार? अंक # 2003 इलेक्ट्रॉन / इलेक्ट्रॉन। [ऑनलाइन] यहां उपलब्ध है: https://github.com/electron/electron/issues/2003


06 मध्यम। (2018)। इलेक्ट्रॉन कैंसर है - कमिट लॉग - मीडियम। [ऑनलाइन] यहां उपलब्ध है: https://medium.com/commitlog/electron-is-cancer-b066108e6c32


07 मध्यम। (2018)। क्यों मैं अभी भी विम - कमिट लॉग - मीडियम का उपयोग करता हूं। [ऑनलाइन] यहां उपलब्ध है: https://medium.com/commitlog/why-i-still-use-vim-67afd76b4db6


08 News.ycombinator.com। (2018)। HN से पूछें: क्या आपको लगता है कि Desktop Desktop Apps बनाने के लिए इलेक्ट्रॉन अच्छा है? | हैकर न्यूज़। [ऑनलाइन] यहां उपलब्ध है: https://news.ycombinator.com/item?id=14245183


09 गिटहब। (2018)। न्यूट्रिनोज / मूल्यांकन। [ऑनलाइन] यहां उपलब्ध है: https://github.com/neutralinojs/evaluation


10 तटस्थ। js.org। (2018)। उदासीन | पोर्टेबल और हल्के क्रॉस प्लेटफॉर्म एप्लिकेशन डेवलपमेंट फ्रेमवर्क। [ऑनलाइन] पर उपलब्ध: https://neutralino.js.org/


११ गीठब। (2018)। Neutralinojs। [ऑनलाइन] यहां उपलब्ध है: https://github.com/neutralinojs


12 इलेक्ट्रॉनज.ओआरजी। (2018)। आवेदन डिबगिंग | इलेक्ट्रॉन। [ऑनलाइन] यहां उपलब्ध है: https://electronjs.org/docs/tutorial/application-debugging

Source: https://habr.com/ru/post/hi443572/


All Articles