Web2Py একটি MVC (Model-View-Controller) আর্কিটেকচার ব্যবহার করে, যা ওয়েব অ্যাপ্লিকেশন ডেভেলপমেন্টকে পরিষ্কার এবং সংগঠিত রাখে। MVC আর্কিটেকচার মূলত তিনটি প্রধান উপাদান দিয়ে গঠিত: Model, View, এবং Controller। এই তিনটি উপাদান একে অপরের সাথে কাজ করে অ্যাপ্লিকেশনের লজিক, ডেটা এবং ইউজার ইন্টারফেস পরিচালনা করে।
MVC আর্কিটেকচার কি?
MVC আর্কিটেকচার একটি ডিজাইন প্যাটার্ন যা অ্যাপ্লিকেশনকে তিনটি ভাগে বিভক্ত করে:
- Model: ডেটা এবং ডাটাবেস সংক্রান্ত কাজ করে।
- View: ইউজার ইন্টারফেস (UI) উপস্থাপন করে।
- Controller: অ্যাপ্লিকেশন লজিক এবং ইউজার ইনপুট প্রসেস করে।
এই আর্কিটেকচারের প্রধান লক্ষ্য হলো অ্যাপ্লিকেশনের বিভিন্ন অংশ (ডেটা, উপস্থাপন, লজিক) আলাদা রাখা, যা কোডের রক্ষণাবেক্ষণ এবং উন্নয়নকে সহজ করে।
Model (মডেল)
Model একটি অ্যাপ্লিকেশনের ডেটা স্তর। এটি ডেটাবেসের সাথে সম্পর্কিত এবং ডেটার কাঠামো এবং সঞ্চালন নিয়ন্ত্রণ করে।
- কাজ: মডেল ডেটা সংরক্ষণ, আপডেট, রিট্রিভ এবং ডিলিট করার কাজ করে। এটি ডেটাবেসের টেবিল এবং রেকর্ডের প্রতিনিধিত্ব করে।
- ডাটাবেস পরিচালনা: Web2Py ডিফল্টভাবে DAL (Database Abstraction Layer) ব্যবহার করে, যা ডেটাবেসের সাথে যোগাযোগের জন্য একটি সহজ এবং শক্তিশালী API প্রদান করে।
উদাহরণ:
db = DAL('sqlite://storage.sqlite') # SQLite ডাটাবেসের সাথে সংযোগ db.define_table('person', Field('name'), Field('age'))এখানে
personএকটি ডাটাবেস টেবিল, যেখানেnameএবংageদুটি ফিল্ড রয়েছে।
View (ভিউ)
View হল অ্যাপ্লিকেশনটির ইউজার ইন্টারফেস (UI)। এটি ব্যবহারকারীর জন্য ডেটা প্রদর্শন করে।
- কাজ: ভিউ ডেটাকে HTML টেমপ্লেটের মধ্যে রেন্ডার করে। Web2Py টেমপ্লেট সিস্টেমের মাধ্যমে ডেটা ভিউতে পাঠানো হয়। ডেভেলপাররা এখানে Python কোডের সাথে HTML ব্যবহার করে ডাইনামিক কন্টেন্ট তৈরি করতে পারেন।
উদাহরণ:
<h2>{{=person.name}}</h2> <p>Age: {{=person.age}}</p>এখানে,
{{=person.name}}এবং{{=person.age}}ডাইনামিকভাবে মডেল থেকে আনা ডেটা দেখায়।
Controller (কন্ট্রোলার)
Controller অ্যাপ্লিকেশনটির লজিক নিয়ন্ত্রণ করে এবং ইউজারের ইনপুট প্রক্রিয়া করে।
- কাজ: কন্ট্রোলারটি ইউজার থেকে HTTP রিকোয়েস্ট গ্রহণ করে এবং সেই রিকোয়েস্টের ভিত্তিতে মডেল থেকে ডেটা নিয়ে ভিউতে পাঠায়। এটি ইউজারের কার্যক্রম যেমন সাবমিট করা ফর্ম, URL প্যারামিটার ইত্যাদি পরিচালনা করে।
উদাহরণ:
def index(): person = db(db.person.id > 0).select().first() # প্রথম ব্যক্তির ডেটা রিট্রিভ করা return dict(person=person)এখানে
index()ফাংশনটি ডাটাবেস থেকে একটিpersonরেকর্ড রিট্রিভ করে এবং ভিউতে পাঠায়।
MVC আর্কিটেকচারের কাজের পদ্ধতি
- Controller ইউজারের ইনপুট (যেমন URL রিকোয়েস্ট, ফর্ম সাবমিশন) গ্রহণ করে।
- কন্ট্রোলার ডেটা রিট্রিভ করতে মডেলকে কল করে।
- মডেল ডেটা প্রক্রিয়া করে এবং ডেটাবেস থেকে ডেটা রিট্রিভ করে কন্ট্রোলারকে পাঠায়।
- কন্ট্রোলার সেই ডেটা ভিউতে পাঠায়।
- View ডেটা গ্রহণ করে এবং এটি HTML আউটপুট হিসেবে রেন্ডার করে ইউজারকে প্রদর্শন করে।
Web2Py এর MVC ব্যবহার
Web2Py তে MVC এর প্রতিটি অংশ নির্দিষ্ট ফোল্ডারে থাকে:
- Controllers:
controllersফোল্ডারে কোড থাকে, যা ইউজার রিকোয়েস্ট প্রসেস করে। - Models:
modelsফোল্ডারে ডাটাবেস মডেল এবং ডেটা সংক্রান্ত কোড থাকে। - Views:
viewsফোল্ডারে HTML টেমপ্লেট থাকে, যা ডেটা ইউজারের কাছে উপস্থাপন করে।
এই কাঠামোটি কোডের সজ্জা সহজ এবং স্পষ্ট করে তোলে, ফলে ডেভেলপাররা দ্রুত এবং নিরাপদভাবে অ্যাপ্লিকেশন তৈরি করতে পারেন।
সারাংশ
Web2Py একটি MVC আর্কিটেকচার ব্যবহার করে, যা ডেভেলপারদের জন্য কোডকে পরিষ্কার এবং সংগঠিত রাখে।
- Model: ডেটা এবং ডাটাবেসের সাথে কাজ করে।
- View: ইউজার ইন্টারফেস উপস্থাপন করে।
- Controller: অ্যাপ্লিকেশন লজিক এবং ইউজারের ইনপুট প্রক্রিয়া করে।
এই আর্কিটেকচারের মাধ্যমে, ডেভেলপাররা অ্যাপ্লিকেশনটির বিভিন্ন অংশ আলাদা রাখতে পারেন, যা ডেভেলপমেন্ট প্রক্রিয়াকে আরও কার্যকর এবং সহজ করে তোলে।