مستقبل تطبيقات الويب والتطبيقات الأصلية

0 الأسهم
0
0
0
0

مستقبل تطبيقات الويب والتطبيقات الأصلية

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

لقد تغيرت الإمكانيات المتاحة على المواقع الإلكترونية والتطبيقات بشكل كبير منذ بدايات الصفحات الثابتة. وحتى في الآونة الأخيرة، شهدنا تطورات ملحوظة، منها:

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

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

تتضمن البرامج الأصلية ما يلي:

  • وصلة: من الممكن أن يتم إعادة توجيهك إلى تطبيق الويب من خلال عنوان URL معين.
  • تفاعلي: باستخدام أدوات مثل استعلامات الوسائط، يمكنك إنشاء تخطيطات معقدة تعمل عبر تنسيقات متنوعة (الاتجاه، الدقة، حجم الشاشة، إلخ). في الواقع، نموذج تخطيط الويب الافتراضي متجاوب بطبيعته، مما يجعله مثاليًا لمعالجة النصوص.
  • تعتمد على البيانات: باستخدام HTML، يمكنك توفير المعنى والبنية، والويب هو الأفضل في معالجة البيانات.
  • متقدم: يمكنك تصميم تطبيقات الويب لتزويد المتصفحات الحديثة بأحدث الميزات، مع الاستمرار في توفير تجربة مقبولة في المتصفحات القديمة.
  • حماية: يوفر الويب ميزاتٍ تُحافظ على أمان التطبيقات، باستخدام نموذج أمان المصدر الواحد وبروتوكول HTTPS. بفضل برنامجٍ مثل دعونا نقوم بالتشفير لقد أصبح تأمين تطبيقات الويب أسهل من أي وقت مضى.

ومع ذلك، فإن الويب لديه أيضًا مزايا معينة، مثل:

  • إمكانية التثبيت: توفر التطبيقات على الجهاز وتكاملها الكامل مع نظام التشغيل يُضفي شعورًا بالراحة - بل ويزيد من ذلك وجود أيقونة صغيرة للتطبيقات على الشاشة الرئيسية، مما يُتيح فتحها في وضع ملء الشاشة أو في نافذة صغيرة. هذه أمور بسيطة، أليس كذلك؟
  • إمكانية الاكتشاف: يكره مُحبو الإنترنت في الولايات المتحدة إلى حد كبير فكرة وجود متجر تطبيقات مغلق. لكن لا يُمكننا إنكار أنهم حسّنوا طرق العثور على التطبيقات - مع أن البعض يُجادل بأن حتى أفضل متاجر التطبيقات المغلقة تفشل بسبب الاكتظاظ.
  • عدم الاتصال بالإنترنت: اتصال الإنترنت متوفر في كل مكان حول العالم. لكن لا يمكنك الاعتماد على 100%. ستعاني من عدم القدرة على استخدام أي تطبيق لأنك غير متصل بالإنترنت ولا توجد طريقة أخرى.
  • سحر: بمجرد أن يستخدم المستخدم تطبيقك، تكون قد قطعت نصف الطريق. ولكن كيف تُبقيه متفاعلاً ومُطلعاً على آخر المستجدات؟ لطالما استفاد مطورو التطبيقات الأصلية من توفر إشعارات الدفع لإبقاء المستخدمين على اطلاع.
  • سريع: يعتقد الكثير من الناس أن أداء الكود الأصلي أفضل من أداء كود الويب، ولكن كما ستقرأ لاحقًا، فإن هذه الفجوة تضيق بسرعة.

يعد موقع pokedex.org أفضل مثال لتطبيق ويب متقدم، كما أنه بمثابة هواية ممتعة.

نريد تصميم الويب للسماح بالوصول إلى التطبيقات المفيدة في التطبيقات الأصلية، ولكن ليس على حساب الأساسيات التي تم اختبارها بالفعل. تُسمى هذه الحركة "ثورة تطبيقات الويب"، والتي تقودها شركات مثل موزيلا و جوجل  لقد تم دعمهم.

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

