Web Framework and MVC method

Web Framework:

    Web Framework সম্পর্কে একটা সাধারণ ধারণা আমি দিয়েছিলাম পাইথন জেম-৩ লেখাতে। সহজ কথায় ফ্রেমওয়ার্ক মানে হচ্ছে, কোন একটা শেপ বা প্যাটার্ণ বা ছাঁচ, যাতে একজন কুমার মাটি ফেলে একের পর এক পুতুল, হাড়ি-পাতিল তৈরি করে ফেলতে পারে। ওয়েবফ্রেমওয়ার্কে একটা ওয়েব অ্যাপ তৈরির কিছু কাজ আগে থেকেই করে দেয়া থাকে। যেমন – Django একটা ওয়েব ফ্রেমওয়ার্ক, যেটা দিয়ে NASA তাদের ওয়েবসাইট ডেভেলপ করেছে।

   Framework এ অনেকগুলা মডিউল define করা থাকে। ডেভেলপার তার প্রয়োজনমত module গুলোকে নিয়ে তার অ্যাপটাকে ডেভেলপ করে। আধুনিক ওয়েবফ্রেমওয়ার্কগুলো বেশিরভাগই MVC পদ্ধতিতে কাজ করে।

MVC:

MVC এর পুরো abbreviation হচ্ছে Model, View and Controller।

Model হচ্ছে Database, View হচ্ছে app এর ব্যবহারকারীরা যা দেখে সামনে এবং Controller হচ্ছে একটা পাইথন/পিএইচপি/রুবি ফাইল যে Model এবং View এর মাঝে যোগাযোগ রক্ষা করে।

ব্যাপারটা একটু অন্যভাবে ব্যাখ্যা করা যাক।

ধরি, আমরা ঢাকার মোহাম্মদপুরে তাজমহল রোডের (এই এলাকায় আমি প্রায় ২.৫ বছর ছিলাম) কোন এক আবাসিক ভবনের নিচতলায় একটা ডিপার্টমেন্টাল ষ্টোর (স্বপ্ন ডিপার্টমেন্টাল ষ্টোরের মত) খুললাম। ষ্টোর খুলে বসে থাকলেই তো হবে না, ষ্টোরে ক্রেতা আকৃষ্ট করার জন্য আমাদেরকে প্রচারণা চালাতে হবে, বিজ্ঞাপন দিতে হবে। বিজ্ঞাপন কিংবা প্রচারণায় আমরা আমাদের ষ্টোরের ঠিকানা উল্লেখ করব। আমাদের একটা বিজনেস কার্ড থাকবে, যেখানে আমাদের ঠিকানা উল্লেখ থাকবে।

  ওয়েব অ্যাপকে যদি আমাদের ডিপার্টমেন্টাল ষ্টোরের সাথে তুলনা করি তবে এখানে মোহাম্মদপুর, তাজমহল রোডের আবাসিক ভবনটি হচ্ছে আমাদের অ্যাপের হোষ্টিং সার্ভার। ভবনের নিচতলাটা যেভাবে আমরা আমাদের ষ্টোরের জন্য ভাড়া নিয়েছি সেভাবে আমাদের অ্যাপের জন্যও আমাদেরকে সার্ভার থেকে কিছু Space কিনে নিতে হবে। আমাদের অ্যাপের ঠিকানা হবে অ্যাপের জন্য বরাদ্দ হোয়া URL. (যেমনঃ বর্গমুলের URL হচ্ছে www.borgomul.com)

 এখন কেউ যদি আমাদের ষ্টোরে আসেন তবে তিনি কী দেখবেন? তিনি দেখবেন, বিক্রয়ের জন্য অনেক কিছু সুন্দর করে সাজিয়ে রাখা হয়েছে, কিছু মানুষ সুন্দর পরিপাটি করে সেজে ক্রেতাদের জিনিসপত্র কেনাকাটায় সাহায্য করছে। ষ্টোর থেকে বের হওয়ার পথে একটা ক্যাশ কাউন্টার রাখা আছে। সেখানে আরেকজন বসে আছে, যে ক্রেতাদের কাছ থেকে তাদের কেনা জিনিসের মুল্য বুঝে নিচ্ছে।

  ঠিক এই ধরনের ঘটনাই ঘটে যখন একজন user কোন একটা ওয়েব অ্যাপের URL টাইপ করে Enter চাপে। সে তখন একটা ওয়েব পেজ দেখতে পায় যেখানে ওয়েব অ্যাপটির বিষয়বস্তু সম্পর্কিত কিছু তথ্য, ছবি কিংবা ভিডিও সাজানো থাকে। এটাই হচ্ছে অ্যাপটির View (ষ্টোরে আসলে ক্রেতার দেখা View এর মতই)।

  এবারে দেখা যাক, আমাদের ডিপার্টমেন্টাল ষ্টোরে আসলে কী হচ্ছে। একজন ক্রেতা এসে তার সামনে সাজানো কিছু জিনিস কিনে নিয়ে যাচ্ছে। আমরা খালি হওয়া জায়গায় এরকম আরেকটা জিনিস এনে রাখছি যেন কখনও বিক্রী থেমে না যায়। অর্থাৎ আমাদের একটা গুদামঘর বা ষ্টোররুম আছে যেখানে আমরা একই ধরনের অনেক কিছু একসাথে রেখে দিয়েছি। ক্রেতার প্রয়োজনমত বিভিন্ন জিনিস আমরা এই গুদামঘর থেকে নিয়ে ষ্টোরে (ক্রেতার view তে) রাখছি। গুদামঘরে শুধু  বিক্রয়যোগ্য জিনিসই নয়, সাথে সাথে ষ্টোরের কর্মকর্তা/কর্মচারীদের ব্যক্তিগত জিনিসপত্র কিংবা ডকুমেন্টও রাখা হচ্ছে। এখানে ক্রেতা কিন্তু গুদামঘরে কী আছে তা জানে না বা নিরাপত্তার খাতিরে তাকে তা জানতে দেওয়া হচ্ছে না। ঠিক এরকমই ওয়েব অ্যাপের একটা গুদামঘর থাকে যেখানে অ্যাপ সম্পর্কিত সকল তথ্য, অ্যাপ তার User কে যে তথ্য দেখাবে তা সহ সংরক্ষণ করা হয়। অ্যাপের এই গুদামঘরের নাম হচ্ছে Database।   এই ডাটাবেজই হচ্ছে অ্যাপের Model.

   সবশেষে, আমরা শুধু একটা ডিপার্টমেন্টাল ষ্টোর খুলে জিনিসপত্র নিয়ে এসে, কিছু লোক নিয়োগ করলেই যে আমাদের ষ্টোর প্রতিষ্ঠার কাজ শেষ হয়ে গেল তা কিন্তু নয়। পুরো প্রক্রিয়াটা নিয়ন্ত্রণ করার জন্য/ দেখভাল করার জন্য আমাদেরকে একজন ষ্টোর ম্যানেজার নিয়োগ করতে হবে। সে হবে আমাদের ষ্টোরের Controller. ঠিক তেমনি ওয়েব অ্যাপেরও একটা controller থাকে যার কাজ হচ্ছে Model, User এবং View এর মাঝে সমন্বয় সাধন করা।

