কোডিং সি এর ক্ষেত্রে এমভিসি, এমভিপি এবং এমভিভিএম ডিজাইন প্যাটার্নের মধ্যে পার্থক্য কী?


202

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

সবচেয়ে মূল্যবান খেলোয়াড়

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

MVVM

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

MVC

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


তবে আমি এমন একটি নিবন্ধ পাইনি যা নমুনা কোডের সাথে তাত্ত্বিকভাবে পার্থক্যটি নিয়ে আলোচনা করে।

কোডের সাথে এই 3 ডিজাইনের ধরণগুলির (এমভিসি, এমভিপি এবং এমভিভিএম) মধ্যে পার্থক্য নিয়ে আলোচনা করা একটি নিবন্ধ পেলে খুব সুন্দর লাগবে।

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

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


14
টেকএড 2011 এ এই 3 নিদর্শন সম্পর্কে একটি ভাল তবে সাধারণ উপস্থাপনা ছিল। স্পিকার সি # এবং ভিজ্যুয়াল স্টুডিও ব্যবহার করে একই ব্যবসায়িক মডেলটিতে উদাহরণ তৈরি করেছেন এবং দেখিয়েছেন। এখানে চ্যানেল 9 এমভিসি, এমভিপি এবং এমভিভিএম
মার্কো মেড্রানো

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

এটি আকর্ষণীয় ছিল: cirw.in/blog/time-to-move-on
অ্যান্ড্রু

উত্তর:


100

কিছু প্রাথমিক পার্থক্য সংক্ষেপে লেখা যেতে পারে:

MVC:

Ditionতিহ্যবাহী এমভিসি যেখানে সেখানে রয়েছে

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

সবচেয়ে মূল্যবান খেলোয়াড়:

Traditionalতিহ্যবাহী এমভিসি এর মতো তবে কন্ট্রোলার উপস্থাপক দ্বারা প্রতিস্থাপিত হয়। তবে উপস্থাপক, কন্ট্রোলারের বিপরীতে ভিউটিও পরিবর্তন করার জন্য দায়ী। দৃশ্যটি সাধারণত উপস্থাপককে কল করে না।

MVVM

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


1
ছোট বিবরণ - আপনি এটি বেছে নিতে পারেন এটি দ্বি-উপাত্তের ডেটা বাঁধাই করা বা আপনি পাশাপাশি একটি উপায় বাঁধাই সংজ্ঞায়িত করতে পারেন।
জভিয়াচস

10
"দৃশ্যটি সাধারণত উপস্থাপককে ডাকে না"? আপনি এই বাক্য সম্পর্কে আরও ব্যাখ্যা করতে পারেন? যদি ইউআই ভিউ উপস্থাপককে কল করতে যাচ্ছেন তবে কে যাচ্ছে?
আমির জিয়ারতী

3
আমিরজিয়ারাতি @ উপস্থাপক ঘটনাগুলিতে নজর রাখছেন। ইভেন্টগুলির ক্ষেত্রে উপস্থাপক খেলতে আসে এবং প্রয়োজনীয় পদক্ষেপ নেয়।
প্রীতম ব্যানার্জি

হ্যাঁ যতক্ষণ পর্যন্ত এটি দেখার একটি রেফারেন্স রয়েছে। আমি ভুল বুঝতে পেরেছিলাম যে আপনি বোঝাতে চেয়েছিলেন এমনকি প্রাথমিকভাবে কোনও উপস্থাপককে কল করার প্রয়োজন নেই যদিও এটি কমপক্ষে এক সময় করা উচিত। ধন্যবাদ;)
আমির জিয়ারাটি

1
@ প্রীতমবাণার্জী, ব্যাখ্যা থেকে, এমভিপি এবং এমভিভিএম উভয়েরই প্রায় একই কার্যকারিতা রয়েছে। পি বা ভিএম এম এবং ভি উভয় আপডেট করে
মনোহর রেড্ডি পোরেডি

42

এমভিসি, এমভিপি, এমভিভিএম

এমভিসি (পুরানো)

এমভিপি (কম সংযোগের কারণে আরও মডিউলার Pre উপস্থাপক দেখুন এবং মডেলের মধ্যে একটি মধ্যস্থতাকারী)

এমভিভিএম (আপনার ইতিমধ্যে ভিএম এবং ইউআই উপাদানগুলির মধ্যে দ্বি-মুখী বন্ধন রয়েছে, সুতরাং এটি এমভিপির চেয়ে বেশি স্বয়ংক্রিয় হয়) এখানে চিত্র বর্ণনা লিখুন

অন্য চিত্র: এখানে চিত্র বর্ণনা লিখুন


