ما هو الكائن النشط؟

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

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

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

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