এই উপাদানটি "এন্টারপ্রাইজ ডেভেলপমেন্টের ভূমিকা" সিরিজের অংশ। পূর্ববর্তী নিবন্ধ:
- নেটওয়ার্কিং সম্পর্কে
- সফটওয়্যার আর্কিটেকচার সম্পর্কে
- HTTP/HTTPS সম্পর্কে
- Maven এর মূল বিষয় সম্পর্কে
- সার্লেট সম্পর্কে (একটি সাধারণ ওয়েব অ্যাপ্লিকেশন লেখা)
- সার্লেট পাত্র সম্পর্কে
MVC এর ইতিহাস
1970-এর দশকের শেষের দিকে জেরক্স পিএআরসি-তে কাজ করার সময় ট্রাইগভ রেনস্কাগ এমভিসি-এর পিছনের ধারণাগুলি প্রণয়ন করেছিলেন। সেই দিনগুলিতে, কম্পিউটারের সাথে কাজ করার জন্য একটি ডিগ্রি এবং বিশাল ডকুমেন্টেশনের ধ্রুবক অধ্যয়নের প্রয়োজন ছিল। খুব শক্তিশালী ডেভেলপারদের একটি গোষ্ঠীর সাথে Reenskaug দ্বারা সমাধান করা কাজটি ছিল কম্পিউটারের সাথে একজন সাধারণ ব্যবহারকারীর মিথস্ক্রিয়া সহজ করা। এমন সরঞ্জামগুলি তৈরি করা প্রয়োজন ছিল যা একদিকে অত্যন্ত সহজ এবং বোধগম্য হবে এবং অন্যদিকে কম্পিউটার এবং জটিল অ্যাপ্লিকেশনগুলিকে নিয়ন্ত্রণ করা সম্ভব করবে। রেনস্কাগ এমন একটি দলে কাজ করেছেন যেটি "সব বয়সের শিশুদের জন্য" একটি ল্যাপটপ কম্পিউটার তৈরি করেছে — ডায়নাবুক, সেইসাথে অ্যালান কে-এর নেতৃত্বে স্মলটক ভাষা। এটি ছিল যখন একটি বন্ধুত্বপূর্ণ ইন্টারফেসের ধারণাগুলি স্থাপন করা হয়েছিল। অনেক ক্ষেত্রে, Reenskaug এবং তার দলের কাজ আইটি ক্ষেত্রের বিবর্তনকে প্রভাবিত করেছে। এখানে একটি আকর্ষণীয় তথ্য যা সরাসরি MVC-তে প্রযোজ্য নয়, তবে এই উন্নয়নগুলির তাত্পর্যকে ব্যাখ্যা করে। অ্যালান কেবলেছেন, "যখন আমি প্রথম অ্যাপলের কাছে যাই, যা '84 সালে ছিল, ম্যাক ইতিমধ্যেই বন্ধ হয়ে গিয়েছিল এবং নিউজউইক আমার সাথে যোগাযোগ করেছিল এবং ম্যাক সম্পর্কে আমি কী ভাবছি তা আমাকে জিজ্ঞাসা করেছিল। আমি বলেছিলাম, 'আচ্ছা, ম্যাক হল প্রথম ব্যক্তিগত কম্পিউটার যথেষ্ট ভাল সমালোচিত হতে হবে।' সুতরাং, 2007 সালে আইফোন ঘোষণা করার পর, তিনি এটি আমার কাছে নিয়ে এসে আমাকে দিয়েছিলেন। তিনি বলেছিলেন, 'অ্যালান, এটি কি সমালোচনার জন্য যথেষ্ট?' এবং আমি বলেছিলাম, 'স্টিভ, এটিকে একটি ট্যাবলেটের মতো বড় করুন এবং আপনি বিশ্বকে শাসন করবেন।'" 3 বছর পর, 27 জানুয়ারী, 2010-এ, অ্যাপল 9.7 ইঞ্চি তির্যক সহ আইপ্যাড প্রবর্তন করে। অন্য কথায়, স্টিভ জবস প্রায় হুবহু অ্যালান কে-এর পরামর্শ অনুসরণ করেছিলেন। Reenskaug এর প্রকল্প 10 বছর ধরে চলেছিল। কিন্তু এমভিসি সম্পর্কে প্রথম প্রকাশনাটি আরও 10 বছর পরে প্রকাশিত হয়েছিল। মার্টিন ফাউলার, সফ্টওয়্যার আর্কিটেকচারের উপর বেশ কয়েকটি বই এবং নিবন্ধের লেখক, উল্লেখ করেছেন যে তিনি Smalltalk এর একটি কার্যকরী সংস্করণ ব্যবহার করে MVC অধ্যয়ন করেছেন। কারণ দীর্ঘদিন ধরে মূল উৎস থেকে MVC সম্পর্কে কোনো তথ্য ছিল না, এবং অন্যান্য বিভিন্ন কারণে, এই ধারণার বিভিন্ন ব্যাখ্যার একটি বড় সংখ্যা উপস্থিত হয়েছিল। ফলস্বরূপ, অনেকে এমভিসিকে ডিজাইন প্যাটার্ন হিসাবে বিবেচনা করে। কম সাধারণভাবে, MVC কে একটি যৌগিক প্যাটার্ন বা বিভিন্ন প্যাটার্নের সংমিশ্রণ বলা হয় যা জটিল অ্যাপ্লিকেশন তৈরি করতে একসাথে কাজ করে। কিন্তু, যেমন আগে উল্লিখিত হয়েছে, MVC আসলে প্রাথমিকভাবে স্থাপত্য ধারণা/নীতি/পদ্ধতিগুলির একটি সেট যা বিভিন্ন প্যাটার্ন ব্যবহার করে বিভিন্ন উপায়ে প্রয়োগ করা যেতে পারে... এরপর, আমরা MVC ধারণার মধ্যে এমবেড করা মূল ধারণাগুলি বিবেচনা করব। এবং অন্যান্য বিভিন্ন কারণে, এই ধারণার বিভিন্ন ব্যাখ্যার একটি বড় সংখ্যা উপস্থিত হয়েছিল। ফলস্বরূপ, অনেকে এমভিসিকে ডিজাইন প্যাটার্ন হিসাবে বিবেচনা করে। কম সাধারণভাবে, MVC কে একটি যৌগিক প্যাটার্ন বা বিভিন্ন প্যাটার্নের সংমিশ্রণ বলা হয় যা জটিল অ্যাপ্লিকেশন তৈরি করতে একসাথে কাজ করে। কিন্তু, যেমন আগে উল্লিখিত হয়েছে, MVC আসলে প্রাথমিকভাবে স্থাপত্য ধারণা/নীতি/পদ্ধতিগুলির একটি সেট যা বিভিন্ন প্যাটার্ন ব্যবহার করে বিভিন্ন উপায়ে প্রয়োগ করা যেতে পারে... এরপর, আমরা MVC ধারণার মধ্যে এমবেড করা মূল ধারণাগুলি বিবেচনা করব। এবং অন্যান্য বিভিন্ন কারণে, এই ধারণার বিভিন্ন ব্যাখ্যার একটি বড় সংখ্যা উপস্থিত হয়েছিল। ফলস্বরূপ, অনেকে এমভিসিকে ডিজাইন প্যাটার্ন হিসাবে বিবেচনা করে। কম সাধারণভাবে, MVC কে একটি যৌগিক প্যাটার্ন বা বিভিন্ন প্যাটার্নের সংমিশ্রণ বলা হয় যা জটিল অ্যাপ্লিকেশন তৈরি করতে একসাথে কাজ করে। কিন্তু, যেমন আগে উল্লিখিত হয়েছে, MVC আসলে প্রাথমিকভাবে স্থাপত্য ধারণা/নীতি/পদ্ধতিগুলির একটি সেট যা বিভিন্ন প্যাটার্ন ব্যবহার করে বিভিন্ন উপায়ে প্রয়োগ করা যেতে পারে... এরপর, আমরা MVC ধারণার মধ্যে এমবেড করা মূল ধারণাগুলি বিবেচনা করব।MVC: মৌলিক ধারণা এবং নীতি
- ভিসি হল একটি ইউজার ইন্টারফেসের সাথে জটিল তথ্য সিস্টেম তৈরির জন্য স্থাপত্য ধারণা এবং নীতিগুলির একটি সেট
- MVC হল একটি সংক্ষিপ্ত রূপ যার অর্থ হল: মডেল-ভিউ-কন্ট্রোলার
ধাপ 1. ইউজার ইন্টারফেস থেকে অ্যাপ্লিকেশনটির ব্যবসায়িক যুক্তি আলাদা করুন
MVC-এর মূল ধারণা হল যে একটি ব্যবহারকারী ইন্টারফেস সহ যেকোনো অ্যাপ্লিকেশনকে 2টি মডিউলে ভাগ করা যেতে পারে: ব্যবসায়িক যুক্তি বাস্তবায়নের জন্য দায়ী একটি মডিউল এবং ব্যবহারকারী ইন্টারফেস। প্রথম মডিউলটি অ্যাপ্লিকেশনটির প্রধান কার্যকারিতা বাস্তবায়ন করবে। এই মডিউলটি সিস্টেমের মূল, যেখানে অ্যাপ্লিকেশনটির ডোমেন মডেল প্রয়োগ করা হয়। MVC দৃষ্টান্তে, এই মডিউলটি হল M অক্ষর, অর্থাৎ মডেল। দ্বিতীয় মডিউলটি ব্যবহারকারীর কাছে ডেটা প্রদর্শন এবং অ্যাপ্লিকেশনের সাথে ব্যবহারকারীর মিথস্ক্রিয়া পরিচালনা করার যুক্তি সহ সমগ্র ব্যবহারকারী ইন্টারফেস প্রয়োগ করে। এই বিচ্ছেদের মূল লক্ষ্য হল নিশ্চিত করা যে সিস্টেমের মূল (MVC পরিভাষায় "মডেল") স্বাধীনভাবে বিকশিত এবং পরীক্ষা করা যায়। এই বিচ্ছেদ করার পরে, অ্যাপ্লিকেশনটির আর্কিটেকচারটি এইরকম দেখায়:ধাপ 2 মডেলটিকে আরও স্বাধীন করতে এবং ইউজার ইন্টারফেস সিঙ্ক্রোনাইজ করতে পর্যবেক্ষক প্যাটার্ন ব্যবহার করুন
এখানে আমাদের 2টি লক্ষ্য রয়েছে:- মডেলের জন্য আরও বেশি স্বাধীনতা অর্জন করুন
- ইউজার ইন্টারফেস সিঙ্ক্রোনাইজ করুন
ধাপ 3 ইন্টারফেসটিকে ভিউ এবং কন্ট্রোলারে আলাদা করুন
আমরা অ্যাপ্লিকেশানটিকে মডিউলগুলিতে ভাগ করা চালিয়ে যাচ্ছি, তবে এখন অনুক্রমের নিম্ন স্তরে। এই ধাপে, ইউজার ইন্টারফেস (যা আমরা ধাপ 1 এ একটি স্বতন্ত্র মডিউলে আলাদা করেছি) একটি ভিউ এবং একটি কন্ট্রোলারে বিভক্ত। দৃশ্য এবং নিয়ামকের মধ্যে একটি কঠোর লাইন আঁকা কঠিন। যদি আমরা বলি যে ভিউটি হল ব্যবহারকারী যা দেখেন এবং নিয়ামক হল এমন একটি প্রক্রিয়া যা ব্যবহারকারীকে সিস্টেমের সাথে ইন্টারঅ্যাক্ট করতে দেয়, আপনি একটি বৈপরীত্য নির্দেশ করতে পারেন। কন্ট্রোল উপাদান, যেমন একটি ওয়েব পৃষ্ঠার বোতাম বা ফোনের স্ক্রিনে একটি ভার্চুয়াল কীবোর্ড, মূলত কন্ট্রোলারের অংশ। কিন্তু এগুলি ব্যবহারকারীর কাছে দৃশ্যের যেকোনো অংশের মতোই দৃশ্যমান। আমরা এখানে সত্যিই কি সম্পর্কে কথা বলছি কার্যকরী বিচ্ছেদ. ইউজার ইন্টারফেসের প্রধান কাজ হল সিস্টেমের সাথে ব্যবহারকারীর মিথস্ক্রিয়া সহজতর করা।- আউটপুট এবং সুবিধাজনকভাবে ব্যবহারকারীর সিস্টেম তথ্য প্রদর্শন
- ব্যবহারকারীর ডেটা এবং কমান্ড লিখুন (সেগুলি সিস্টেমে যোগাযোগ করুন)
- MVC দৃষ্টান্তের নীতি অনুসারে, একটি সিস্টেমকে মডিউলে ভাগ করা আবশ্যক।
- সবচেয়ে গুরুত্বপূর্ণ এবং স্বাধীন মডিউল মডেল হওয়া উচিত।
- মডেল হল সিস্টেমের মূল। ইউজার ইন্টারফেস থেকে স্বাধীনভাবে এটি বিকাশ এবং পরীক্ষা করা সম্ভব হওয়া উচিত।
- এটি অর্জন করতে, বিভাগের প্রথম ধাপে, আমাদের সিস্টেমটিকে একটি মডেল এবং ব্যবহারকারী ইন্টারফেসে বিভক্ত করতে হবে।
- তারপর, পর্যবেক্ষক প্যাটার্ন ব্যবহার করে, আমরা মডেলের স্বাধীনতাকে শক্তিশালী করি এবং ব্যবহারকারী ইন্টারফেসগুলিকে সিঙ্ক্রোনাইজ করি।
- তৃতীয় ধাপ হল ইউজার ইন্টারফেসকে কন্ট্রোলার এবং ভিউতে ভাগ করা।
- সিস্টেমে ব্যবহারকারীর ডেটা গ্রহণের জন্য যা প্রয়োজন তা নিয়ামকের মধ্যে রয়েছে।
- ব্যবহারকারীর কাছে তথ্য সরবরাহের জন্য যা যা প্রয়োজন তা দৃশ্যমান।