24
দয়া করে কেবল চিত্রগুলি অনুলিপি করবেন না - বিশেষত যখন তারা নিজের মধ্যে সম্মত হন না। এমভিসি দেখুন (পুরানো যা আপনি দেখতে পাচ্ছেন না) শীর্ষে ছবি দেখতে ব্রাউজারটি কথা বলে তবে নীচের ছবিতে নিয়ামকের সাথে কথা বলে।
peter.fr

1
@ উদোধগৌতম এটির বিভ্রান্তিকর কারণ প্রথম চিত্রটি এন্ট্রি পয়েন্ট হিসাবে দেখুন এবং দ্বিতীয়টি কন্ট্রোলার দেখায়।
চিরকাল

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

1
ব্রাউজার অর্থ ব্যবহারকারী এবং সেখান থেকে আপনার এবং অ্যাপ্লিকেশনের মধ্যে ইন্টারঅ্যাকশন ঘটে।
উদ্ধব গৌতম

4
প্লট টুইস্ট: আসলে কী হচ্ছে কেউ জানে না। তারা সবাই আসলে একই জিনিস। হা হা। না তবে সত্যই, এমনকি এই "সহায়ক" চিত্রগুলির সাথেও কী কাজ চলছে তা প্রক্রিয়া করা শক্ত hard আমি মনে করি এটি সমস্যার / বিভ্রান্তির অংশ।
অ্যান্ড্রু

34

লিঙ্কটি থেকে দুর্দান্ত ব্যাখ্যা: http://geekswithblogs.net/dlussier/archive/2009/11/21/136454.aspx

প্রথমে এমভিসির দিকে নজর দেওয়া যাক

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

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

কন্ট্রোলার থেকে দেখার জন্য একটি উপায় তীর রয়েছে। কারণ ভিউটিতে নিয়ামকের কোনও জ্ঞান বা রেফারেন্স নেই।

কন্ট্রোলার মডেলটিকে পিছনে ফেলে দেয়, সুতরাং ভিউ এবং এটিতে প্রত্যাশিত মডেলটি পাস হওয়ার মধ্যে জ্ঞান রয়েছে তবে নিয়ামক এটি পরিবেশন করে না।

এমভিপি - মডেল ভিউ উপস্থাপক

এখন আসুন এমভিপি প্যাটার্নটি দেখুন। এটি কিছু মূল পার্থক্য বাদে এমভিসির সাথে খুব মিল দেখাচ্ছে:

ইনপুটটি উপস্থাপক নয়, ভিউ দিয়ে শুরু হয়।

ভিউ এবং সম্পর্কিত উপস্থাপকের মধ্যে এক থেকে একের ম্যাপিং রয়েছে।

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

উপস্থাপিকা মডেলটিতে এটি সম্পাদিত অনুরোধকৃত ক্রিয়াগুলির ভিত্তিতে ভিউ আপডেট করে তবে ভিউ মডেল সচেতন নয়।

এমভিভিএম - মডেল ভিউ মডেল

সুতরাং আমাদের সামনে এমভিসি এবং এমভিপি নিদর্শনগুলির সাথে, আসুন এমভিভিএম প্যাটার্নটি দেখুন এবং দেখুন এটিতে কী পার্থক্য রয়েছে:

ইনপুটটি ভিউ মডেল দিয়ে নয়, ভিউ দিয়ে শুরু হয়।

যখন ভিউটি ভিউ মডেলের একটি রেফারেন্স রাখে, ভিউ মডেলের ভিউ সম্পর্কে কোনও তথ্য নেই। এই কারণেই বিভিন্ন প্রযুক্তি এবং একটি ভিউ মডেলের মধ্যে এমনকি একাধিক ম্যাপিং সম্ভব ... এমনকি প্রযুক্তি জুড়েও। উদাহরণস্বরূপ, একটি ডাব্লুপিএফ ভিউ এবং সিলভারলাইট ভিউ একই ভিউ মডেলটি ভাগ করতে পারে।


7
"এটি কারণ
ভিউটির

@ আমিরজিয়ারতী ভিউমোডেল এমভিপি নয় তবে এমভিভিএম প্যাটার্নের অংশ।
জো

আপনি এই উদাহরণগুলি যেখানে আমরা এই প্যাটার্নটি ব্যবহার করতে পারি তার উদাহরণ দিলে আমি ভাল হব
জেকেএ

3

নীচের চিত্রটি ইরভিন ভ্যান ডের ভাল্কের লেখা নিবন্ধ থেকে প্রাপ্ত :

এমভিসি, এমভিপি এবং এমভিভিএম ব্যাখ্যা করার চিত্র - এরউইন ভান্ডারভাল্কের

নিবন্ধ পার্থক্য ব্যাখ্যা করে এবং C # কিছু কোড উদাহরণ দেয়


উপরের চিত্রগুলি বিভ্রান্তিকর নয়, এমভিসির মতো কেন ভিউ সরাসরি মডেলটিতে অ্যাক্সেস করছে? অন্যদের জন্য একই?
smkrn110

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