یہ مواد "انٹروڈکشن ٹو انٹرپرائز ڈویلپمنٹ" سیریز کا حصہ ہے۔ پچھلے مضامین:
اس مضمون میں ہم MVC نامی ایک چیز کے بارے میں جانیں گے۔ ہم اس کے بارے میں بات کریں گے کہ MVC کیا ہے، اس کی تاریخ کو چھوئیں گے، MVC میں موجود بنیادی نظریات اور تصورات کو دریافت کریں گے، ایک قدم بہ قدم دیکھیں گے کہ کسی ایپلیکیشن کو ماڈل، ویو، اور کنٹرولر ماڈیولز میں کیسے توڑا جائے، ایک لکھیں۔ اسپرنگ بوٹ کا استعمال کرتے ہوئے چھوٹی ویب ایپلیکیشن، اور مثال کے طور پر اسپرنگ MVC کا استعمال کرتے ہوئے، دیکھیں کہ جاوا کوڈ سے HTML صفحات پر ڈیٹا کیسے بھیجا جاتا ہے۔ اس مواد کو سمجھنے کے لیے، آپ کو ڈیزائن کے نمونوں، خاص طور پر مبصر اور اگواڑے سے واقف ہونا ضروری ہے۔ اور HTTP درخواستوں اور جوابات سے واقف ہوں، HTML کی بنیادی باتوں کو سمجھیں، اور جانیں کہ جاوا تشریحات کیا ہیں۔ ایک کپ کافی اور اسنیک لیں، اور آرام کریں۔ چلو شروع کریں.
اس سب سے، ہم ایک منطقی نتیجہ اخذ کر سکتے ہیں۔ ایک پیچیدہ نظام کو ماڈیولز میں تقسیم کرنے کی ضرورت ہے۔ آئیے اس علیحدگی کو حاصل کرنے کے اقدامات کو مختصراً بیان کرتے ہیں۔
اور اس طرح ہم ماڈل، ویو اور کنٹرولر نامی تین ماڈیولز پر مشتمل ایپلی کیشن پر پہنچتے ہیں۔ آئیے خلاصہ کرتے ہیں:
- نیٹ ورکنگ کے بارے میں
- سافٹ ویئر فن تعمیر کے بارے میں
- HTTP/HTTPS کے بارے میں
- Maven کی بنیادی باتوں کے بارے میں
- سرولیٹس کے بارے میں (ایک سادہ ویب ایپلیکیشن لکھنا)
- سرولیٹ کنٹینرز کے بارے میں

