মডেল ভিউ নিয়ন্ত্রণকারী ব্যাখ্যা করুন


13

গতিশীল ওয়েবসাইটগুলির বিকাশের সাথে আমার অভিজ্ঞতা বেশিরভাগ জাভা সার্লেটগুলিতে সীমাবদ্ধ। আমি বিভিন্ন জাভা সার্ভলেটগুলি বিকাশের জন্য টোম্যাট ব্যবহার করেছি এবং আমি বলতে দ্বিধা করব না যে আমি এই প্রযুক্তির সাথে যুক্ত, পাশাপাশি সম্মুখ-প্রান্তের ক্লায়েন্ট-সাইড এইচটিএমএল / সিএসএস / জাভাস্ক্রিপ্টের সাথে যথেষ্ট দক্ষ।

আমি যখন "ডায়নামিক ওয়েবসাইট" মনে করি, তখন আমার মনে হয়: ব্যবহারকারী একটি ক্যোয়ারী স্ট্রিং সহ একটি ইউআরএল অনুরোধ করে, সার্ভারটি কোয়েরিটি গ্রহণ করে এবং তারপরে প্রশ্নের উত্তর দেওয়ার জন্য ডায়নামিকভাবে এইচটিএমএল HTML আউটপুট এ এগিয়ে যায়। প্রদর্শনের জন্য অনুরোধ করা ডেটা আনতে এটি প্রায়শই একটি ডাটাবেসের সাথে যোগাযোগ জড়িত। এটি মূলত doGetএকটি জাভা পদ্ধতির পিছনে ধারণা HttpServlet

তবে আজকাল, আমি জেলাগুলি এবং রুবেলগুলিতে নবীনতর ফ্রেমওয়ার্কগুলি সম্পর্কে আরও বেশি শুনছি, যার সবকটিই "মডেল ভিউ কন্ট্রোলার" আর্কিটেকচারের সুবিধা গ্রহণ করে। আমি বিভিন্ন নিবন্ধগুলি পড়েছিলাম যা এমভিসি ব্যাখ্যা করে, তবে সত্যিই সুবিধাগুলি বুঝতে আমার সমস্যা হচ্ছে। আমি বুঝতে পারি যে সাধারণ ধারণাটি হ'ল ইউজিক যুক্তি থেকে ব্যবসায়ের লজিককে পৃথক করা, তবে আমি এটি দেখতে ব্যর্থ হয়েছি যে এটি সাধারণ ওয়েব প্রোগ্রামিং থেকে আসলে কী আলাদা। ওয়েব প্রোগ্রামিং, এটি খুব প্রকৃতির দ্বারা আপনাকে ব্যবসায়ের লজিক (ব্যাক-এন্ড সার্ভার-সাইড প্রোগ্রামিং) ইউআই প্রোগ্রামিং (ক্লায়েন্ট-সাইড এইচটিএমএল বা জাভাস্ক্রিপ্ট) থেকে আলাদা করতে বাধ্য করে, কারণ প্রোগ্রামিংয়ের সম্পূর্ণ ভিন্ন ক্ষেত্রে দুটিই বিদ্যমান।

প্রশ্ন: এমভিসি জাভা সার্লেটের মতো কোনও কিছুর উপরে কী প্রস্তাব দেয় এবং আরও গুরুত্বপূর্ণ, এমভিসি আসলে কী এবং আপনি জাভা সার্লেট (বা এমনকি এমনকী আরও বেশি traditionalতিহ্যবাহী পদ্ধতির ব্যবহার করে ডায়নামিক ওয়েবসাইট বিকাশের জন্য সাধারণত কী করবেন তার থেকে আলাদা) how সিজিআই এর মতো পুরানো কিছু)? যদি সম্ভব হয়, এমভিসি সম্পর্কে ব্যাখ্যা করার সময়, দয়া করে একটি উদাহরণ সরবরাহ করুন যা এমভিসি ওয়েব ডেভলপমেন্ট প্রসেসে কীভাবে প্রয়োগ করা হয় এবং কীভাবে এটি উপকারী।

উত্তর:


