You are on page 1of 4

‫)‪REMOTE METHOD INVOCATION (RMI‬‬

‫‪Intro‬‬
‫يرتبط استدعاء األسلوب البعيد (‪ )RMI‬ارتباطًا وثي ًقا بـ ‪ RPC‬ولكنه يمتد إلى عالم الكائنات الموزعة‪.‬‬
‫• في ‪ ، RMI‬يمكن للكائن المستدعي استدعاء طريقة في كائن يحتمل أن يكون بعي ًدا‪ .‬كما هو الحال‬
‫مع ‪ ، RPC‬يتم إخفاء التفاصيل األساسية بشكل عام عن المستخدم‪.‬‬
‫‪The commonalities between RMI and RPC‬‬
‫• كالهما يدعم البرمجة مع واجهات ‪ ،‬مع الفوائد الناتجة التي تنبع من هذا النهج‪.‬‬
‫• يتم إنشاء كالهما بشكل نموذجي فوق بروتوكوالت الرد على الطلب ويمكنهما تقديم مجموعة من‬
‫دالالت االتصال‬
‫مثل مرة واحدة على األقل ومرة واحدة على األكثر‪.‬‬
‫• كالهما يوفر مستوى مشاب ًها من الشفافية ‪ -‬أي أن المكالمات المحلية والبعيدة تستخدم نفس‬
‫الصيغة ولكن الواجهات البعيدة عاد ًة ما تكشف الطبيعة الموزعة للمكالمة األساسية ‪ ،‬على سبيل‬
‫المثال من خالل دعم االستثناءات البعيدة‪.‬‬
‫• ال‬
‫‪Design issues for RMI‬‬
‫• كما ذكر أعاله ‪ ،‬تشترك ‪ RMI‬في نفس مشكالت التصميم مثل ‪ RPC‬من حيث‬
‫‪• programming with interfaces,‬‬
‫‪• call semantics and‬‬
‫‪• level of transparency.‬‬

‫• ‪The object model‬‬


‫• البرنامج الموجه للكائنات ‪ ،‬على سبيل المثال في ‪ Java‬أو ‪ ، ++ C‬يتكون من مجموعة من الكائنات‬
‫المتفاعلة ‪ ،‬كل منها يتكون من مجموعة من البيانات ومجموعة من األساليب‪.‬‬
‫• يتواصل كائن مع كائنات أخرى عن طريق استدعاء أساليبها ‪ ،‬وتمرير الحجج بشكل عام وتلقي‬
‫النتائج‪.‬‬
‫• يمكن للكائنات أن تغلف بياناتها ورمز أساليبها‪.‬‬
‫• تسمح بعض اللغات ‪ ،‬على سبيل المثال ‪ Java‬و ‪ ، ++ C‬للمبرمجين بتعريف الكائنات التي يمكن‬
‫الوصول إلى متغيرات حاالتها مباشرة‪.‬‬
‫• ولكن لالستخدام في نظام كائن موزع ‪ ،‬يجب أن ال يمكن الوصول إلى بيانات الكائن إال من خالل‬
‫طرقه‪.‬‬
‫‪Object references:‬‬
‫• يمكن الوصول إلى الكائنات عن طريق مراجع الكائنات‪.‬‬
‫• على سبيل المثال ‪ ،‬في ‪ ، Java‬المتغير الذي يبدو أنه يحمل موضو ًعا يحمل إشارة إلى ذلك الكائن‪.‬‬
‫• الستدعاء طريقة في كائن ‪ ،‬يتم إعطاء مرجع الكائن واسم الطريقة ‪ ،‬جنبًا إلى جنب مع أي وسيطات‬
‫ضرورية‪.‬‬
‫• يسمى الكائن الذي يتم استدعاء طريقته أحيانًا الهدف وأحيانًا المستقبل‪.‬‬
‫• مراجع الكائنات هي قيم من الدرجة األولى ‪ ،‬مما يعني أنه قد يتم تعيينها ‪ ،‬على سبيل المثال ‪،‬‬
‫إلى متغيرات ‪ ،‬وتمريرها كوسائط وإعادتها كنتيجة للطرق‪.‬‬
‫‪Interfaces:‬‬
‫واجهات‪:‬‬
‫• توفر الواجهة تعري ًفا لتوقيعات مجموعة من األساليب (أي أنواع الوسائط وقيم اإلرجاع واالستثناءات)‬
‫دون تحديد تنفيذها‪.‬‬
‫• سيوفر الكائن واجهة معينة إذا كانت فئته تحتوي على رمز يقوم بتنفيذ أساليب تلك الواجهة‪.‬‬
‫• في ‪ ، Java‬يمكن للفئة تنفيذ عدة واجهات ‪ ،‬ويمكن تنفيذ طرق الواجهة بواسطة أي فئة‪.‬‬
‫• تحدد الواجهة أي ً‬
‫ضا األنواع التي يمكن استخدامها لإلعالن عن نوع المتغيرات أو المعلمات وقيم‬
‫اإلرجاع للطرق‪ .‬الحظ أن الواجهات ال تحتوي على ُمنشئين‪.‬‬
‫‪Action:‬‬
‫أجراءات ‪:‬‬
‫• يبدأ اإلجراء في برنامج كائني التوجه بواسطة كائن يستدعي طريقة في كائن آخر‪.‬‬
‫• يمكن أن يتضمن االستدعاء معلومات إضافية (حجج) مطلوبة لتنفيذ الطريقة‪.‬‬
‫• ينفذ المتلقي الطريقة المناسبة ثم يعيد التحكم إلى كائن االستدعاء ‪ ،‬في بعض األحيان يقدم‬
‫نتيجة‪.‬‬
‫• يمكن أن يكون الستدعاء طريقة ثالثة تأثيرات‪:‬‬
‫• ‪ .1‬يمكن تغيير حالة جهاز االستقبال‪.‬‬
‫• ‪ .2‬يمكن إنشاء كائن جديد ‪ ،‬على سبيل المثال ‪ ،‬باستخدام ُمنشئ في ‪ Java‬أو ‪.++ C‬‬
‫• ‪ .3‬مزيد من الدعوات على األساليب في أشياء أخرى قد تحدث‪.‬‬
‫‪Exceptions:‬‬
‫استثناءات‪:‬‬
‫• يمكن أن تواجه البرامج العديد من أنواع األخطاء والظروف غير المتوقعة بدرجات خطورة متفاوتة‪.‬‬
‫• أثناء تنفيذ إحدى الطرق ‪ ،‬قد يتم اكتشاف العديد من المشكالت المختلفة‪ :‬على سبيل المثال ‪،‬‬
‫القيم غير المتسقة في متغيرات الكائن ‪ ،‬أو الفشل في محاوالت القراءة أو الكتابة إلى الملفات أو‬
‫مآخذ الشبكة‪.‬‬
‫‪Garbage collection:‬‬
‫جمع القمامة‪:‬‬
‫• من الضروري توفير وسيلة لتحرير المساحة التي تشغلها األشياء عندما لم تعد هناك حاجة إليها‪.‬‬
‫• لغة مثل ‪ ، Java‬التي يمكن أن تكتشف تلقائيًا عندما يتعذر الوصول إلى كائن ما ‪ ،‬تستعيد المساحة‬
‫وتجعلها متاحة للتخصيص لكائنات أخرى‪.‬‬
‫• هذه العملية تسمى جمع القمامة‪ .‬عندما ال تدعم لغة (على سبيل المثال ‪ )++ C ،‬جمع البيانات‬
‫المهملة ‪ ،‬يتعين على المبرمج التعامل مع تحرير المساحة المخصصة للكائنات‪ .‬يمكن أن يكون هذا‬
‫مصدرًا رئيسيًا لألخطاء‪.‬‬

‫• ‪Distributed objects‬‬
‫• تتكون حالة الكائن من قيم متغيرات الحالة الخاصة به‪.‬‬
‫• في النموذج القائم على الكائن ‪ ،‬يتم تقسيم حالة البرنامج إلى أجزاء منفصلة ‪ ،‬كل منها مرتبط‬
‫بكائن‪.‬‬
‫• نظرًا ألن البرامج القائمة على الكائنات مقسمة منطقيًا ‪ ،‬فإن التوزيع المادي للكائنات في عمليات أو‬
‫أجهزة كمبيوتر مختلفة في نظام موزع يعد امتدا ًدا طبيعيًا‪.‬‬
‫• قد تتبنى أنظمة الكائنات الموزعة بنية خادم العميل‪.‬‬
‫• في هذه الحالة ‪ ،‬تتم إدارة الكائنات بواسطة الخوادم ويقوم عمالؤها باستدعاء أساليبهم باستخدام‬
‫استدعاء الطريقة البعيدة‪.‬‬
‫• في ‪ ، RMI‬يتم إرسال طلب العميل الستدعاء طريقة كائن في رسالة إلى الخادم الذي يدير الكائن‪.‬‬
‫• يتم االستدعاء من خالل تنفيذ طريقة الكائن على الخادم ويتم إرجاع النتيجة إلى العميل في رسالة‬
‫أخرى‪.‬‬

‫‪The distributed object model‬‬


‫• تحتوي كل عملية على مجموعة من العناصر ‪ ،‬يمكن لبعضها تلقي االستدعاءات المحلية والبعيدة ‪،‬‬
‫بينما يمكن للكائنات األخرى تلقي االستدعاءات المحلية فقط ‪ ،‬كما هو موضح في الشكل ‪5.12‬‬
‫• استدعاءات األسلوب بين الكائنات في عمليات مختلفة ‪ ،‬سواء في نفس الكمبيوتر أم ال ‪ ،‬تُعرف‬
‫باسم استدعاءات الطريقة البعيدة‪.‬‬
‫• استدعاءات األسلوب بين الكائنات في نفس العملية هي استدعاءات الطريقة المحلية‪.‬‬

‫‪Remote and local method invocations Figure 5.12‬‬

‫• نشير إلى الكائنات التي يمكن أن تتلقى الدعوات عن بعد كأشياء بعيدة‪.‬‬
‫• في الشكل ‪ ، 5.12‬الكائنات ‪ B‬و ‪ F‬هي كائنات بعيدة‪.‬‬
‫• يمكن لجميع الكائنات استقبال الدعوات المحلية ‪ ،‬على الرغم من أنها يمكن أن تتلقاها فقط من‬
‫الكائنات األخرى التي تحتوي على مراجع لها‪.‬‬
‫• يوجد المفهومان األساسيان التاليان في قلب نموذج الكائن الموزع‪:‬‬
‫• مراجع الكائنات البعيدة‪ :‬يمكن للكائنات األخرى استدعاء أساليب كائن بعيد إذا كان لديهم وصول إلى‬
‫مرجع الكائن البعيد الخاص به‪.‬‬
‫• على سبيل المثال ‪ ،‬يجب أن يتوفر مرجع كائن بعيد لـ ‪ B‬في الشكل ‪ 5.12‬لـ ‪.A‬‬
‫• واجهات بعيدة‪ :‬لكل كائن بعيد واجهة عن بعد تحدد أي من طرقه يمكن استدعاؤها عن بعد‪.‬‬
‫• على سبيل المثال ‪ ،‬يجب أن يكون للكائنين ‪ B‬و ‪ F‬في الشكل ‪ 5.12‬واجهات بعيدة‪.‬‬

‫• ‪Actions in a distributed object system‬‬


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

‫• في الشكل ‪ ، 5.12‬يحتاج الكائن ‪ A‬إلى االحتفاظ بمرجع كائن بعيد إلى الكائن ‪ .B‬يمكن الحصول‬
‫على مراجع الكائن البعيد كنتيجة الستدعاءات الطريقة البعيدة‪ .‬على سبيل المثال ‪ ،‬قد يحصل الكائن‬
‫‪ A‬في الشكل ‪ 5.12‬على مرجع بعيد للكائن ‪ F‬من الكائن ‪.B‬‬
‫• عندما يؤدي إجراء ما إلى إنشاء مثيل لكائن جديد ‪ ،‬سيعيش هذا الكائن بشكل طبيعي في العملية‬
‫منشئ‪.‬‬‫حيث يتم طلب إنشاء مثيل ‪ -‬على سبيل المثال ‪ ،‬حيث تم استخدام ال ُ‬

‫• إذا كان الكائن الذي تم إنشاء مثيل له حدي ًثا يحتوي على واجهة بعيدة ‪ ،‬فسيكون كائ ًنا بعي ًدا بمرجع‬
‫كائن بعيد‪.‬‬
‫• قد تزود التطبيقات الموزعة الكائنات البعيدة بأساليب إنشاء مثيل للكائنات التي يمكن الوصول إليها‬
‫بواسطة ‪ ، RMI‬وبالتالي توفير تأثير إنشاء مثيل عن ُبعد للكائنات بشكل فعال‪.‬‬

‫‪Figure 5.14 Instantiation of remote objects‬‬

‫• على سبيل المثال ‪ ،‬إذا كان الكائن ‪ L‬في الشكل ‪ 5.14‬يحتوي على طريقة إلنشاء كائنات بعيدة ‪،‬‬
‫فقد تؤدي االستدعاءات البعيدة من ‪ C‬و ‪ K‬إلى إنشاء مثيل للكائنين ‪ M‬و ‪ ، N‬على التوالي‪.‬‬

You might also like