Apache Thrift
تھرفٹ ایک انٹرفیس تعریف زبان اور بائنری مواصلاتی پروٹوکول ہے جو متعدد پروگرامنگ زبانوں کے لیے خدمات کی وضاحت اور تخلیق کے لیے استعمال ہوتا ہے۔ اسے فیس بک میں "اسکیل ایبل کراس لینگویج سروسز ڈویلپمنٹ" کے لیے تیار کیا گیا تھا اور 2020 تک یہ اپاچی سافٹ ویئر فاؤنڈیشن کا ایک اوپن سورس پروجیکٹ ہے۔ ریموٹ پروسیجر کال (آر پی سی) فریم ورک کے ساتھ یہ کراس پلیٹ فارم سروسز بنانے کے لیے کوڈ جنریشن انجن کے ساتھ سافٹ ویئر اسٹیک کو جوڑتا ہے جو مختلف زبانوں اور فریم ورک میں لکھی گئی ایپلی کیشنز کو جوڑ سکتا ہے، بشمول ایکشن اسکرپٹ، سی، سی + +، سی #، کیپوچینو، کوکوا، ڈیلفی، ایرلانگ، گو، ہاسکل، جاوا، جاوا اسکرپٹ، آبجیکٹیو-سی، اوکیمل، پرل، پی ایچ پی، ازگر، روبی، ایلکسیر، رسٹ، اسکالا، سمال ٹاک اور سوئفٹ۔ اس عمل درآمد کو فیس بک کے جاری کردہ اپریل 2007 کے تکنیکی مقالے میں بیان کیا گیا تھا، جو اب اپاچی پر ہوسٹ کیا گیا ہے۔ آرکیٹیکچر تھرفٹ میں کلائنٹس اور سرورز بنانے کے لیے ایک مکمل اسٹیک شامل ہے۔ اوپری حصہ تھرفٹ کی تعریف سے کوڈ تیار کیا گیا ہے۔ اس فائل سے، خدمات کلائنٹ اور پروسیسر کوڈز تیار کرتی ہیں۔ بلٹ ان اقسام کے برعکس، تخلیق شدہ ڈیٹا ڈھانچے تیار شدہ کوڈ کے نتیجے میں بھیجے جاتے ہیں۔ پروٹوکول اور ٹرانسپورٹ پرت رن ٹائم لائبریری کا حصہ ہیں۔ تھرفٹ کے ساتھ، کوڈ کو دوبارہ مرتب کیے بغیر سروس کی وضاحت کرنا اور پروٹوکول اور ٹرانسپورٹ کو تبدیل کرنا ممکن ہے۔ کلائنٹ حصے کے علاوہ، تھرفٹ میں پروٹوکول اور ٹرانسپورٹس کو ایک ساتھ جوڑنے کے لیے سرور کا بنیادی ڈھانچہ شامل ہے، جیسے بلاکنگ، نان بلاکنگ، اور ملٹی تھریڈڈ سرورز۔ اسٹیک کا بنیادی I/O حصہ مختلف زبانوں کے لیے مختلف طریقے سے لاگو کیا جاتا ہے۔ تھرفٹ متعدد پروٹوکولز کی حمایت کرتا ہے: ٹی بائنری پروٹوکول-ایک سیدھا سیدھا بائنری فارمیٹ، سادہ، لیکن خلائی کارکردگی کے لیے بہتر نہیں۔ ٹیکسٹ پروٹوکول سے زیادہ تیزی سے عمل کرنا لیکن ڈیبگ کرنا زیادہ مشکل ہے۔ ٹی کامپیکٹ پروٹوکول-زیادہ کمپیکٹ بائنری فارمیٹ ؛ عام طور پر عمل کرنے کے ساتھ ساتھ ٹی جے ایس او این پروٹوکول-ڈیٹا کی انکوڈنگ کے لیے جے ایس او این کا استعمال کرتا ہے۔ ٹی سمپل جے ایس او این پروٹوکول-ایک صرف لکھنے والا پروٹوکول جسے تھرفٹ کے ذریعے تجزیہ نہیں کیا جا سکتا کیونکہ یہ جے ایس او این کا استعمال کرتے ہوئے میٹا ڈیٹا کو گرا دیتا ہے۔ اسکرپٹنگ زبانوں کے ذریعے تجزیہ کرنے کے لیے موزوں۔ معاون ٹرانسپورٹس یہ ہیں: ٹی سمپل فائل ٹرانسپورٹ-یہ ٹرانسپورٹ فائل کو لکھتا ہے۔ ٹی فریمڈ ٹرانسپورٹ-غیر مسدود سرور کا استعمال کرتے وقت اس نقل و حمل کی ضرورت ہوتی ہے۔ یہ فریموں میں ڈیٹا بھیجتا ہے، ہر ایک لمبائی کی معلومات سے پہلے۔ ٹی میموری ٹرانسپورٹ-آئی/او کے لیے میموری کا استعمال کرتا ہے۔ جاوا کا نفاذ ایک سادہ اندرونی استعمال کرتا ہے۔ ٹی ساکٹ-نقل و حمل کے لیے ساکٹ I/O کو بلاک کرنے کا استعمال کرتا ہے۔ ٹی زیلیب ٹرانسپورٹ-زیلیب کا استعمال کرتے ہوئے کمپریشن انجام دیتا ہے۔ دوسرے ٹرانسپورٹ کے ساتھ مل کر استعمال کیا جاتا ہے۔ تھرفٹ متعدد سرورز بھی فراہم کرتا ہے، جو کہ ٹینن بلاکنگ سرور ہیں-ایک ملٹی تھریڈ سرور جو نان بلاکنگ I/O کا استعمال کرتا ہے (جاوا کا نفاذ NIO چینلز کا استعمال کرتا ہے)۔ ٹی فریمڈ ٹرانسپورٹ کو اس سرور کے ساتھ استعمال کیا جانا چاہیے۔ ٹی سمپل سرور-ایک واحد تھریڈ سرور جو معیاری بلاکنگ I/O کا استعمال کرتا ہے۔ جانچ کے لیے مفید۔ ٹی تھریڈڈ سرور-ایک کثیر تھریڈ سرور جو تھریڈ فی کنکشن ماڈل اور معیاری بلاکنگ I/O کا استعمال کرتا ہے۔ TTHREDPoolServer-ایک کثیر تھریڈ سرور جو تھریڈ پول اور معیاری بلاکنگ I/O کا استعمال کرتا ہے۔ تھرفٹ کے کچھ بیان کردہ فوائد میں شامل ہیں: بائنری فارمیٹ کے استعمال کی وجہ سے ایس او اے پی جیسے متبادل کے مقابلے میں کم اوور ہیڈ کے ساتھ کراس لینگویج سیریلائزیشن۔ کوئی ایکس ایم ایل کنفیگریشن فائلیں نہیں۔ زبان کے بندھن فطری محسوس ہوتے ہیں۔ مثال کے طور پر، جاوا استعمال کرتا ہے۔ سی + + ایس ٹی ڈی:: ویکٹر <ایس ٹی ڈی:: سٹرنگ> استعمال کرتا ہے۔ درخواست کی سطح کے تار کی شکل اور سیریلائزیشن کی سطح کے تار کی شکل کو صاف طور پر الگ کیا گیا ہے۔ ان میں آزادانہ طور پر ترمیم کی جا سکتی ہے۔ پہلے سے طے شدہ سیریلائزیشن اسٹائل میں شامل ہیں: بائنری، ایچ ٹی ٹی پی دوستانہ اور کمپیکٹ بائنری۔ کراس لینگویج فائل سیریلائزیشن کے طور پر ڈبلز۔ پروٹوکول۔ تھرفٹ کو مرکزی اور واضح میکانزم کی ضرورت نہیں ہے جیسے میجر ورژن/مائنر ورژن۔ ڈھیلے جوڑے والی ٹیمیں آزادانہ طور پر آر پی سی کالز تیار کر سکتی ہیں۔ کوئی تعمیراتی انحصار یا غیر معیاری سافٹ ویئر نہیں۔ غیر مطابقت پذیر سافٹ ویئر لائسنسوں کا کوئی مرکب نہیں۔ تھرفٹ سروس بنانا تھرفٹ سی + + میں لکھا جاتا ہے، لیکن کئی زبانوں کے لیے کوڈ بنا سکتا ہے۔ تھرفٹ سروس بنانے کے لیے، کسی کو تھرفٹ فائلیں لکھنی پڑتی ہیں جو اسے بیان کرتی ہیں، منزل کی زبان میں کوڈ تیار کرتی ہیں، سرور کو شروع کرنے کے لیے کچھ کوڈ لکھتی ہیں، اور اسے کلائنٹ سے کال کرتی ہیں۔ اس طرح کی تفصیل کی فائل کی کوڈ مثال یہ ہے: اینم فون ٹائپ {ہوم، ورک، موبائل، دیگر} اسٹرک فون {1: i32 آئی ڈی، 2: سٹرنگ نمبر، 3: فون ٹائپ ٹائپ} سروس فون سروس {فون فائنڈ بائی آئی ڈی (1: i32 آئی ڈی)، لسٹ <فون> فائنڈ آل ()} تھرفٹ اس وضاحتی معلومات سے کوڈ تیار کرے گا۔ مثال کے طور پر، جاوا میں، فون ٹائپ فون کلاس کے اندر ایک سادہ اینم ہوگا۔ ڈیٹا سیریلائزیشن فارمیٹس کا موازنہ بھی دیکھیں اپاچی ایورو تجریدی نحو نوٹیشن ون (ASN.1) ہیسین پروٹوکول بفرز بیرونی ڈیٹا کی نمائندگی (XDR) انٹرنیٹ کمیونیکیشن انجن (آئس) GRPC SDXF حوالہ جات بیرونی لنکس تھرفٹ ایپلیکیشن لیئر پروٹوکول ڈیٹا سیریلائزیشن فارمیٹس انٹر پروسیس کمیونیکیشن ریموٹ پروسیجر کال تھرفٹ