JSP model 2 architecture
জেএসপি মডেল 2 একটি জটিল নকশা প্যাটার্ন যা জাভা ওয়েব অ্যাপ্লিকেশনগুলির নকশায় ব্যবহৃত হয় যা বিষয়বস্তুর প্রদর্শনকে বিষয়বস্তু অর্জন এবং পরিচালনা করতে ব্যবহৃত যুক্তি থেকে পৃথক করে। যেহেতু মডেল 2 যুক্তি এবং প্রদর্শনের মধ্যে একটি বিচ্ছেদ ঘটায়, এটি সাধারণত মডেল-ভিউ-কন্ট্রোলার (এমভিসি) দৃষ্টান্তের সাথে যুক্ত। যদিও এমভিসি "মডেল"-এর সঠিক রূপ মডেল 2 নকশা দ্বারা কখনই নির্দিষ্ট করা হয়নি, বেশ কয়েকটি প্রকাশনা এমভিসি মডেল কোড ধারণ করার জন্য একটি আনুষ্ঠানিক স্তরের সুপারিশ করে। উদাহরণস্বরূপ, জাভা ব্লুপ্রিন্টস মূলত এমভিসি মডেলকে অন্তর্ভুক্ত করার জন্য ইজেবি ব্যবহার করার সুপারিশ করেছিল। একটি মডেল 2 অ্যাপ্লিকেশনে, ক্লায়েন্ট ব্রাউজার থেকে অনুরোধগুলি নিয়ন্ত্রকের কাছে পাঠানো হয়। কন্ট্রোলার প্রদর্শনের জন্য সঠিক বিষয়বস্তু পাওয়ার জন্য প্রয়োজনীয় যে কোনও যুক্তি সম্পাদন করে। এরপরে এটি অনুরোধে বিষয়বস্তু রাখে (সাধারণত জাভাবিয়ান বা পিওজেও আকারে) এবং সিদ্ধান্ত নেয় যে এটি কোন ভিউতে অনুরোধটি প্রেরণ করবে। ভিউ তারপর নিয়ামক দ্বারা পাস করা বিষয়বস্তু রেন্ডার করে। মডেল 2 মাঝারি এবং বড় আকারের অ্যাপ্লিকেশনের জন্য সুপারিশ করা হয়। 1998 সালে, সান মাইক্রোসিস্টেমস জাভা সার্ভার পেজস স্পেসিফিকেশনের একটি প্রাক-প্রকাশ, সংস্করণ 0.92 প্রকাশ করে। এই নির্দিষ্টকরণে, সান দুটি পদ্ধতি নির্ধারণ করেছে যার মাধ্যমে জেএসপি পৃষ্ঠাগুলি ব্যবহার করা যেতে পারে। প্রথম মডেলটি (নথিতে এর ক্রমের কারণে "মডেল 1" হিসাবে উল্লেখ করা হয়েছে) একটি সরল মডেল ছিল যার মাধ্যমে জেএসপি পৃষ্ঠাগুলি স্বতন্ত্র, বিচ্ছিন্ন সত্তা ছিল। যুক্তি পৃষ্ঠার মধ্যেই থাকতে পারে এবং পৃষ্ঠাগুলির মধ্যে নেভিগেশন সাধারণত হাইপারলিঙ্কের মাধ্যমে অর্জন করা হত। এটি টেমপ্লেট প্রযুক্তির তৎকালীন সাধারণ ব্যবহারের সাথে মানানসই। কোল্ডফিউশন এবং অ্যাক্টিভ সার্ভার পেজগুলি সমসাময়িক প্রযুক্তির উদাহরণ যা এই মডেলটিও প্রয়োগ করেছে। নথি দ্বারা উল্লিখিত দ্বিতীয় মডেলটি (ক্রমানুসারে "মডেল 2") একটি উন্নত পদ্ধতি ছিল যা জেএসপি প্রযুক্তির সাথে সার্ভলেট প্রযুক্তিকে একত্রিত করেছিল। তালিকাভুক্ত নির্দিষ্ট পার্থক্যটি ছিল যে একটি সার্ভলেট অনুরোধটিকে বাধা দেবে, বিষয়বস্তুটিকে একটি অনুরোধ বৈশিষ্ট্যে (সাধারণত একটি জাভাবিয়ান দ্বারা প্রতিনিধিত্ব করা) রেন্ডার করার জন্য রাখবে, তারপরে পছন্দসই আউটপুট বিন্যাসে বিষয়বস্তু রেন্ডার করার জন্য একটি জেএসপি কল করবে। এই মডেলটি পূর্ববর্তী মডেলের থেকে আলাদা ছিল কারণ জেএসপি প্রযুক্তি বিশুদ্ধ টেমপ্লেট ইঞ্জিন হিসাবে ব্যবহৃত হত। সমস্ত যুক্তি একটি সার্ভলেটে বিভক্ত করা হয়েছিল, যা জেএসপি-কে প্রদত্ত বিষয়বস্তুর জন্য আউটপুট রেন্ডার করার একমাত্র দায়িত্ব দিয়ে রেখেছিল। 1999 সালের ডিসেম্বরে, জাভাওয়ার্ল্ড গোবিন্দ শেষাদ্রির একটি নিবন্ধ প্রকাশ করে যার শিরোনাম জাভা সার্ভার পেজ মডেল 2 স্থাপত্যকে বোঝা। এই নিবন্ধে, গোবিন্দ "মডেল 2" শব্দটির ব্যবহারে দুটি প্রধান মাইলফলক অর্জন করেছেন। প্রথম মাইলফলকটি ছিল "মডেল 2" শব্দটিকে দুটি সম্ভাব্য বিকল্পের একটির পরিবর্তে একটি স্থাপত্য প্যাটার্ন হিসাবে আনুষ্ঠানিক করা। দ্বিতীয় মাইলফলকটি ছিল দাবি যে মডেল 2 ওয়েব-ভিত্তিক সফ্টওয়্যারের জন্য একটি এমভিসি স্থাপত্য সরবরাহ করেছিল। গোবিন্দ বিশ্বাস করতেন যে যেহেতু "মডেল 2" স্থাপত্যটি জেএসপি থেকে যুক্তিটিকে পৃথক করে এবং এটিকে একটি সার্ভলেটে স্থাপন করে, তাই দুটি অংশকে একটি এমভিসি স্থাপত্যে "ভিউ" এবং "কন্ট্রোলার" (যথাক্রমে) হিসাবে দেখা যেতে পারে। এমভিসি স্থাপত্যের "মডেল" অংশটি গোবিন্দ দ্বারা উন্মুক্ত রাখা হয়েছিল, এই পরামর্শের সাথে যে প্রায় যে কোনও তথ্য-কাঠামো প্রয়োজনীয়তা পূরণ করতে পারে। নিবন্ধে ব্যবহৃত নির্দিষ্ট উদাহরণটি ছিল ব্যবহারকারীর অধিবেশনে সংরক্ষিত একটি ভেক্টর তালিকা। 2000 সালের মার্চ মাসে অ্যাপাচি স্ট্রুটস প্রকল্পটি মুক্তি পায়। এই প্রকল্পটি ভিউ এবং কন্ট্রোলারের মধ্যে বিভাজনকে আনুষ্ঠানিক করে তোলে এবং "মডেল 2" প্যাটার্ন বাস্তবায়নের দাবি করে। আরও একবার, সফ্টওয়্যার ডেভেলপাররা একটি উপযুক্ত সমাধান পূরণ করবে এই প্রত্যাশায় "মডেল"-এর বাস্তবায়ন অনির্ধারিত ছিল। জে. ডি. বি. সি এবং ই. জে. বি-র মাধ্যমে ডাটাবেসের মিথস্ক্রিয়া স্ট্রুটস হোমপেজে প্রস্তাবিত বিকল্প ছিল। আরও সম্প্রতি, হাইবারনেট, আইবাটিস এবং অবজেক্ট রিলেশনাল ব্রিজকে আরও আধুনিক বিকল্প হিসাবে তালিকাভুক্ত করা হয়েছে যা একটি মডেলের জন্য ব্যবহার করা যেতে পারে। স্ট্রুটস প্রকাশের পর থেকে বেশ কয়েকটি প্রতিযোগিতামূলক কাঠামো আবির্ভূত হয়েছে। এই কাঠামোগুলির মধ্যে অনেকগুলি "মডেল 2" এবং "এমভিসি" বাস্তবায়নের দাবিও করে। ফলস্বরূপ, এই দুটি শব্দ বিকাশকারীদের মনে সমার্থক হয়ে উঠেছে। এর ফলে সংক্ষেপে "এমভিসি মডেল 2" বা "এমভিসি 2" শব্দটি ব্যবহার করা হয়েছে। ভুল ধারণা একটি সাধারণ ভুল ধারণা হল যে মডেল 2 বাস্তবায়নের জন্য একটি আনুষ্ঠানিক এমভিসি প্যাটার্ন প্রয়োজন। যাইহোক, জাভা ব্লুপ্রিন্টস বিশেষভাবে এই ব্যাখ্যার বিরুদ্ধে সতর্ক করেঃ জে2ইই প্ল্যাটফর্মে ওয়েব-স্তর প্রযুক্তির সাহিত্য প্রায়শই কোনও ব্যাখ্যা ছাড়াই "মডেল 1" এবং "মডেল 2" শব্দগুলি ব্যবহার করে। এই পরিভাষাটি জেএসপি নির্দিষ্টকরণের প্রাথমিক খসড়া থেকে উদ্ভূত, যা জেএসপি পৃষ্ঠাগুলির জন্য দুটি মৌলিক ব্যবহারের নিদর্শন বর্ণনা করে। যদিও নির্দিষ্টকরণ নথি থেকে পদগুলি অদৃশ্য হয়ে গেছে, সেগুলি সাধারণ ব্যবহারে রয়ে গেছে। মডেল 1 এবং মডেল 2 কেবল একটি নিয়ামক সার্ভলেটের অনুপস্থিতি বা উপস্থিতি (যথাক্রমে) বোঝায় যা ক্লায়েন্ট স্তর থেকে অনুরোধ প্রেরণ করে এবং মতামত নির্বাচন করে। উপরন্তু, "এমভিসি2" শব্দটি অনেককে একটি ভুল বিশ্বাসের দিকে পরিচালিত করেছে যে মডেল 2 একটি পরবর্তী প্রজন্মের এমভিসি প্যাটার্নের প্রতিনিধিত্ব করে। প্রকৃতপক্ষে, এমভিসি2 হল "এমভিসি মডেল 2" শব্দটির একটি সংক্ষিপ্ত রূপ। "এমভিসি2" শব্দটি নিয়ে বিভ্রান্তি মডেল 1 কোড নিয়ে অতিরিক্ত বিভ্রান্তির সৃষ্টি করেছে, যার ফলে "এমভিসি1" শব্দটির অস্তিত্ব নেই। এছাড়াও দেখুন অ্যাপাচি স্ট্রুটস একটি মডেল 2 স্থাপত্যের উপর ভিত্তি করে ওয়েব-অ্যাপ্লিকেশন বাস্তবায়নের জন্য একটি ওপেন সোর্স কাঠামো। রেফারেন্স এক্সটার্নাল লিঙ্ক মডেল 2 ASP.NET উপস্থাপনা প্যাটার্ন সহ এমভিসির একটি ইতিহাস-এই নিবন্ধে ডিনো এসপোসিটো আলোচনা করেছেন কিভাবে মডেল 2 ASP.NET এমভিসিতেও ব্যবহৃত হয়। সফ্টওয়্যার ডিজাইনের নিদর্শন সফ্টওয়্যার স্থাপত্য