استباقي

ProActive Parallel Suite هو برنامج مفتوح المصدر لتنسيق أعباء العمل المؤسسية ، وهو جزء من مجتمع OW2 . يسمح نموذج سير العمل بتحديد مجموعة من الملفات التنفيذية أو البرامج النصية ، المكتوبة بأي لغة، بالإضافة إلى تبعياتها، بحيث يمكن لـ ProActive Parallel Suite جدولة عمليات التنفيذ وتنسيقها مع تحسين استخدام الموارد الحاسوبية .

تعتمد مجموعة ProActive Parallel على نمط تصميم " الكائن النشط " (انظر الكائنات النشطة ) لتحسين توزيع المهام وتحمل الأعطال.

الميزات الرئيسية لحزمة ProActive Parallel

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

إطار عمل جافا الاستباقي ونموذج البرمجة

ابتكر هذا النموذج دينيس كاروميل، الأستاذ بجامعة نيس صوفيا أنتيبوليس . [ 1 ] وقد أُجريت لاحقًا عدة امتدادات للنموذج من قِبل أعضاء فريق OASIS في INRIA . [ 2 ] ويُقدّم كتاب "نظرية الكائنات الموزعة" حساب ASP الذي يُضفي طابعًا رسميًا على خصائص ProActive، ويُوفّر دلالات رسمية لهذا الحساب، بالإضافة إلى خصائص تنفيذ برنامج ProActive. [ 3 ]

الكائنات النشطة

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

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

يتكون الكائن النشط من عنصرين: جسم ، وكائن جافا قياسي. لا يكون الجسم مرئيًا من خارج الكائن النشط.

يتولى هذا الجزء من النظام مسؤولية استقبال المكالمات (أو الطلبات ) على الكائن النشط وتخزينها في قائمة انتظار المكالمات المعلقة. وينفذ هذه المكالمات وفقًا لترتيب محدد في سياسة التزامن. وفي حال عدم تحديد سياسة تزامن، تُدار المكالمات وفقًا لأسلوب " الأولوية للأقدم " (FIFO).

ثم يختار خيط الكائن النشط طريقةً من قائمة الطلبات المعلقة وينفذها. لا يتم توفير أي توازي داخل الكائن النشط؛ وهذا قرار مهم في تصميم ProActive، مما يتيح استخدام شروط "ما قبل وما بعد" وثوابت الفئة .

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

أساس الكائن النشط

ProActive هي مكتبة مصممة لتطوير التطبيقات وفقًا للنموذج الذي قدمته Eiffel//، وهو امتداد متوازٍ للغة برمجة Eiffel .

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

تؤثر هذه الخصائص على بنية التطبيق. من بين جميع الكائنات التي تُشكّل نظامًا فرعيًا - الكائن النشط والكائنات غير النشطة - لا يعرف الكائنات خارج النظام الفرعي سوى الكائن النشط. قد تحتوي جميع الكائنات، النشطة وغير النشطة، على مراجع إلى كائنات نشطة. إذا كان للكائن o1 مرجع إلى كائن غير نشط o2 ، فإن o1 و o2 يُعتبران جزءًا من النظام الفرعي نفسه.

النموذج: تسلسلي، متعدد الخيوط، موزع

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

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

المكالمات غير المتزامنة والمستقبلات

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

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

مثال على الكود

يُبرز مقتطف الشفرة أدناه مفهوم الكائنات المستقبلية. لنفترض أن المستخدم يستدعي دالةً fooودالةً أخرى barمن كائن نشط a؛ fooتُرجع الدالة الأولى قيمةً فارغةً (void)، بينما barتُرجع الدالة الثانية كائنًا من الفئة V:

// اتصال غير متزامن أحادي الاتجاه مع كائن الوصول البعيد a // يتم إرسال طلب إلى a a . foo ( param );// اتصال غير متزامن مُحدد النوع مع نتيجة. // v هو في البداية كائن Future مُنتظر ، يتم ملؤه تلقائيًا بعد // معالجة الطلب، والرد V v = a.bar ( param ) ; ... // استخدام نتيجة استدعاء غير متزامن. // إذا كان v لا يزال كائن Future مُنتظر، فإنه يُفعّل انتظارًا تلقائيًا // : انتظار الضرورة v.gee ( param );

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