ملاحظة: ما هي بعض الأمور المثيرة للاهتمام التي تعمل عليها أنظمة التشغيل الأصلية لسد الفجوة بينها وبين الويب؟ على سبيل المثال، مبادرة روب غولدبرغ التي أتاحت روابط أعمق.

ما كان من قبل

من المهم أن تقطع الاتصال بالإنترنت أولاً.

يرغب المشجعون ذوو الخبرة في إنشاء تطبيقات ويب تعمل دون اتصال بالإنترنت وتتصل بالإنترنت افتراضيًا للحصول على التحديثات فقط.

التطبيقات ذات الإمكانيات الأصلية ليست مفهومًا جديدًا على الإطلاق. في البداية، كانت هناك العديد من حزم "الويب"، وهي قوالب تطبيقات ظهرت في أماكن مختلفة - تطبيق Chrome مثلًا - والتي أتاحت تثبيت حزم معتمدة على الجهاز للاستخدام دون اتصال بالإنترنت، بالإضافة إلى إمكانية الوصول إلى الأجهزة، وما إلى ذلك.

لقد صادفنا مصطلح "التطبيقات الهجينة"، مثل Cordova وElectron. تتيح هذه التطبيقات للمطورين كتابة تطبيقات باستخدام تقنيات الويب، ثم نقلها إلى تطبيقات أصلية تعمل على نظامي iOS وAndroid. تحظى هذه التطبيقات بشعبية كبيرة. لكنها تتطلب بناء وتوزيع إصدارات متعددة من التطبيق نفسه، كما أن وظائفها محدودة. فكما نعلم جميعًا، "اكتب مرة واحدة، وشغّل في كل مكان" ليس صحيحًا تمامًا.

أولاً، من البديهي ذكر تطبيقات الصفحة الواحدة. يمكن لصفحة HTML واحدة أن تكون الصفحة الرئيسية للتطبيق، وتُحمّل عروضًا مختلفة ديناميكيًا باستخدام XHR (أو ما شابه)، بهدف جعل تطبيقات الويب أسرع وأكثر استجابة. يدعم هذا النوع من نماذج التطبيقات أطر عمل شائعة مثل Ember. تُشكل JS وAngularJS، بالإضافة إلى ميزة "العمل دون اتصال بالإنترنت"، أساسًا لجزء كبير من تطبيقات الويب المتقدمة.

إمكانيات التثبيت والإعداد

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

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

يتم استخدام هذه المعلومات بالفعل في Opera وChrome على الهواتف للتكامل بين الأنظمة الأساسية، مع دعم Firefox قريبًا.

غير متصل

وبالانتقال سريعًا إلى الوقت الحاضر، لدينا تطبيقات الخدمة؛ وهي تقنية جديدة في فايرفوكس وكروم وأوبرا تُمكّن المطورين من كتابة تطبيقات غير متصلة بالإنترنت بطريقة تعمل مثل AppCache وغيرها الكثير. هذا هو أدنى مستوى من واجهة برمجة التطبيقات (API)، وبالتالي تركيبته أكثر تعقيدًا. ولكنه يمنح المطورين سلطة أكبر على ما يريدون أن تفعله خدماتهم.

من ناحية أخرى، يُعدّ تخزين الأصول أمرًا مختلفًا تمامًا. لفترة من الوقت، بدا أن شيئًا مثل AppCache سيحل المشكلة، ولكن كان هناك افتراض مبالغ فيه بوجود طريقة لتشغيل التطبيقات، ولم يكن لدى المطورين سيطرة كافية على ما يحدث.

