إكسبكوم

نموذج كائنات المكونات متعدد المنصات ( XPCOM ) هو نموذج مكونات متعدد المنصات من موزيلا . وهو مشابه لنموذج كائنات المكونات (COM) وبنية وسيط طلب الكائنات المشتركة (CORBA) ونموذج كائنات النظام (SOM). يتميز هذا النموذج بتعدد روابط اللغات ووصف لغة وصف الواجهات (IDL)، مما يسمح للمبرمجين بإضافة وظائفهم المخصصة إلى الإطار وربطها بمكونات أخرى.

يُعدّ استخدام XPCOM في متصفح الويب فايرفوكس أبرز استخداماته ، حيث تتفاعل العديد من المكونات الداخلية عبر واجهات XPCOM. علاوة على ذلك، كان فايرفوكس يسمح للإضافات بالوصول إلى XPCOM بشكل واسع، ولكن أُزيلت هذه الميزة في عام 2017 واستُبدلت بواجهة برمجة تطبيقات WebExtensions API الأقل تساهلاً . [ 1 ] [ 2 ] ولا يزال إصداران من فايرفوكس يدعمان إمكانية إضافة XPCOM: Pale Moon [ 3 ] و Basilisk . [ 4 ]

نموذج

يُعد XPCOM أحد العناصر الرئيسية التي تجعل بيئة تطبيقات موزيلا إطار عمل فعليًا. وهي بيئة تطوير توفر الميزات التالية لمطوري البرامج متعددة المنصات:

يُتيح نموذج كائنات المكونات هذا الوصول إلى جميع وظائف Gecko تقريبًا كسلسلة من المكونات، أو مكتبات قابلة لإعادة الاستخدام ومتعددة المنصات ، يُمكن الوصول إليها من متصفح الويب أو برمجتها من أي تطبيق Mozilla. تستخدم التطبيقات التي تحتاج إلى الوصول إلى مكتبات Mozilla XPCOM المختلفة ( الشبكات ، والأمان ، وDOM ، إلخ) طبقة خاصة من XPCOM تُسمى XPConnect ، والتي تعكس واجهات المكتبة إلى JavaScript ، أو لغات أخرى. يربط XPConnect الواجهة الأمامية بمكونات XPCOM المكتوبة بلغات البرمجة C++ أو C أو Rust ، ويمكن توسيعه ليشمل دعم البرمجة النصية للغات أخرى: يدعم PyXPCOM [ 5 ] بالفعل لغة Python ، ويوفر wxWidgets [ 6 ] دعمًا للغة Perl ، وهناك جهود جارية لإضافة دعم لغة CLI ولغة Ruby لـ XPConnect.

بالنسبة للمطورين، يسمح XPCOM بكتابة المكونات بلغات C++ أو C أو JavaScript أو Python أو لغات أخرى تم إنشاء روابط خاصة لها، وتجميع وتشغيل تلك المكونات على عشرات المنصات المختلفة، بما في ذلك هذه المنصات وغيرها التي يدعمها Mozilla.

تُسهّل مرونة إعادة استخدام مكونات XPCOM من مكتبة Gecko وتطوير مكونات جديدة تعمل على منصات مختلفة عملية تطوير التطبيقات بسرعة ، مما ينتج عنه تطبيق أكثر إنتاجية وأسهل صيانة. على سبيل المثال، مكتبة الشبكات عبارة عن مجموعة من مكونات XPCOM التي يمكن لأي تطبيق من تطبيقات Mozilla الوصول إليها واستخدامها. كما تُعدّ عمليات إدخال/إخراج الملفات، والأمان، وإدارة كلمات المرور، والملفات الشخصية مكونات XPCOM منفصلة يمكن للمبرمجين استخدامها في تطوير تطبيقاتهم.

الإفراط في الاستخدام

يُضيف XPCOM الكثير من التعليمات البرمجية لترتيب الكائنات، وفي عصر نتسكيب، أُفرط في استخدام XPCOM للواجهات الداخلية حيث لم تكن هناك حاجة حقيقية إليه، مما أدى إلى تضخم حجم البرنامج . [ 7 ] كان هذا سببًا رئيسيًا في قيام شركة آبل في عام 2001 بتطوير نسخة معدلة من KHTML ، وليس Gecko، لإنشاء محرك WebKit لمتصفح Safari الخاص بها . [ 8 ]

قامت موزيلا منذ ذلك الحين بتنظيف بعض الملفات الزائدة في نظام XPCOM. [ 9 ] وبحلول عام 2008، أدى ذلك بالإضافة إلى جهود أخرى إلى تحسينات كبيرة في أداء نظام Gecko . [ 10 ]

مراجع

  1. ملاحظات إصدار فايرفوكس 57
  2. كيف نيدهام (21 أغسطس 2015). "مستقبل تطوير إضافات فايرفوكس" . blog.mozilla.org . تاريخ الاسترجاع: 2 أبريل 2018 .
  3. "خارطة طريق مستقبل القمر الشاحب" . القمر الشاحب . تم الاسترجاع في 2018-04-02 .
  4. "فريق Pale Moon يُصدر النسخة الأولى من متصفح Basilisk" . ghacks.net . 2017-11-17 . تاريخ الاطلاع: 2018-04-02 .
  5. "PyXPCOM" . مؤرشف من الأصل بتاريخ 2020-10-20 . تم الاطلاع عليه بتاريخ 2018-01-02 .
  6. تطوير تطبيقات متعددة المنصات باستخدام لغة بيرل
  7. خورخي أو. كاسترو (15 يونيو 2004). "آرس تكنيكا تجري مقابلة مع سكوت كولينز من Mozilla.org" . آرس تكنيكا . تاريخ الاسترجاع: 16 فبراير 2017 .
  8. بول فيستا (14 يناير 2003). "تجاهل أبل يُؤذي موزيلا" . شبكات سي نت . مؤرشف من الأصل في 25 أكتوبر 2012. تم الاطلاع عليه في 16 فبراير 2017 .
  9. "Gecko:DeCOMtamination" .
  10. ريان بول (9 سبتمبر 2008). "لماذا تلتزم موزيلا بـ Gecko مع تزايد شعبية WebKit؟" . تم الاطلاع عليه بتاريخ 16 فبراير 2017 .