নিচের ছবিটা খেয়াল করা যাক-

mvc

তীরচিহ্নের এর দিকে খেয়াল করলেই আমরা বুঝতে পারব এখানে আসলে কী হচ্ছে। এটা একটা ছোট ব্লগের workflow যা কিনা MVC পদ্ধতি অনুসরণ করে।

প্রথমে গোল আইকনটা হচ্ছে Google chrome বা একটা ব্রাউজারের প্রতীক। User যখন URL লিখে Enter চাপে তখন ওয়েব অ্যাপটা (এখানে অ্যাপ হচ্ছে ব্লগ) দেখতে চাওয়ার request আসে আমাদের controller, blog.py (একটা পাইথন ফাইল) এর কাছে (১ নং পথ দ্রষ্টব্য) । blog.py এটাকে process  করে অ্যাপের Model (Database) কে কিছু প্রয়োজনীয় নির্দেশ পাঠায় (২ নং পথ দ্রষ্টব্য)  । নির্দেশ অনুসারে Model তার কাছে জমা থাকা কিছু তথ্য blog.py এর কাছে পাঠায় (৩ নং পথ দ্রষ্টব্য) । এবার blog.py তার কাছে আসা তথ্যগুলোকে User এর কাছে সাজিয়ে পাঠানোর জন্য User এর request অনুসারে অ্যাপের View (Templates/Html,css ফাইল) এর কাছে নির্দেশ পাঠায় (৪ নং পথ দ্রষ্টব্য)। View তার কাছে আসা নির্দেশ অনুসারে তথ্য সাজানোর mechanism গুলো blog.py এর কাছে পাঠায় (৫ নং পথ দ্রষ্টব্য) এবং blog.py প্রয়োজনীয় তথ্যসহ সাজানোর mechanism টা browser এর কাছে পাঠায় (৬ নং পথ দ্রষ্টব্য)  ।  Browser তার কাছে ফিরে আসা তথ্যগুলোকে mechanism অনুসারে সাজিয়ে User এর সামনে উপস্থাপন করে।

  এই হচ্ছে Web Framework এর MVC পদ্ধতি। তবে সব ফ্রেমওয়ার্কই MVC পদ্ধতি অনুসরন করে না। MVC এর মত আরও ২টি পদ্ধতি আছে MVP (Model-View-Presenter) এবং MVV (Model-View-ViewModel) ।

 আর Framework শুধু web app এর জন্যই নয়, android, iphone, game, enterprise যেকোন ক্ষেত্রের app এর জন্যও আছে।  এবং এসব ফ্রেমওয়ার্কও MVC, MVP কিংবা MVV পদ্ধতি অনুসরণ করে চলে।

  সবশেষে, MVC পদ্ধতিতে Python এর web framework Flask ব্যবহার করে বানানো একটি ছোট্ট ব্লগ অ্যাপ

Md. Noor Faizur Reza
Author: Md. Noor Faizur Reza

আমার যে কাজ ভালো লাগে তা নিয়ে সারাদিন পরে থাকি !

Permanent link to this article: https://www.borgomul.com/rezanur/3590/


মন্তব্য করুন আপনার ফেসবুক প্রোফাইল ব্যবহার করে

মন্তব্য করুন

Discover more from বর্গমূল | Borgomul

Subscribe now to keep reading and get access to the full archive.

Continue reading