بعد أن تُعيد كلتا الطريقتين قيمة، يستمر الخيط المُستدعي في تنفيذ شفرته كما لو أن الاستدعاء قد تم بنجاح. يتمثل دور آلية المستقبل في حظر الخيط المُستدعي عندما geeيتم استدعاء الطريقة vولم يتم تعيين النتيجة بعد  : تُعرف سياسة التزامن بين الكائنات هذه باسم "الانتظار عند الضرورة" .

انظر أيضاً

مراجع

  1. كاروميل، دينيس (سبتمبر 1993). "نحو منهجية للبرمجة المتزامنة الموجهة للكائنات" . مجلة اتصالات رابطة مكائن ​​الحوسبة . 36 (9): 90-102 . doi : 10.1145/162685.162711 . S2CID 8310500 . 
  2. ^ بادويل، لوران. بود، فرانسواز؛ كاروميل، دينيس؛ كونتيس، أرنو؛ هويت، فابريس. موريل، ماتيو. كيليسي ، رومان (يناير 2006). كونيا، خوسيه سي؛ رنا، عمر ف. (محرران). البرمجة والتأليف والنشر للشبكة (PDF) (PDF). سبرينتر-فيرلاج. ص 205 – 229. CiteSeerX 10.1.1.58.7806 . دوى : 10.1007/1-84628-339-6_9 . رقم ISBN   978-1-85233-998-2CiteSeerX : 10.1.1.58.7806 .​{{cite book}}تم |journal=تجاهله ( مساعدة )
  3. كاروميل، دينيس؛ هنريو، لودوفيك (2005). نظرية الكائنات الموزعة: عدم التزامن، والتنقل، والمجموعات، والمكونات . برلين: سبرينغر. ISBN 978-3-540-20866-2. إل سي سي إن 2005923024 . 

للمزيد من القراءة

  • رانالدو، ن.؛ تريتولا، ج.؛ زيميو، إ. (14-18 أبريل 2008). "جدولة الأنشطة الاستباقية باستخدام محرك سير عمل قائم على لغة XPDL". ندوة IEEE الدولية لعام 2008 حول المعالجة المتوازية والموزعة . ميامي: IEEE . ص 1-8 . doi : 10.1109/IPDPS.2008.4536336 . ISBN  978-1-4244-1693-6ISSN 1530-2075 . S2CID 10082749 .​  
  • سون، هايلونغ؛ تشو، يانمين؛ هو، تشونمينغ؛ هواي، جينبنغ؛ ليو، يونهاو؛ لي، جيانشين (2005). "التجربة المبكرة لنشر الخدمات عن بُعد والخدمات الساخنة مع ضمان الموثوقية في شبكة CROWN". في: كاو، جيانونغ؛ نيدل، وولفغانغ؛ شو، مينغ (محررون). تقنيات المعالجة المتوازية المتقدمة . سلسلة محاضرات في علوم الحاسوب. المجلد  3756. برلين: سبرينغر. الصفحات 301-312 . doi : 10.1007/11573937_33 . ISBN  978-3-540-29639-3.
  • كيما، فيفيان؛ بالتر، رولان؛ بيليسارد، لوك؛ فيليو، دافيد؛ فريسينيه، أندريه؛ لاكورت، سيرج (2004). "نشر غير متزامن، هرمي، وقابل للتوسع للتطبيقات القائمة على المكونات". في: إميريش، فولفغانغ؛ وولف، ألكسندر ل. (محرران). نشر المكونات . سلسلة محاضرات في علوم الحاسوب. المجلد  3083. برلين: سبرينغر. الصفحات 50-64 . doi : 10.1007/978-3-540-24848-4_4 . ISBN  978-3-540-22059-6.
  • حصل برنامج ProActive-CLIF-Fractal على جائزة OW2 لعام 2012
  • برنامج لإطلاق العنان لقوة الشبكة (نتائج تكنولوجيا المعلومات والاتصالات)
  • ActiveEon et MetaQuant يعززان شراكتهما حول Cloud ProActive (باللغة الفرنسية)