MVC کی تاریخ
MVC کے پیچھے خیالات Trygve Reenskaug نے 1970 کی دہائی کے آخر میں زیروکس PARC میں کام کرتے ہوئے وضع کیے تھے۔ اُن دنوں کمپیوٹر کے ساتھ کام کرنے کے لیے ڈگری کی ضرورت ہوتی تھی اور بڑے پیمانے پر دستاویزات کا مستقل مطالعہ ہوتا تھا۔ Reenskaug کی طرف سے بہت مضبوط ڈویلپرز کے ایک گروپ کے ساتھ مل کر حل کیا گیا کام کمپیوٹر کے ساتھ ایک عام صارف کے تعامل کو آسان بنانا تھا۔ ایسے اوزار بنانے کی ضرورت تھی جو ایک طرف تو انتہائی آسان اور قابل فہم ہوں اور دوسری طرف کمپیوٹر اور پیچیدہ ایپلی کیشنز کو کنٹرول کرنا ممکن بنائیں۔ Reenskaug نے ایک ٹیم پر کام کیا جس نے "ہر عمر کے بچوں کے لیے" ایک لیپ ٹاپ کمپیوٹر تیار کیا — Dynabook، نیز ایلن کی کی قیادت میں سمال ٹاک زبان۔ یہ وہ وقت تھا جب دوستانہ انٹرفیس کے تصورات مرتب کیے گئے تھے۔ بہت سے معاملات میں، Reenskaug اور ان کی ٹیم کے ذریعہ کئے گئے کام نے IT کے شعبے کے ارتقاء کو متاثر کیا۔ یہاں ایک دلچسپ حقیقت ہے جو براہ راست MVC پر لاگو نہیں ہوتی ہے، لیکن ان پیشرفتوں کی اہمیت کو واضح کرتی ہے۔ ایلن کی نے کہا ، "جب میں پہلی بار ایپل پر پہنچا، جو '84 میں تھا، میک پہلے سے ہی ختم ہو چکا تھا اور نیوز ویک نے مجھ سے رابطہ کیا اور مجھ سے پوچھا کہ میں میک کے بارے میں کیا سوچتا ہوں۔ میں نے کہا، 'ٹھیک ہے، میک پہلا ذاتی کمپیوٹر ہے۔ تنقید کرنے کے لیے کافی اچھا ہے۔' تو، 2007 میں آئی فون کا اعلان کرنے کے بعد، وہ اسے میرے پاس لے آیا اور مجھے دے دیا، اس نے کہا، 'ایلن، کیا یہ تنقید کے لیے کافی ہے؟' اور میں نے کہا، 'اسٹیو، اسے ایک گولی جتنا بڑا کر دو اور تم دنیا پر راج کرو گے۔'" 3 سال کے بعد، 27 جنوری 2010 کو، ایپل نے 9.7 انچ کے اخترن والا آئی پیڈ متعارف کرایا۔ دوسرے لفظوں میں، اسٹیو جابز نے ایلن کی کے مشورے پر عمل کیا۔ Reenskaug کا منصوبہ 10 سال تک جاری رہا۔ لیکن MVC کے بارے میں پہلی اشاعت مزید 10 سال بعد سامنے آئی۔ سافٹ ویئر فن تعمیر پر متعدد کتابوں اور مضامین کے مصنف مارٹن فولر نے ذکر کیا ہے کہ اس نے سمال ٹاک کے ورکنگ ورژن کا استعمال کرتے ہوئے MVC کا مطالعہ کیا۔ کیونکہ ایک طویل عرصے سے اصل ماخذ سے MVC کے بارے میں کوئی معلومات نہیں تھی، اور کئی دیگر وجوہات کی بناء پر، اس تصور کی مختلف تشریحات کی ایک بڑی تعداد سامنے آئی۔ نتیجے کے طور پر، بہت سے لوگ MVC کو ڈیزائن پیٹرن سمجھتے ہیں۔ کم عام طور پر، MVC کو ایک جامع پیٹرن یا متعدد نمونوں کا مجموعہ کہا جاتا ہے جو پیچیدہ ایپلی کیشنز بنانے کے لیے مل کر کام کرتے ہیں۔ لیکن، جیسا کہ پہلے ذکر کیا گیا ہے، MVC دراصل بنیادی طور پر تعمیراتی نظریات/اصولوں/طریقہ کاروں کا ایک مجموعہ ہے جسے مختلف نمونوں کا استعمال کرتے ہوئے مختلف طریقوں سے لاگو کیا جا سکتا ہے... اگلا، ہم MVC تصور میں شامل مرکزی خیالات پر غور کریں گے۔MVC: بنیادی نظریات اور اصول
- VC ایک صارف انٹرفیس کے ساتھ پیچیدہ معلوماتی نظام کی تعمیر کے لیے تعمیراتی نظریات اور اصولوں کا ایک مجموعہ ہے۔
- MVC ایک مخفف ہے جس کا مطلب ہے: Model-View-Controller

مرحلہ 1۔ ایپلیکیشن کی کاروباری منطق کو یوزر انٹرفیس سے الگ کریں۔
MVC کا بنیادی خیال یہ ہے کہ یوزر انٹرفیس کے ساتھ کسی بھی ایپلیکیشن کو 2 ماڈیولز میں تقسیم کیا جا سکتا ہے: ایک ماڈیول جو کاروباری منطق کو نافذ کرنے کا ذمہ دار ہے، اور یوزر انٹرفیس۔ پہلا ماڈیول ایپلی کیشن کی مرکزی فعالیت کو نافذ کرے گا۔ یہ ماڈیول سسٹم کا بنیادی حصہ ہے، جہاں ایپلیکیشن کا ڈومین ماڈل لاگو ہوتا ہے۔ MVC پیراڈائم میں، یہ ماڈیول حرف M ہے، یعنی ماڈل۔ دوسرا ماڈیول پورے یوزر انٹرفیس کو لاگو کرتا ہے، جس میں صارف کو ڈیٹا ڈسپلے کرنے اور ایپلیکیشن کے ساتھ صارف کے تعامل کو ہینڈل کرنے کی منطق بھی شامل ہے۔ اس علیحدگی کا بنیادی مقصد اس بات کو یقینی بنانا ہے کہ نظام کا بنیادی حصہ (MVC اصطلاحات میں "ماڈل") کو آزادانہ طور پر تیار اور جانچا جا سکے۔ اس علیحدگی کے بعد، ایپلیکیشن کا فن تعمیر اس طرح نظر آتا ہے:
مرحلہ 2 ماڈل کو مزید خود مختار بنانے اور یوزر انٹرفیس کو سنکرونائز کرنے کے لیے مبصر پیٹرن کا استعمال کریں۔
یہاں ہمارے 2 مقاصد ہیں:- ماڈل کے لیے اور بھی زیادہ آزادی حاصل کریں۔
- یوزر انٹرفیس کو سنکرونائز کریں۔
مرحلہ 3 انٹرفیس کو ویو اور کنٹرولر میں الگ کریں۔
ہم ایپلیکیشن کو ماڈیولز میں تقسیم کرتے رہتے ہیں، لیکن اب درجہ بندی میں نچلی سطح پر۔ اس مرحلے پر، یوزر انٹرفیس (جسے ہم نے مرحلہ 1 میں ایک الگ ماڈیول میں الگ کیا ہے) کو ایک منظر اور کنٹرولر میں تقسیم کیا گیا ہے۔ ویو اور کنٹرولر کے درمیان سخت لکیر کھینچنا مشکل ہے۔ اگر ہم کہتے ہیں کہ منظر وہی ہے جو صارف دیکھتا ہے، اور کنٹرولر وہ طریقہ کار ہے جو صارف کو سسٹم کے ساتھ تعامل کرنے کی اجازت دیتا ہے، تو آپ ایک تضاد کی نشاندہی کر سکتے ہیں۔ کنٹرول عناصر، جیسے ویب پیج پر بٹن یا فون کی سکرین پر ورچوئل کی بورڈ، بنیادی طور پر کنٹرولر کا حصہ ہوتے ہیں۔ لیکن وہ صارف کے لیے اتنے ہی نظر آتے ہیں جتنا کہ کسی بھی حصے کے۔ ہم یہاں واقعی جس کے بارے میں بات کر رہے ہیں وہ ہے فنکشنل علیحدگی۔ صارف انٹرفیس کا بنیادی کام صارف کے نظام کے ساتھ تعامل کو آسان بنانا ہے۔ اس کا مطلب ہے کہ انٹرفیس میں صرف 2 افعال ہیں:- آؤٹ پٹ اور آسانی سے صارف کو سسٹم کی معلومات ڈسپلے کریں۔
- صارف کا ڈیٹا اور کمانڈز درج کریں (ان کو سسٹم سے بات کریں)