مشكلة الإنترنت غير المتصل بالإنترنت مستمرة منذ زمن طويل، مع الأخذ في الاعتبار مدى بساطتها للوهلة الأولى. تكمن المشكلة في صعوبة تطبيق تقنيات فعالة غير متصلة بالإنترنت. تخزين كميات كبيرة من البيانات دون اتصال بالإنترنت ليس بالأمر الصعب. تحتوي المتصفحات الحديثة على واجهات برمجة تطبيقات (APIs) مثل IndexedDB منذ فترة، كما أن دعم تخزين الويب متوفر منذ إصدار IE8.

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

لاستخدام برنامج الخدمة، يجب عليك أولاً تشغيل () الملاح. com.serviceWorker. يسجل قم بتسجيله في الصفحة الرئيسية.

الملاح.عامل الخدمة.يسجل(‘'sw.js'’)

.ثم(وظيفة(ريج) {

// افعل شيئًا لتهيئة التطبيق

});

ثم ثبّته باستخدام برنامج التثبيت في قسم الأدوات المساعدة. أحيانًا تُخزّن هذه الملفات الأساسية بواسطة جميع التطبيقات التي تستخدم واجهة برمجة تطبيقات التخزين المؤقت (والتي تُستخدم بشكل مستقل عن تطبيقات الاتصال).

 

هذا.إضافة مستمع الحدث(‘'ثَبَّتَ'’, وظيفة(حدث) {

حدث.انتظر حتى(

مخابئ.يفتح(‘'v1'’).ثم(وظيفة(مخبأ) {

يعود مخبأ.إضافة الكل([

‘'/sw-test/'’,

‘'/sw-test/index.html'’,

‘'/sw-test/style.css'’,

‘'/sw-test/app.js'’

]);

})

);

});

وبعد استجابة مستمع الحدث في تطبيق الخدمة، يُرسل شيفرةً استجابةً للطلبات الواردة، مما يسمح للمطورين بتخصيص النتيجة في الاستجابة. وبالتالي، يمكن للمطور طلب ملفات لم تتغير كثيرًا (مثل واجهة المستخدم) لتخزينها في التثبيت، ثم استخدام الإصدارات المخزنة في المستودع (بدلاً من الإصدار عبر الإنترنت) عند الحاجة. وهكذا، ظهرت تطبيقات غير متصلة بالإنترنت.

 

