لماذا اخترنا الإلكترون

الخلفية


نحن فريق تطوير صغير ، ونحن بصدد إنشاء أداة جديدة للعمل مع API Testmace . في الواقع ، إنه عميل للراحة المتقدمة ولديه القدرة على إنشاء اختبارات واجهة برمجة تطبيقات تلقائية باستخدام واجهة رسومية ، ومجهزة بأشياء لطيفة مثل آلية متغيرة متقدمة ، والإكمال التلقائي في جميع حقول الإدخال وتسليط الضوء على بناء الجملة الكلي.

أريد أن أخبركم كيف توصلنا إلى Electron كتقنية لكتابة طلبنا.

لماذا سطح المكتب


في 10-15 سنة الماضية ، شهدت الشبكة نمواً هائلاً وتستمر في النمو بسرعة. هناك باستمرار المزيد والمزيد من الأدوات الجديدة لإنشاء المزيد من تطبيقات الويب الوظيفية والمعقدة. يتم إنشاء لغات البرمجة بأكملها وشحذها لكتابة تطبيقات الويب وبدون حلول جاهزة تقريبًا خارج هذا المجال. وفي حياتنا اليومية ، استبدلنا بالفعل مكتب مايكروسوفت وجهاز ثندربيرد بالفعل بمستندات جوجل وواجهة جوجل.