7

প্রথমে আমি মনে করি এমভিসি আর্কিটেকচার কী তা সম্পর্কে সর্বোত্তম আলোচনা এবং তারপরে আপনি বর্তমানে যেভাবে প্রোগ্রামিং করছেন সেদিকে আরও এগিয়ে যান।

এমভিসি আর্কিটেকচারটি কোনও সোটওয়্যারের সিস্টেমে ওয়ার্কফ্লোটি সাজানোর উপায়, এটি সিস্টেমের আচরণ বাস্তবায়নের জন্য একটি স্তরযুক্ত উপায় হিসাবে ভাবেন। এই স্তরগুলি হ'ল:

  1. মডেল : আপনার ডেটা মডেলটিকে প্রতিনিধিত্ব করে, এটি সিস্টেমের মূল যেখানে এটি সম্পর্কিত সমস্ত তথ্য স্থানীয় করা উচিত। সুতরাং উদাহরণস্বরূপ: আপনি যদি একটি গেমটি নির্ধারণ করতে যাচ্ছেন তবে আপনাকে খেলোয়াড়, বিধি, বাধা এবং এই উপাদানগুলির সাথে মিথস্ক্রিয়া সম্পর্কিত কিছু যুক্তি যেমন: নিয়মের কিছু সেট প্রয়োগ করার সময় খেলোয়াড়দের বাধাগুলি বাছাই করতে সক্ষম হওয়া উচিত।

    মডেল প্রথম মনে হয় তুমি বন্ধ চিন্তা করা উচিত কারণ তার আপনার অ্যাপ্লিকেশনের কেন্দ্রে হতে যাচ্ছে

  2. কন্ট্রোলার : এটি যেখানে যাদুটি ঘটে এবং যেখানে স্তরযুক্ত আর্কিটেকচারটি এটি ব্যবহারের উদ্দেশ্যে করা হয়েছিল সেই অবজেক্ট ওরিয়েন্টড প্যারাডিজমের সাথে মিলিত হয়। কিছু অ্যাপ্লিকেশন ব্যবহারকারী যখন ইউজার ইন্টারফেসের মাধ্যমে অ্যাপ্লিকেশনটির জন্য কিছু অনুরোধ করে তখন সিস্টেমটি কীভাবে প্রতিক্রিয়া দেখায় আপনি তা প্রয়োগ করছেন।

    কন্ট্রোলারের উচিত মডেল অবজেক্টগুলি পরিচালনা করতে, ব্যবহারকারীরা যা অনুরোধ করেছে তা অর্জন করার জন্য তাদের সাথে ক্রিয়াকলাপ করতে সক্ষম হবে এবং তারপরে ফলাফলটি আমাদের ব্যবহারকারীর কাছে ফেরত দিতে সংশ্লিষ্ট ভিউ লেয়ারের কাছে ফলাফল অর্পণ করবে।

  3. দেখুন : এটি ব্যবহারকারীর ইন্টারঅ্যাকশনগুলির শুরু এবং শেষ পয়েন্ট। ব্যবহারকারীরা কীভাবে অ্যাপ্লিকেশনটির সাথে ইন্টারঅ্যাক্ট করে তা আপনি এখানে সংজ্ঞায়িত করেন। আজকাল বেশ সাধারণ ব্যবহারকারীরা অ্যাক্সেস করার চেষ্টা করছেন, উদাহরণস্বরূপ, বিভিন্ন ধরণের মিডিয়া যেমন ওয়েব অ্যাপ্লিকেশন: মোবাইল ফোন, টেবিল, পিসি, ল্যাপটপ ইত্যাদি applications

    সাধারণত প্রতিটি টেকনোলজির দৃষ্টিভঙ্গি তৈরি করার জন্য একটি দ্বিধাগ্রস্ত ভাষা প্রয়োজন, সুতরাং কল্পনা করুন যে আপনার ডেটা মডেল এবং মডেলটি যেভাবে ইন্টারেক্ট করে এবং কীভাবে আপনি ইন্টারঅ্যাকশনগুলি সমস্ত হার্ডকোডযুক্ত রেন্ডার করেন, আপনার কোডটি এমনভাবে পুনরায় ব্যবহার করার কোনও উপায় নেই যা কপিপাস্ট নয় is । ফলাফলটি এমন কোড যা গন্ধযুক্ত এবং হোল সিমেটকে মানিয়ে নেওয়ার জন্য প্রচুর সময় নষ্ট করে।

    পৃথক স্তরে ভিউ থাকার ফজিলত, বর্তমানে আমরা যে মডেলটিতে কাজ করছি তার থেকে আমাদের স্বাধীনভাবে কাজ করার অনুমতি দিন । আমাদের কেবলমাত্র জানতে হবে যে আমাদের নিয়ন্ত্রণকারী আমাদের পাঠিয়ে দিচ্ছে তার তালিকা কীভাবে রেন্ডার করা উচিত। তিনি কীভাবে এটি তৈরি করেছিলেন তা সম্পূর্ণ তুচ্ছ