- MVC پیراڈائم کے اصولوں کے مطابق، ایک سسٹم کو ماڈیولز میں تقسیم کیا جانا چاہیے۔
- سب سے اہم اور آزاد ماڈیول ماڈل ہونا چاہیے۔
- ماڈل سسٹم کا بنیادی حصہ ہے۔ اسے یوزر انٹرفیس سے آزادانہ طور پر تیار کرنا اور جانچنا ممکن ہونا چاہیے۔
- اس کو حاصل کرنے کے لیے، تقسیم کے پہلے مرحلے میں، ہمیں سسٹم کو ایک ماڈل اور یوزر انٹرفیس میں تقسیم کرنے کی ضرورت ہے۔
- پھر، مبصر پیٹرن کا استعمال کرتے ہوئے، ہم ماڈل کی آزادی کو تقویت دیتے ہیں اور یوزر انٹرفیس کو ہم آہنگ کرتے ہیں۔
- تیسرا مرحلہ یوزر انٹرفیس کو کنٹرولر اور ویو میں تقسیم کرنا ہے۔
- سسٹم میں صارف کا ڈیٹا حاصل کرنے کے لیے جو کچھ درکار ہے وہ کنٹرولر میں ہے۔
- صارف کو معلومات کی فراہمی کے لیے جو کچھ درکار ہے وہ سب کچھ نظر میں ہے۔
اس بارے میں تھوڑا سا کہ منظر اور کنٹرولر ماڈل کے ساتھ کیسے تعامل کرتے ہیں۔
کنٹرولر کے ذریعے معلومات داخل کرکے، صارف ماڈل کو تبدیل کرتا ہے۔ یا کم از کم، صارف ماڈل ڈیٹا کو تبدیل کرتا ہے۔ جب صارف انٹرفیس عناصر کے ذریعے معلومات حاصل کرتا ہے (نظریہ کے ذریعے)، صارف ماڈل کے بارے میں معلومات حاصل کر رہا ہوتا ہے۔ یہ کیسے ہوتا ہے؟ منظر اور کنٹرولر ماڈل کے ساتھ کس طرح سے تعامل کرتے ہیں؟ بہر حال، ویو کی کلاسز ڈیٹا کو پڑھنے/لکھنے کے لیے ماڈل کی کلاسز کے طریقوں کو براہ راست کال نہیں کر سکتیں۔ بصورت دیگر، ہم یہ نہیں کہہ سکیں گے کہ ماڈل آزاد ہے۔ ماڈل قریب سے متعلقہ کلاسوں کا ایک مجموعہ ہے جس تک نہ تو منظر اور نہ ہی کنٹرولر کو رسائی حاصل ہونی چاہیے۔ ماڈل کو ویو اور کنٹرولر سے جوڑنے کے لیے، ہمیں اگواڑے کے ڈیزائن پیٹرن کو لاگو کرنے کی ضرورت ہے۔ ماڈل کا اگواڑا ماڈل اور یوزر انٹرفیس کے درمیان ایک پرت ہے، جس کے ذریعے منظر آسانی سے فارمیٹ شدہ ڈیٹا حاصل کرتا ہے، اور کنٹرولر اگواڑے پر ضروری طریقوں کو کال کرکے ڈیٹا کو تبدیل کرتا ہے۔ آخر میں، سب کچھ اس طرح لگتا ہے:
GO TO FULL VERSION