هذا.إضافة مستمع الحدث(‘'أحضر'’, وظيفة(حدث) {

فار إجابة;

حدث.الرد مع(مخابئ.مباراة(حدث.طلب).يمسك(

// اكتب الكود للتعامل مع الحالة التي يكون فيها الملف المطلوب

// لم يتم تخزينها بالفعل في ذاكرة التخزين المؤقت دون اتصال بالإنترنت

);

});

تجدر الإشارة إلى أن تطبيقات الخدمة تعمل فقط مع اتصالات HTTPS.

↑ يوضح الرسم البياني أعلاه دورة تثبيت تطبيق الخدمة ↑

إعادة التواصل مع المستخدم

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

لاستخدام هذا البرنامج، كما شرحنا سابقًا، يجب تثبيت برنامج خدمة وتفعيله في صفحة البرامج. بعد ذلك، يُمكن استخدامه بالاشتراك في البرنامج. يُمكنك استخدام الصيغة () ServiceWorkerRegistration.pushManager.subscribe استخدم للقيام بالمهمة:

الملاح.عامل الخدمة.مستعد.ثم(وظيفة(ريج) {

ريج.مدير الدفع.يشترك({مرئي للمستخدم فقط: حقيقي})

.ثم(وظيفة(الاشتراك) {

// تحديث واجهة المستخدم وما إلى ذلك في ضوء الاشتراك

// تحديث الحالة للاشتراك بالمستخدم الحالي على الخادم

فار نقطة النهاية = الاشتراك.نقطة النهاية;

فار مفتاح = الاشتراك.الحصول على المفتاح(‘'ص256ده'’);

تحديث الحالة(نقطة النهاية,مفتاح,‘'يشترك'’);

})

});

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

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

يستمع تطبيق الخدمة إلى رسالة تنبيه باستخدام مُعالِج أحداث الدفع. عند إرسال أي حدث تنبيه، يمكنك الوصول إليه باستخدام خاصية بيانات كائن الحدث. يمكنك بعد ذلك الرد على الرسالة بأي طريقة تُريدها، على سبيل المثال، بإرسال خبر، أو إرسال رسالة إلى الصفحة الرئيسية تُحدِّث تطبيقك بأي طريقة.

الذات.إضافة مستمع الحدث(‘'يدفع'’, وظيفة(هـ) {

فار كائن = هـ.بيانات.جسون();

// الرد على رسالة الدفع بطريقة ما

// على سبيل المثال إشعار أو رسالة قناة

});

ملاحظة: تتمتع العديد من خدمات التكنولوجيا (مثل التنبيهات) بدعم جيد في متصفحي Chrome وFirefox، ولكن بعض المتصفحات الأخرى تأخذها في الاعتبار. وقت كتابة هذه السطور، لا تعمل بيانات التنبيهات إلا في Firefox.

الخادم

يوفر هذا البرنامج من Mozilla معلومات حول التقدم المحرز في تنفيذ واجهات تطبيقات الويب الحديثة في المتصفحات.

أداء

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

بالإضافة إلى ذلك، يُمكننا تحويل أكواد التطبيقات الأصلية (مثل C++) إلى Java باستخدام تقنيات مثل Emscripten. عندما نتحدث عن Java هنا، فإننا نتحدث أساسًا عن asm.js، وهي مجموعة فرعية مُحسّنة للغاية من Java، يمكنها الاستفادة من تقنيات تجميع AOT لتحقيق أداء يُضاهي الأداء الأصلي. وقد أصبحت شائعة جدًا لدرجة أنها مدعومة ليس فقط في Firefox، بل أيضًا في Chrome وEdge، كما أضاف الويب asm.js كهدف نشر لمحركات ثلاثية الأبعاد الشهيرة Unity وUnreal.

والجيل القادم قادم - بعض مُصنِّعي المتصفحات لديهم شراكات لإعداد وتطبيق WebAssembly، والذي سيُؤدي وظيفة مُشابهة لـ Emcscripten، ولكن بمعايير أسرع وأفضل وأداء أعلى.

يتم استخدام هذا بدلاً من (asm.js) مع تنسيق wasm، نظرًا لأنه يحتوي على إعدادات أفضل، فيجب أن نكون قادرين على الاعتماد على المترجمين الذين ينتجون إخراج wasm صالحًا ويجب أن تقوم المتصفحات بتشغيله بأداء ثابت، بغض النظر عن المترجم الذي أنتجه.

 

نتيجة

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

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

قد يعجبك أيضاً
كيفية تثبيت Cockpit على Ubuntu 24.04

كيفية تثبيت Cockpit على Ubuntu 24.04

Cockpit هي لوحة إدارة خوادم عبر الإنترنت، تتيح مراقبة وإدارة الخدمات والتخزين والسجلات والمستخدمين بطريقة رسومية بسيطة. يتيح استخدام Cockpit على خادم VPS لمسؤولي النظام تنفيذ العديد من مهام إدارة الخادم دون الحاجة إلى سطر أوامر. سنشرح لك أدناه كيفية تثبيت Cockpit وتكوين الأمان والوصول إليه خطوة بخطوة.
إنشاء تطبيق iOS باستخدام AWS Amplify - دليل شامل للتنفيذ والأمان والنشر

بناء تطبيق iOS باستخدام AWS Amplify - دليل شامل للتنفيذ والأمان والنشر

هذه المقالة دليل شامل لبناء تطبيق iOS باستخدام AWS Amplify. وهي تغطي كل شيء بدءًا من خطوات التثبيت والتكوين، والمصادقة، وواجهات برمجة التطبيقات، وتخزين الملفات، وصولاً إلى نصائح النشر المستمر/التسليم المستمر (CI/CD).