সুতরাং, অবশেষে আমরা একটি ইন্ডিপেট মডেল পেয়েছি যা আমাদের বর্তমান প্রয়োজন অনুসারে ফিট হিসাবে দেখতে পারা যায় (আজকে আমি কোনও নিয়ম ছাড়াই একটি মনসারের গেমটি পরিচালনা করতে হবে, আগামীকাল আমি বন্ধুদের সাথে খেলতে চাই এবং এখন এর মাল্টিউজার, এবং আরও অনেক কিছু) এটি কীভাবে আমরা ব্যবহারকারীর কাছে এটি রেন্ডার করব তার উপর নির্ভর করে না। তারপরে, এমন একটি নিয়ন্ত্রণকারী যা ব্যবহারকারীদের অনুরোধটি ক্যাপচার করে যা কোনও ভিউ থেকে আসে, মডেল অবজেক্টগুলিকে প্রক্রিয়া করে এবং তারপরে তথ্যটি রেন্ডার করার জন্য ফিরিয়ে দেয়।

আপনি যে প্রথম প্রশ্নটি জিজ্ঞাসা করেছিলেন ফিরে যান: আপনি দেখতে পাচ্ছেন (আমি আশা করি) এমভিসি জিনিসগুলি করার একটি উপায় এবং সফ্টওয়্যার তৈরির কোনও প্রযুক্তি নয়। আপনি আপনার জাভা সার্লেটগুলি ব্যবহার করতে পারেন এবং এর অধীনে একটি এমভিসি অ্যাচিটেকচার প্রয়োগ করতে পারেন।

এমভিসি আর্কিটেকচারটি ব্যবহার করে কিছুটা স্পষ্ট করার জন্য এখানে একটি প্রশ্নোত্তর উদাহরণ সাইট এখানে চিত্র বর্ণনা লিখুন


6

আপনার প্রশ্নের উত্তর দিতে

What does MVC offer over something like a Java servlet

এমভিসি একটি নকশাই, কোনও প্রযুক্তি নয়। সুতরাং আপনি যখন সার্লেটগুলির সাথেও প্রোগ্রামিং করছেন তখন প্যাটার্নটি প্রয়োগ করা যেতে পারে।

আমাকে নিজে সার্ভলেট দিয়ে এমভিসি প্যাটার্নটি ব্যাখ্যা করার চেষ্টা করি। সুতরাং আপনি যখন এমভিসি প্রয়োগের বিষয়ে কথা বলছেন তখন আপনি যা করার চেষ্টা করছেন তা হ'ল মডেল (ব্যবসায়িক যুক্তি), দৃষ্টিভঙ্গি (উপস্থাপনা যুক্তি) এবং নিয়ামক (নিয়ামক সার্ভলেট যা উপযুক্ত ব্যবসায়ের যুক্তিকে নিয়ন্ত্রণ নিয়ন্ত্রণ করে) আলাদা করুন।

এই ক্ষেত্রে, এমভিসি কেবল উপস্থাপনা স্তর এবং নিয়ন্ত্রক স্তর থেকে ব্যবসায়কে আলাদা করার বিষয়ে নয়, তবে ব্যবসায়ের স্তরটি এমনকি কোনও নিয়ামক বা উপস্থাপনা বিদ্যমান বলেও জানে না।