ومع ذلك ، لا يمكن للويب استبدال تطبيقات سطح المكتب بالكامل ، وللأسباب التالية:

  • عدم استجابة تطبيقات الويب. في مكان ما ، يقع اللوم على التزامن بين خادم العميل والإنترنت البطيء ، وفي مكان ما طبيعة جافا سكريبت المفرد ، وفي مكان ما فقط الشراهة في المتصفح على جهازك غير القوي. تجدر الإشارة إلى أن حل المشاكل المذكورة أعلاه هو مجرد مسألة وقت. على وجه الخصوص ، يتم دعم العاملين على شبكة الإنترنت بالفعل من قبل جميع المتصفحات الحديثة ، مما يحل جزئيا مشكلة تعدد العمليات ، ويمكن لميزات مثل SharedArrayBuffer أن تقلل الحمل الزائد لنسخ الذاكرة بين الخيط الرئيسي والعمال.
  • الوصول إلى موارد النظام المحلي. هناك فئات كاملة من التطبيقات (مديري الملفات ، tweakers ، daemons والخدمات) التي لا يمكن تنفيذها كتطبيقات ويب (على الأقل في هذه المرحلة من التطوير).
  • حدود قدرات المتصفح نفسه. على سبيل المثال ، يقتصر تفاعل الشبكة فقط عن طريق إرسال طلب http والاتصال عبر مآخذ الويب. أشياء المستوى الأدنى (tcp ، مآخذ التحديث) ، للأسف ، غير متوفرة.
  • قيود مصطنعة للمتصفحات لأسباب أمنية. CORS ، والعمل مع ملفات تعريف الارتباط ، والقيود المفروضة على رؤوس المرسلة.
  • مجموعة محدودة من اللغات والمناهج. بخلاف تطبيقات الويب ، حيث تظل javascript هي اللغة الوحيدة لكتابة التطبيقات ، تتيح لك تطبيقات سطح المكتب استخدام أي لغة برمجة حتى المجمعات ، واستخدام موارد النظام بفعالية باستخدام البرمجة متعددة الخيوط والتعليمات ذات المستوى المنخفض. تجدر الإشارة إلى أن الموقف آخذ في التحسن بشأن هذه المسألة - تظهر المترجمات من بعض اللغات في جافا سكريبت. علاوة على ذلك ، يتيح لك التجميع في تجميع الويب نقل وقت التشغيل من لغات أخرى (C ++ ، C # ، الصدأ ، وما إلى ذلك) ، وكثيراً ما تحصل على أداء جيد.

النظر في الأسباب المذكورة أعلاه ، يمكننا أن نستنتج أن TestMace يجب أن يكون تطبيق سطح مكتب نموذجي:

  • نحن بحاجة إلى الوصول إلى نظام الملفات للعمل مع المشروع.
  • لا تسمح قيود الجلب بالتحكم الكامل في تكوين الطلب وتنفيذه.
  • في المستقبل ، قد نحتاج إلى تحسينات منخفضة المستوى لتحسين أداء التطبيق.

اختيار التكنولوجيا


قررنا أن تطبيقنا سيكون سطح مكتب ، ومع ذلك ، لم نقرر بعد اللغة والتقنيات التي سنطبق عليها هذا. بالنسبة إلى لغات البرمجة ، لدينا المتطلبات التالية:

  1. يجب أن تكون لغة مكتوبة ثابتة.
  2. يجب أن يكون للغة بنية تحتية كبيرة وناضجة - يجب أن يكون هناك مكتبات مثبتة ودعم من IDE والأدوات الأخرى.
  3. يجب أن تكون اللغة مألوفة لدى معظم أعضاء الفريق.

النقطة الأخيرة مهمة أيضا. نحن ، كشركة ناشئة ، مهتمون بأسرع وقت (خلال ستة أشهر) إطلاق المنتج في السوق ، مع الاستفادة القصوى من الموارد الداخلية للفريق. إن تعلم لغة وبنية تحتية جديدة يقلل من قابلية التنبؤ بالتخطيط ومحفوف بالأخطاء في اعتماد قرارات معينة.

بصرف النظر عن ذلك ، لا يبدو أن قائمة المتطلبات صارمة للغاية ، كما أن لغات مثل C # و TypeScript و Go تفي بها. سنقوم بإجراء مزيد من التحديد للتقنيات مع مراعاة مدى توفر تطبيقات المكونات الضرورية لهذه اللغات.

الأمور أكثر إثارة للاهتمام من خلال اختيار الحلول لتطوير واجهة المستخدم. متطلبات لهم هي كما يلي:

  1. عبر منصة (ويندوز ، لينكس ، ماك)
  2. مجموعة غنية من كل من المكونات المدمجة والجهات الخارجية
  3. تخصيص المكون
  4. لغة الترميز لوصف الواجهة
  5. دعم جيد

النظر في الحلول المناسبة لهذه المتطلبات.

كيو تي (كمل)


Qt عبارة عن مجموعة أدوات قوية لكتابة التطبيقات عبر النظام الأساسي. في أحدث إصدارات هذا الإطار ، ظهر مكون Qt Quick لكتابة التطبيقات باستخدام لغة وصف علامة QML التعريفية. تعد Qt بشكل عام ، و QML على وجه الخصوص ، من الحلول التي أثبتت جدواها في المعركة والتي وجدت تطبيقاتها في جميع المجالات تقريبًا - بدءًا من أنظمة البرامج المدمجة المضمّنة وحتى أنظمة التشغيل.

لغة البرمجة الرئيسية في Qt هي C ++ (يمكنك استخدام javascript في QML). ومع ذلك ، فبالنسبة إلى Qt و QML ، توجد روابط بلغات البرمجة الأخرى (على سبيل المثال ، C # ). ومع ذلك ، فقط بيثون التكامل معتمد رسميا . كل شيء آخر هو تطبيقات الطرف الثالث. موافق ، لا أريد أن أثق في الجزء الأساسي من التطبيق بالمكتبة ، والذي تم تطويره كهواية من قبل مجموعة صغيرة من المتحمسين.

هناك أيضا مشروع بريج . هذه هي Bode NodeJS لـ QML. ميزة مميزة لهذا المشروع هو عرض مثير للإعجاب . ومع ذلك ، كما يحدث غالبًا في مشاريع مفتوحة المصدر ، لا يولي المؤلفون الاهتمام اللازم للمشروع ، وبالتالي فإنه يفقد مساره أيضًا.

GTK


مكتبة لبناء واجهة مستخدم ، والتي بدأت كجزء من مشروع GIMP وتم فصلها لاحقًا إلى مشروع منفصل. هناك أداة Glade لتطوير واجهة مستخدم سريعة. اللغة الرئيسية لتطوير GTK هي لغة C ، ولكن هناك مجلدات للعديد من لغات البرمجة الشائعة . علاوة على ذلك ، باستخدام C # binders ، تم إنشاء MonoDevelop - واحدة من IDEs الأقوى لتطوير تحت C #. ومع ذلك ، بعد الفحص الدقيق ، نفهم أن مشروع GTK # في حالة مهجورة - كان الالتزام الأخير في فبراير 2018 ، والتالي في يناير 2017 ثم 2016. بالتزام في السنة. انها ليست سميكة بالنظر إلى مستودع gtk الرئيسي يتطور بنشاط. وكانت السعادة قريبة جدا ...

الإلكترون


في الآونة الأخيرة ، يرتبط الكثير من الضوضاء بهذا الإطار. شخص ما يشيد به على الفرصة لنقل إنجازات تطبيقات الويب إلى سطح المكتب ، شخص ما يكره الشراهة المفرطة. كلاهما يمكن فهمه. يستخدم الإلكترون الموجود أسفل الغطاء node.js ومكتبة تقديم Chromium. في الواقع ، يتم إنشاء تطبيق ويب عادي وملف في ملف قابل للتنفيذ. علاوة على ذلك ، يأتي كل تطبيق مع نسخته الخاصة من Node.js و Chrome.

في الواقع ، يوجد فقط ناقص واحد ، ولكنه خطير للغاية - هذا استهلاك كبير للذاكرة (مقارنة بالتقنيات الأخرى): يستغرق مشروع فارغ ما بين 100 و 200 ميغابايت من الذاكرة. بالنسبة للبعض ، هذا هو السبب في رفض استخدام هذه التطبيقات (مرحبًا ، Skype). ومع ذلك ، دعونا نحلل الوضع في السوق. حاليًا ، تتم كتابة العديد من التطبيقات الشائعة في Electron (Slack و Skype و Discord و VSCode و Atom و Postman و Insomnia ، إلخ). كثير منهم معايير في مجالهم أو يربحون بسرعة قلوب المستخدمين (مثل نفس VSCode والأرق). يستخدم الناس ببساطة الأدوات التي تحل مهامهم اليومية بشكل جيد ، على الرغم من بعض الآثار الجانبية. من ناحية أخرى ، أصبحت أجهزة الكمبيوتر أكثر قوة (على الأقل لم يتوقف نمو ذاكرة الوصول العشوائي) ، وتسمع تعليقات أقل وأقل من العملاء غير الراضين بأن "الكروم قد أكل كل ذاكرتي". باختصار ، نعتقد أن زيادة استهلاك ذاكرة الوصول العشوائي لن يلعب دورًا كبيرًا إذا كان المنتج جيدًا حقًا في مجاله.

مزايا هذه التكنولوجيا واضحة:

  1. القدرة على استخدام أفضل الممارسات من الويب.
  2. من الأسهل العثور على متخصصين في هذا المجال.
  3. سير العمل المستنفد "مصمم" - "مصمم تخطيط" - "مبرمج" ، مليء بأدوات ملائمة في كل مرحلة.

بالإضافة إلى ذلك ، فإننا ندرج حقيقة أن الفريق يتمتع بخبرة واسعة في إنشاء التطبيقات الأمامية.

نتيجة لذلك ، استقرنا على Electron كأداة رئيسية لتطوير مشروعنا. تلقائيًا ، اخترنا TypeScript كلغة لتطوير التطبيق.

الخاتمة


واحدة من المهام الرئيسية لبدء التشغيل هي الإطلاق السريع للمنتج في السوق. بارد إذا كنت تستطيع أن تفعل ذلك بأقل تكلفة. كان الغرض من هذا التحليل هو إيجاد أداة تسمح لنا بحل هذه المشكلات. في رأينا ، الإلكترون يناسبنا تمامًا. بعد ثلاثة أشهر من بدء التطوير ، لا يزال خارج المنافسة ، ويبدو أن كل شيء جاد معنا.

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


All Articles