Message passing
کمپیوٹر سائنس میں، میسج پاسنگ کمپیوٹر پر رویے (یعنی پروگرام چلانے) کو مدعو کرنے کی ایک تکنیک ہے۔ انوکنگ پروگرام ایک عمل کو پیغام بھیجتا ہے (جو ایک اداکار یا آبجیکٹ ہو سکتا ہے) اور اس عمل اور اس کے معاون انفراسٹرکچر پر انحصار کرتا ہے تاکہ پھر کچھ مناسب کوڈ کو منتخب اور چلایا جا سکے۔ میسج پاسنگ روایتی پروگرامنگ سے مختلف ہے جہاں ایک عمل، سبروٹین، یا فنکشن کو براہ راست نام سے بلایا جاتا ہے۔ میسج پاسنگ کنکرنسی اور آبجیکٹ پر مبنی پروگرامنگ کے کچھ ماڈلز کی کلید ہے۔ جدید کمپیوٹر سافٹ ویئر میں میسج پاسنگ ہر جگہ موجود ہے۔ یہ ان اشیاء کے لیے ایک راستے کے طور پر استعمال ہوتا ہے جو ایک دوسرے کے ساتھ کام کرنے کے لیے ایک پروگرام بناتے ہیں اور مختلف کمپیوٹرز (جیسے انٹرنیٹ) پر چلنے والی اشیاء اور سسٹمز کے لیے تعامل کے لیے ایک ذریعہ کے طور پر استعمال ہوتا ہے۔ پیغامات منتقل کرنے کو چینلز سمیت مختلف میکانزم کے ذریعے نافذ کیا جا سکتا ہے۔ میسج پاسنگ کمپیوٹر پر رویے (یعنی پروگرام چلانے) کو مدعو کرنے کی ایک تکنیک ہے۔ کسی پروگرام کو نام سے کال کرنے کی روایتی تکنیک کے برعکس، میسج پاسنگ میں عام فنکشن کو مخصوص نفاذ سے ممتاز کرنے کے لیے آبجیکٹ ماڈل کا استعمال کیا جاتا ہے۔ انوکنگ پروگرام ایک پیغام بھیجتا ہے اور مناسب کوڈ کو منتخب کرنے اور اس پر عمل درآمد کرنے کے لیے آبجیکٹ پر انحصار کرتا ہے۔ انٹرمیڈیٹ پرت کے استعمال کے جواز بنیادی طور پر دو زمروں میں آتے ہیں: ان کیپسولشن اور ڈسٹری بیوشن۔ انکوپیسولیشن یہ خیال ہے کہ سافٹ ویئر آبجیکٹ کو یہ جانے بغیر یا اس بات کی پرواہ کیے بغیر کہ ان سروسز کو کیسے لاگو کیا جاتا ہے، دوسرے آبجیکٹ پر سروسز کو مدعو کرنے کے قابل ہونا چاہیے۔ انکوپیسولیشن کوڈنگ منطق کی مقدار کو کم کر سکتا ہے اور نظام کو زیادہ برقرار رکھنے کے قابل بنا سکتا ہے۔ مثال کے طور پر، آئی ایف-تھین بیانات رکھنے کے بجائے جو اس بات کا تعین کرتے ہیں کہ ڈویلپر کو کال کرنے کے لیے کون سا سبروٹین یا فنکشن صرف آبجیکٹ کو پیغام بھیج سکتا ہے اور آبجیکٹ اپنی قسم کی بنیاد پر مناسب کوڈ کا انتخاب کرے گا۔ اس کا استعمال کیسے کیا جا سکتا ہے اس کی پہلی مثالوں میں سے ایک کمپیوٹر گرافکس کے ڈومین میں تھی۔ گرافک اشیاء کو جوڑنے میں مختلف پیچیدگیاں شامل ہیں۔ مثال کے طور پر، صرف ایک بند شکل کے رقبے کا حساب لگانے کے لیے صحیح فارمولے کا استعمال اس بات پر منحصر ہوگا کہ شکل مثلث، مستطیل، ایلیپس یا دائرہ ہے یا نہیں۔ روایتی کمپیوٹر پروگرامنگ میں اس کے نتیجے میں طویل آئی ایف-تھین بیانات میں جانچ کی جائے گی کہ شکل کس قسم کی چیز تھی اور مناسب کوڈ کو کال کرے گی۔ اس سے نمٹنے کا آبجیکٹ پر مبنی طریقہ یہ ہے کہ شیپ نامی کلاس کی وضاحت ذیلی کلاسوں جیسے کہ ریکٹینگل اور ایلیپس (جس کے نتیجے میں ذیلی کلاسز اسکوائر اور سرکل ہوتے ہیں) کے ساتھ کی جائے اور پھر کسی بھی شکل کو صرف ایک پیغام بھیجا جائے جس میں اس سے اس کے رقبے کا حساب لگانے کو کہا جائے۔ اس کے بعد ہر شکل کا آبجیکٹ اس قسم کے آبجیکٹ کے لیے موزوں فارمولے کے ساتھ ذیلی کلاس کے طریقہ کار کو مدعو کرے گا۔ ڈسٹری بیوٹڈ میسج پاسنگ ڈویلپرز کو فن تعمیر کی ایک پرت فراہم کرتی ہے جو ذیلی نظاموں سے بنے نظام کی تعمیر کے لیے مشترکہ خدمات فراہم کرتی ہے جو مختلف مقامات پر اور مختلف اوقات میں مختلف کمپیوٹرز پر چلتے ہیں۔ جب کوئی تقسیم شدہ آبجیکٹ پیغام بھیج رہا ہوتا ہے، تو پیغام رسانی کی پرت ان مسائل کا خیال رکھ سکتی ہے جیسے: مختلف آپریٹنگ سسٹم اور پروگرامنگ زبانوں کا استعمال کرتے ہوئے عمل کو تلاش کرنا، مختلف مقامات پر جہاں سے پیغام کی ابتدا ہوئی ہے۔ اگر پیغام کو ہینڈل کرنے کے لیے مناسب آبجیکٹ فی الحال نہیں چل رہا ہے تو پیغام کو قطار میں محفوظ کرنا اور پھر آبجیکٹ دستیاب ہونے پر پیغام کو طلب کرنا۔ نیز، اگر ضرورت ہو تو نتیجہ کو اس وقت تک محفوظ کریں جب تک کہ بھیجنے والی چیز اسے حاصل کرنے کے لیے تیار نہ ہو جائے۔ تقسیم شدہ لین دین کے لیے مختلف لین دین کی ضروریات کو کنٹرول کرنا، مثال کے طور پر ایٹمائٹی، مستقل مزاجی، آئسولیشن، ڈیوریبلٹی (اے سی آئی ڈی) ڈیٹا کی جانچ کرتی ہے۔ مطابقت پذیری بمقابلہ غیر مطابقت پذیری پیغام منتقل کرنا مطابقت پذیری پیغام منتقل کرنا ان اشیاء کے درمیان ہوتا ہے جو ایک ہی وقت میں چل رہے ہیں۔ یہ آبجیکٹ پر مبنی پروگرامنگ زبانوں جیسے جاوا اور سمال ٹاک کے ذریعے استعمال ہوتا ہے۔ مطابقت پذیر پیغام رسانی ایک مطابقت پذیر فنکشن کال کے مترادف ہے ؛ جس طرح فنکشن کالر فنکشن مکمل ہونے تک انتظار کرتا ہے، اسی طرح بھیجنے کا عمل وصول کرنے کا عمل مکمل ہونے تک انتظار کرتا ہے۔ یہ کچھ ایپلی کیشنز کے لیے مطابقت پذیر مواصلات کو ناقابل عمل بنا سکتا ہے۔ مثال کے طور پر، بڑے، تقسیم شدہ نظام قابل استعمال ہونے کے لیے کافی اچھی کارکردگی کا مظاہرہ نہیں کر سکتے ہیں۔ اس طرح کے بڑے، تقسیم شدہ نظاموں کو کام کرنے کی ضرورت پڑ سکتی ہے جبکہ ان کے کچھ ذیلی نظام دیکھ بھال وغیرہ کے لیے بند ہیں۔ ایک مصروف کاروباری دفتر کا تصور کریں جس میں 100 ڈیسک ٹاپ کمپیوٹر ہوں جو خصوصی طور پر منتقل ہونے والے مطابقت پذیر پیغامات کا استعمال کرتے ہوئے ایک دوسرے کو ای میل بھیجتے ہیں۔ ایک کارکن اپنے کمپیوٹر کو بند کرنے سے دوسرے 99 کمپیوٹرز منجمد ہو سکتے ہیں جب تک کہ کارکن ایک ای میل پر کارروائی کرنے کے لیے اپنے کمپیوٹر کو دوبارہ آن نہ کر دے۔ غیر متزلزل پیغام گزرتا ہے غیر متزلزل پیغام کے ساتھ وصول کرنے والا آبجیکٹ نیچے یا مصروف ہو سکتا ہے جب درخواست کرنے والا آبجیکٹ پیغام بھیجتا ہے۔ فنکشن کال اینالاجی کو جاری رکھتے ہوئے، یہ ایک فنکشن کال کی طرح ہے جو کال شدہ فنکشن کے مکمل ہونے کا انتظار کیے بغیر فوری طور پر واپس آتی ہے۔ پیغامات کو ایک قطار میں بھیجا جاتا ہے جہاں انہیں اس وقت تک محفوظ کیا جاتا ہے جب تک کہ وصول کرنے کا عمل ان کی درخواست نہ کرے۔ وصول کرنے کا عمل اپنے پیغامات پر کارروائی کرتا ہے اور اصل عمل (یا کسی نامزد اگلے عمل) کے ذریعے پک اپ کے لیے قطار میں نتائج بھیجتا ہے۔ غیر متزلزل پیغام رسانی کے لیے ان نظاموں کے لیے ڈیٹا کو ذخیرہ کرنے اور دوبارہ منتقل کرنے کے لیے اضافی صلاحیتوں کی ضرورت ہوتی ہے جو بیک وقت نہیں چل سکتے ہیں، اور عام طور پر سافٹ ویئر کی درمیانی سطح (جسے اکثر مڈل ویئر کہا جاتا ہے) کے ذریعے سنبھالا جاتا ہے۔ ایک عام قسم میسج پر مبنی مڈل ویئر (ایم او ایم) ہے۔ غیر متغیر مواصلات میں درکار بفر بھرا ہونے پر مسائل کا باعث بن سکتا ہے۔ فیصلہ کرنا ہوگا کہ بھیجنے والے کو بلاک کیا جائے یا مستقبل کے پیغامات کو ضائع کیا جائے۔ ایک مسدود بھیجنے والا تعطل کا باعث بن سکتا ہے۔ اگر پیغامات چھوڑے جاتے ہیں، تو مواصلات اب قابل اعتماد نہیں ہے۔ ہائبرڈ سنکرونس کمیونیکیشن کو سنکرونائزر کا استعمال کرکے اسنکرونس کمیونیکیشن کے اوپر بنایا جا سکتا ہے۔ مثال کے طور پر، α-سنکرونائزر اس بات کو یقینی بنا کر کام کرتا ہے کہ بھیجنے والا ہمیشہ وصول کنندہ کے اعتراف پیغام کا انتظار کرے۔ بھیجنے والا اعتراف موصول ہونے کے بعد ہی اگلا پیغام بھیجتا ہے۔ دوسری طرف، غیر متزلزل مواصلات کو ہم وقت مواصلات کے اوپر بھی بنایا جا سکتا ہے۔ مثال کے طور پر، جدید مائکرو کرنلز عام طور پر صرف ایک مطابقت پذیر پیغام رسانی فراہم کرتے ہیں اور غیر متغیر پیغام رسانی کو مددگار دھاگوں کا استعمال کرکے اوپر نافذ کیا جا سکتا ہے۔ ڈسٹری بیوٹڈ آبجیکٹ میسج پاسنگ سسٹم یا تو ڈسٹری بیوٹڈ یا لوکل آبجیکٹ استعمال کرتے ہیں۔ تقسیم شدہ اشیاء کے ساتھ بھیجنے والا اور وصول کنندہ مختلف کمپیوٹرز پر ہو سکتا ہے، مختلف آپریٹنگ سسٹم چلا رہا ہے، مختلف پروگرامنگ زبانیں استعمال کر رہا ہے، وغیرہ۔ اس صورت میں بس پرت ڈیٹا کو ایک سسٹم سے دوسرے سسٹم میں تبدیل کرنے، پورے نیٹ ورک میں ڈیٹا بھیجنے اور وصول کرنے وغیرہ کے بارے میں تفصیلات کا خیال رکھتی ہے۔ یونکس میں ریموٹ پروسیجر کال (آر پی سی) پروٹوکول اس کی ابتدائی مثال تھی۔ نوٹ کریں کہ اس قسم کے پیغام کے گزرنے کے ساتھ یہ ضرورت نہیں ہے کہ بھیجنے والا اور نہ ہی وصول کنندہ آبجیکٹ پر مبنی پروگرامنگ کا استعمال کریں۔ طریقہ کار زبان کے نظام کو لپیٹا اور بڑے دانے والی اشیاء کے طور پر سمجھا جا سکتا ہے جو پیغامات بھیجنے اور وصول کرنے کے قابل ہیں۔ تقسیم شدہ اشیاء کی حمایت کرنے والے نظاموں کی مثالیں یہ ہیں: زمرد، او این سی آر پی سی، کوربا، جاوا آر ایم آئی، ڈی سی او ایم، ایس او اے پی،. نیٹ ریموٹنگ، سی ٹی او ایس، کیو این ایکس نیوٹرینو آر ٹی او ایس، اوپن بائنڈر اور ڈی بس۔ تقسیم شدہ آبجیکٹ سسٹمز کو "شیئرڈ نتھنگ" سسٹم کہا جاتا ہے کیونکہ پیغام منتقل کرنے والی تجریدی بنیادی حالت کی تبدیلیوں کو چھپاتی ہے جو پیغامات بھیجنے کے نفاذ میں استعمال ہوسکتی ہیں۔ تقسیم شدہ، یا غیر متزلزل، میسج پاسنگ میں کال کرنے کے طریقہ کار کے مقابلے میں اضافی اوور ہیڈ ہوتا ہے۔ میسج پاسنگ میں، دلائل کو نئے پیغام میں نقل کیا جانا چاہیے۔ کچھ دلائل میگا بائٹس کے ڈیٹا پر مشتمل ہو سکتے ہیں، ان سب کو کاپی کرنا اور وصول کرنے والے آبجیکٹ میں منتقل کرنا ضروری ہے۔ روایتی طریقہ کار کالز میموری کے استعمال، منتقلی کے وقت اور لوکیٹی کے لحاظ سے میسج پاسنگ سے مختلف ہیں۔ دلائل وصول کنندہ کو عام طور پر عام مقصد کے رجسٹروں کے ذریعے منتقل کیے جاتے ہیں جن میں کوئی اضافی اسٹوریج اور نہ ہی منتقلی کا وقت درکار ہوتا ہے، یا کسی پیرامیٹر کی فہرست میں جس میں دلائل کے پتے (چند بٹس) ہوتے ہیں۔ تقسیم شدہ نظاموں کے لیے ایڈریس پاسنگ ممکن نہیں ہے کیونکہ نظام علیحدہ ایڈریس خالی جگہوں کا استعمال کرتے ہیں۔ ویب براؤزر اور ویب سرور ان عملوں کی مثالیں ہیں جو میسج پاسنگ کے ذریعے بات چیت کرتے ہیں۔ یو آر ایل عمل کے اندرونی حصوں کو بے نقاب کیے بغیر کسی وسائل کا حوالہ دینے کی ایک مثال ہے۔ ایک سب روٹین کال یا میتھڈ انوکیشن اس وقت تک باہر نہیں نکلے گا جب تک کہ طلب شدہ کمپیوٹیشن ختم نہ ہو جائے۔ اس کے برعکس، غیر متزلزل پیغام پاس کرنے کے نتیجے میں درخواست پیغام بھیجے جانے کے بعد ایک اہم وقت تک جواب پہنچ سکتا ہے۔ ایک میسج ہینڈلر، عام طور پر، ایک سے زیادہ بھیجنے والے کے پیغامات پر کارروائی کرے گا۔ اس کا مطلب یہ ہے کہ اس کی حالت ان وجوہات کی بنا پر تبدیل ہو سکتی ہے جو ایک واحد بھیجنے والے یا کلائنٹ کے عمل کے رویے سے غیر متعلقہ ہیں۔ یہ کسی شے کے عام رویے کے برعکس ہے جس پر طریقوں کو استعمال کیا جا رہا ہے: مؤخر الذکر سے توقع کی جاتی ہے کہ وہ طریقہ کار کی دعوتوں کے درمیان ایک ہی حالت میں رہے گا۔ دوسرے لفظوں میں، میسج ہینڈلر ایک غیر مستحکم شے کے مترادف برتاؤ کرتا ہے۔ ریاضیاتی نمونے پیغام منتقل کرنے کے نمایاں ریاضیاتی نمونے اداکار ماڈل اور پائی کیلکولس ہیں۔ ریاضیاتی اصطلاحات میں پیغام کسی شے کو کنٹرول منتقل کرنے کا واحد ذریعہ ہے۔ اگر آبجیکٹ پیغام کا جواب دیتا ہے، تو اس کے پاس اس پیغام کے لیے ایک طریقہ ہے۔ ایلن کی نے استدلال کیا ہے کہ پیغام منتقل کرنا او او پی میں موجود اشیاء سے زیادہ اہم ہے، اور یہ کہ خود اشیاء پر اکثر زیادہ زور دیا جاتا ہے۔ لائیو ڈسٹری بیوٹڈ آبجیکٹ پروگرامنگ ماڈل اس مشاہدے پر تعمیر کرتا ہے۔ یہ اعلی سطحی، فنکشنل طرز کی خصوصیات کا استعمال کرتے ہوئے پیغام کے نمونوں کے لحاظ سے ایک پیچیدہ ڈسٹری بیوٹڈ سسٹم کے رویے کی خصوصیت کے لیے ڈسٹری بیوٹڈ ڈیٹا فلو کے تصور کا استعمال کرتا ہے۔ مثال اداکار ماڈل کا نفاذ بے ساختہ کمپیوٹنگ مواصلاتی ترتیب وار عمل بہاؤ پر مبنی پروگرامنگ ایس او اے پی بھی دیکھیں فعال پیغام تقسیم شدہ کمپیوٹنگ ایونٹ لوپ میسجنگ پیٹرن پیغام کمپیوٹر کلسٹرز میں گزرتا ہے پیغام گزرتا ہوا انٹرفیس متوازی ورچوئل مشین (پی وی ایم) پروگرامنگ زبانیں جن میں پیغام مرکزی خصوصیت کے طور پر گزرتا ہے: ایپل اسکرپٹ ایرلانگ ایلکسیر ہائپر کارڈ، لائیو کوڈ گو آبجیکٹیو-سی رسٹ اسکالا سمال ٹاک سیلف کنکرنٹ ایم ایل حوالہ جات مزید پڑھنے بیرونی لنکس پیغام گزرنے کی ایک پیکٹ ہسٹری تقسیم شدہ کمپیوٹنگ فن تعمیر بین عمل مواصلات