স্ট্রটসের মতো জাভাতে বড় ফ্রেমওয়ার্কগুলি এই প্যাটার্নটি অনুসরণ করে। আমি মনে করি আপনি ধারণাটি ভুল পেয়েছেন। আপনি এটি ইন্টারনেটে আরও পড়তে পারেন।


2

এমভিসি অনুধাবন করা সত্যিই সহজ, এটি কেবল একটি নকশার প্যাটার্ন, তবে, আমি দেখেছি যে সবচেয়ে কঠিন / তদারকি মডেল অংশ।

  • মডেল : আপনার ডেটা (একচেটিয়াভাবে আপনার ডাটাবেস নয় !, মডেল এমনকি কোনও আইএনআই বা এক্সএমএল ফাইল, বা কোনও ওয়েব পরিষেবা থেকে ডেটাও হতে পারে)। মডেল ক্লাস ডেটা সংজ্ঞায়িত, সংহতকরণ এবং পরিচালনা করার উদ্দেশ্যে কাজ করে। " এমভিসি ইন দ্য এম: মডেলগুলি কেন ভুল বোঝাবুঝি এবং অপ্রকাশিত " নামক দুর্দান্ত নিবন্ধটি পড়ুন । মডেলটি শুধুমাত্র নিয়ামক দ্বারা অ্যাক্সেস করা উচিত।
  • দর্শন : আপনার জিইউআই (উপস্থাপনা) কোড। শুধুমাত্র নিয়ামক অ্যাক্সেস করা উচিত
  • নিয়ামক : আপনার যুক্তি। মডেল এবং দেখার মধ্যে যোগাযোগ পরিচালনা করে।

1

মডেল দেখুন-কন্ট্রোলার ধারণা নতুন কিছু নয়। এটি ১৯৯ around সালের দিকে স্মলটালকের সাথে শুরু হয়েছিল।

এর মূল বিষয়, এমভিসি হ'ল আপনার কোডের দায়িত্বগুলি সংগঠিত করার একটি উপায় যাতে এটি মডুলার, অনুমানযোগ্য এবং শক্তিশালী হয়।

বিচ্ছেদ আপনাকে নিম্নলিখিত স্বাধীনতার অনুমতি দেয়:

  • অ্যাপ্লিকেশন লজিককে প্রভাবিত না করে বা ডেটা প্রদর্শন না করে মডেলটি বিকশিত করার ক্ষমতা
  • মডেলটিকে প্রভাবিত না করে ব্যবসায়ের যুক্তি পরিবর্তন করার ক্ষমতা (যেমন নতুন পদক্ষেপগুলি যুক্ত করুন ইত্যাদি)
  • একাধিক বিভিন্ন উপায়ে মডেল উপস্থাপন করার ক্ষমতা

যত্ন সহ, আপনি সম্ভাব্যভাবে মডেল এবং নিয়ামক ডিজাইন করতে পারেন যাতে আপনি সম্পূর্ণরূপে ওয়েব অ্যাপ্লিকেশন সহ একটি ডেস্কটপ অ্যাপ্লিকেশন প্রতিস্থাপন করতে পারেন।

সাম্প্রতিককালে, এমবিসির কাছে রুবি অন রেলস পদ্ধতির কিছু নতুন ধারণা প্রচলিত হয়েছিল যা প্রায় সমস্ত এমভিসি স্টাইলের ওয়েব অ্যাপ্লিকেশন ফ্রেমওয়ার্কে অনুলিপি করা হয়েছিল। এর মধ্যে "কনভেনশন ওভার কনফিগারেশন" এর ধারণাগুলি, শ্রেণিবদ্ধ পদ্ধতিতে নিয়ামক পদক্ষেপের ম্যাপিং এবং অন্তর্নিহিত কোডটিতে ইউআরএল অনুরোধগুলির রাউটিং অন্তর্ভুক্ত রয়েছে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.