এমভিপি এবং এমভিসি কী এবং পার্থক্য কী?


2133

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

  1. এই নিদর্শনগুলি কী কী সমস্যাগুলি সম্বোধন করে?
  2. তারা কেমন হয়?
  3. কিভাবে তারা ব্যতিক্রম?


2
আইডিকে, তবে অনুমান করা হয় মূল এমভিসির জন্য, এটি ছোটটি ব্যবহার করার জন্য বোঝানো হয়েছিল। প্রতিটি বোতাম, লেবেল ইত্যাদির নিজস্ব দৃষ্টিভঙ্গি এবং নিয়ামক অবজেক্ট ছিল বা কমপক্ষে এটি চাচা বব দাবি করেন। আমার মনে হয় সে ছোট্ট টালকের কথা বলছিল। ইউটিউবে তার আলোচনা দেখুন, তারা আকর্ষণীয়।
এখনও_ড্রিমিং

এমভিপি ভিউ-কন্ট্রোলারকে একটি ভিউ এবং উপস্থাপক হিসাবে বিভক্ত করে
ইন্ডিয়ারেশনের

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

এগুলিকে বলা হয় আর্কিটেকচারাল প্যাটার্ন নয় ডিজাইনের ধরণ । আপনি যদি পার্থক্যটি জানতে চান, এটি দেখুন
হাসান এল-হেফনাভি

উত্তর:


1996

মডেল দেখুন-উপস্থাপকের

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

এমভিপি ওয়েব ফর্মগুলিতে পৃথক উপস্থাপনা অর্জনের জন্য খুব প্রাকৃতিক প্যাটার্ন হতে পারে। কারণ হ'ল ভিউটি সর্বদা এএসপি.এনইটি রানটাইম দ্বারা তৈরি করা হয়। উভয় বৈকল্পিক সম্পর্কে আপনি আরও জানতে পারেন ।

দুটি প্রাথমিক ভিন্নতা

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

  • প্রো: সর্বাধিক পরীক্ষারযোগ্যতা পৃষ্ঠ; দেখুন এবং মডেল পরিষ্কার পৃথকীকরণ
  • কন: আরও কাজ (উদাহরণস্বরূপ সমস্ত সেটার বৈশিষ্ট্য) আপনি নিজেরাই সমস্ত ডেটা বাঁধাই করছেন।

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

  • প্রো: ডেটাবাইন্ডিংয়ের সাহায্যে কোডের পরিমাণ হ্রাস হয়।
  • কন: কোন টেস্টেবল পৃষ্ঠ কম রয়েছে (ডেটা বাঁধার কারণে), এবং ভিউতে কম এ্যাপ্যাপুলেশন নেই যেহেতু এটি সরাসরি মডেলটির সাথে কথা বলে।

মডেল দেখুন-কন্ট্রোলার

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

    দ্য ক্রিয়াকলাপ
        -> কন্ট্রোলারে কল করুন
        -> নিয়ামক যুক্তি
        -> কন্ট্রোলার ভিউটি ফিরিয়ে দেয়।

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

উপস্থাপনা মডেল

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

উপস্থাপনা মডেল সম্পর্কে একটি এমএসডিএন নিবন্ধ এবং পৃথক উপস্থাপনা প্যাটার্নগুলি সম্পর্কে ডাব্লুপিএফ (পূর্ব প্রিজম) এর সম্মিলিত অ্যাপ্লিকেশন গাইডেন্সের একটি বিভাগ রয়েছে


27
আপনি কি এই বাক্যাংশটি পরিষ্কার করতে পারেন? এটি এমভিপি থেকে পৃথক হয় যেখানে কর্মগুলি উপস্থাপকের কাছে ভিউ হয়ে যায় through এমভিসি তে, ভিউয়ের প্রতিটি ক্রিয়া একটি ক্রিয়াকলাপের সাথে একটি কন্ট্রোলারের কলের সাথে সম্পর্কিত হয়। আমার কাছে এটি একই জিনিস বলে মনে হচ্ছে তবে আমি নিশ্চিত যে আপনি আলাদা কিছু বর্ণনা করছেন।
Panzercrisis

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

2
নোট যেটি MVC প্রায়শই ওয়েব-ফ্রেমওয়ার্কগুলির দ্বারা ব্যবহৃত হয় Laravel, যেখানে প্রাপ্ত URL টি অনুরোধগুলি (সম্ভবত ব্যবহারকারীরা তৈরি করেছেন) দ্বারা পরিচালিত হয় Controllerএবং দ্বারা উত্পাদিত এইচটিএমএল Viewক্লায়েন্টকে প্রেরণ করা হয় - সুতরাং, Viewএটি ব্যাকএন্ডের একটি অংশ এবং ব্যবহারকারী কখনও এটিকে সরাসরি অ্যাক্সেস করতে পারবেন না এবং যদি আপনি বিপরীতে কোথাও অভিজ্ঞতা অর্জন করেন তবে এটিকে এমভিসি-এক্সটেনশন (বা এমনকি লঙ্ঘন) হিসাবে বিবেচনা করুন। @ পানজারক্রিসিস, এটি ওএস-এর MVPমতো পৃথক Android) যেখানে actions route through the View to the Presenterএবং ব্যবহারকারীর কাছে সরাসরি প্রবেশাধিকার রয়েছে View
টপ-মাস্টার

454

এটি এই নকশার নিদর্শনগুলির অনেকগুলি রূপের একটি ওভারসিম্প্লিকেশন, তবে আমি এইভাবে দুজনের মধ্যে পার্থক্য সম্পর্কে ভাবতে চাই।

MVC

MVC

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

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


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

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

3
এমভিসি উদাহরণটি ভুল; মতামত এবং নিয়ন্ত্রণকারীদের মধ্যে একটি কঠোর 1: 1 সম্পর্ক রয়েছে। সংজ্ঞা অনুসারে, একটি নিয়ামক মডেলটির জন্য ইভেন্টগুলি তৈরি করতে এবং একক নিয়ন্ত্রণের জন্য একসাথে দেখতে মানব অঙ্গভঙ্গি ইনপুটকে ব্যাখ্যা করে। আরও সহজভাবে, এমভিসি শুধুমাত্র পৃথক উইজেটগুলির সাথে ব্যবহারের জন্য তৈরি হয়েছিল। একটি উইজেট, একটি দৃশ্য, একটি নিয়ন্ত্রণ।
স্যামুয়েল এ। ফালভো II

3
: @ SamuelA.FalvoII সবসময় সেখানে একটি 1: কন্ট্রোলার এবং ASP.NET MVC মধ্যে দৃশ্যের মধ্যে অনেক stackoverflow.com/questions/1673301/...
StuperUser

4
@ স্টুপারউসার - নিশ্চিত করে জানিনা যে আমি এটি লেখার সময় কী ভাবছিলাম। আপনি অবশ্যই ঠিক বলেছেন, এবং আমি যা লিখেছিলাম তা ফিরে দেখছি, আমি ভাবতে চাই যে আমার মনে অন্য কোনও প্রসঙ্গ ছিল যা আমি উচ্চারণ করতে ব্যর্থ হয়েছি। সংশোধনীর জন্য ধন্যবাদ.
স্যামুয়েল এ। ফালভো II

421

দু'জনের মধ্যে পার্থক্য সম্পর্কে টড স্নাইডারের দুর্দান্ত পোস্টের উদ্ধৃতি দিয়ে আমি এই সম্পর্কে কিছুক্ষণ আগে ব্লগ করেছি :

নিদর্শনগুলির মধ্যে মূল পার্থক্য এখানে:

এমভিপি প্যাটার্ন

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

এমভিসি প্যাটার্ন

  • কন্ট্রোলার আচরণের উপর ভিত্তি করে এবং সমস্ত দর্শন ভাগ করা যায়
  • কোন দর্শনটি প্রদর্শিত হবে তা নির্ধারণের জন্য দায়বদ্ধ হতে পারে

ওয়েবে আমি এটি খুঁজে পেতে পারি এটি সেরা ব্যাখ্যা।


15
আমি বুঝতে পারি না যে উভয় ক্ষেত্রেই পুরো বিন্দুটি সম্পূর্ণরূপে ডিক্লোল করার ক্ষেত্রে ভিউটিতে কীভাবে মডেলটির আরও বা কম ঘনিষ্ঠভাবে মিলিত হতে পারে। আমি আপনাকে কিছু ভুল বলে বোঝাতে চাইছি না - আপনি কী বোঝাতে চেয়েছেন তা নিয়ে বিভ্রান্ত।
বিল কে

18
@ পিএসটি: এমভিপি দিয়ে এটি সত্যই 1 ভিউ = 1 উপস্থাপক। এমভিসি সহ, কন্ট্রোলার একাধিক মতামত পরিচালনা করতে পারে। সত্যিই, এটি। "ট্যাবগুলি" মডেলটির মাধ্যমে প্রতিটি ট্যাবটির নিজস্ব উপস্থাপক থাকার কথা কল্পনা করে সমস্ত ট্যাবগুলির জন্য একটি নিয়ামক থাকার বিপরীতে।
জন লিমাজাপ

4
মূলত দুটি ধরণের কন্ট্রোলার রয়েছে: আপনি যেটিকে একাধিক মতামত জুড়ে ভাগ করে নেওয়ার কথা বলেছিলেন এবং যারা নির্দিষ্ট মতামত রয়েছে, তারা মূলত ভাগ করা নিয়ামকের ইন্টারফেসটি মানিয়ে নেওয়ার উদ্দেশ্যে।
Acsor

1
@ জোনলিমজাপ যাইহোক এক দৃষ্টিতে এর অর্থ কী? আইওএস প্রোগ্রামিংয়ের প্রসঙ্গে, এটি কি এক-স্ক্রিনফুল? এটি কি আইওএসের নিয়ন্ত্রককে এমভিপির চেয়ে এমভিপির মতো করে তোলে? (অন্যদিকে আপনার প্রতি স্ক্রিনে একাধিক আইওএস কন্ট্রোলারও থাকতে পারে)
হুগি

2
ওয়েল টডের এমভিসি-র ডায়াগ্রামেটিক চিত্রটি ভিউ এবং মডেলটিকে ডিকম্পল করার ধারণার সম্পূর্ণ বিরোধিতা করে। আপনি যদি চিত্রটি দেখেন তবে এটি মডেল আপডেট ভিউ (মডেল থেকে ভিউতে তীর) বলে। কোন মহাবিশ্বের এমন একটি ব্যবস্থা, যেখানে মডেল সরাসরি ভিউর সাথে সরাসরি যোগাযোগ করে, একটি বিপর্যস্ত ???
অ্যাশ

260

এখানে চিত্রগুলি যা যোগাযোগ প্রবাহকে উপস্থাপন করে

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

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


43
এমভিসি ডায়াগ্রাম সম্পর্কে আমার একটি প্রশ্ন আছে। ভিউ যেখানে ডেটা আনার জন্য যায় সেখানে আমি সেই অংশটি পাই না think আমি মনে করি নিয়ামকটি প্রয়োজনীয় ডেটা দিয়ে ভিউতে এগিয়ে যাবে।
ব্রায়ান রিজো

54
যদি কোনও ব্যবহারকারী কোনও বোতামে ক্লিক করে, তবে কীভাবে তা দর্শনটির সাথে ইন্টারঅ্যাক্ট করছে না? আমি এমভিসির মতো অনুভব করি, ব্যবহারকারী নিয়ামকের চেয়ে ভিউয়ের সাথে ইন্টারঅ্যাক্ট করে
জোনাথন

5
আমি জানি এটি একটি পুরানো উত্তর - তবে @ জোনাথনলিডার্স পয়েন্টে কেউ কি প্রতিক্রিয়া জানাতে পারে? আমি উইনফর্মের পটভূমি থেকে আসছি যদি আপনি কিছু খুব অনন্য কোডিং না করেন, আপনি যখন ইউআই / ভিউ ক্লিক করেন তখন অন্য যে কোনও কিছুর আগে সেই ক্লিকটির জ্ঞান পাওয়া যায়। কমপক্ষে, আমি যতদূর জানি?
রব পি।

6
@RobP। আমি মনে করি এই ধরণের চার্টগুলি সর্বদা হয় খুব জটিল বা খুব সাধারণ হয়ে থাকে। ইমো এমভিপি চার্টের প্রবাহটি এমভিসি অ্যাপ্লিকেশনের ক্ষেত্রেও সত্য। ভাষার বৈশিষ্ট্যগুলির উপর নির্ভর করে (ডেটা বাঁধাই / পর্যবেক্ষক) বিভিন্নতা থাকতে পারে তবে শেষ পর্যন্ত ধারণাটি হ'ল অ্যাপ্লিকেশনটির ডেটা / যুক্তি থেকে দৃষ্টিভঙ্গিটি ছড়িয়ে দেওয়া।
লুকা ফালবিয়ার

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

170

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

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

এই অত্যন্ত উত্তেজনাপূর্ণ নিবন্ধটি বিবেচনা করুন যা এই বিবিধ বাস্তবায়নগুলির বেশ কয়েকটিকে বিশদভাবে তালিকাবদ্ধ করে। আপনি খেয়াল করতে পারেন যে তারা সবাই মূলত একই জিনিসটি করছে তবে কিছুটা ভিন্নভাবে।

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


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

6
আমি এমভিপিকে একটি অ্যান্টি-প্যাটার্ন বলব না , কারণ পরবর্তী পোস্টে "... বাকি [এমভিপিসহ] কেবল [এমভিসি] এর স্বাদে আলাদা হয় ..", যার দ্বারা বোঝা যায় যে যদি এমভিপি একটি প্যাটার্নবিরোধী হত, সুতরাং এমভিসি ছিল ... এটি অন্য একটি কাঠামোর পদ্ধতির জন্য কেবল একটি স্বাদ। (এখন, কিছু নির্দিষ্ট এমভিপি বাস্তবায়ন বিভিন্ন কাজের জন্য নির্দিষ্ট কিছু এমভিসি বাস্তবায়নের চেয়ে কম বা কম আকাঙ্ক্ষিত হতে পারে ...)

@ কিউবিপ্লসোম: "আমি ব্যক্তিগতভাবে মনে করি এমভিপি সম্প্রতি এমন এক শব্দ হিসাবে পুনরায় চালু করা হয়েছে যা হয় মূলত ধর্মাবলম্বীদের মধ্যে যুক্তি হ্রাস করার জন্য যারা কিছুটা সত্যই এমভিসি কিনা তা তর্ক করে […] আমার বইগুলিতে এই কারণগুলির কোনওটিই তার অস্তিত্বকে ন্যায়সঙ্গত করে না পৃথক নকশা প্যাটার্ন। " । এটি আলাদা করার জন্য এটি যথেষ্ট আলাদা। এমভিপি-তে, ভিউটি পূর্বনির্ধারিত ইন্টারফেসটি পূরণ করতে পারে এমন কিছু হতে পারে (এমভিপিতে ভিউটি একটি স্ট্যান্ডেলোন উপাদান)। এমভিসি-তে, নিয়ামকটি একটি নির্দিষ্ট দৃষ্টির জন্য তৈরি করা হয় (যদি সম্পর্কের শৃঙ্খলাগুলি কাউকে অন্য শব্দটির জন্য মূল্যবান মনে করে)।
Hibou57

6
@ হিবিউ ৫,, এমভিসিকে ভিউটিকে ইন্টারফেস হিসাবে উল্লেখ করা বা বিভিন্ন ভিন্ন মতামতের জন্য জেনেরিক নিয়ামক তৈরি করা থেকে বিরত করার কিছুই নেই।
কবিবলস

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

110

এমভিপি: দৃশ্যটি দায়িত্বে রয়েছে।

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

এমভিসি: নিয়ামক দায়িত্বে আছেন।

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


3
"দেখুন কন্ট্রোলার সম্পর্কে জানেন না।" আমি মনে করি আপনি বোঝাতে চাইছেন যে মডেলটির সাথে ভিউয়ের কোনও যোগাযোগ নেই?
লোটাস নোটস

2
আইথার একের মধ্যে মডেলটি সম্পর্কে কখনও দেখা উচিত নয়।
ব্রায়ান লেহে

4
@ ব্রায়ান: "বেশিরভাগ ক্ষেত্রে দেখা, এটি উপস্থাপক তৈরি করে।" । আমি বেশিরভাগ বিপরীতে দেখেছি, উপস্থাপিকা মডেল এবং দেখুন উভয় প্রবর্তন করে। ঠিক আছে, ভিউ উপস্থাপককেও প্রবর্তন করতে পারে তবে এটি পয়েন্টটি আসলে সবচেয়ে স্বতন্ত্র নয়। যা সবচেয়ে বেশি গুরুত্বপূর্ণ তা জীবনকালের পরে ঘটে।
Hibou57

2
আপনি আরও উত্তর দেওয়ার জন্য নিজের উত্তরটি সম্পাদনা করতে চাইতে পারেন: যেহেতু দর্শনটি কন্ট্রোলার সম্পর্কে জানে না, ব্যবহারকারী কীভাবে কর্মগুলি, যা ব্যবহারকারীর পর্দায় প্রদর্শিত 'ভিজ্যুয়াল' উপাদানগুলির উপর সঞ্চালিত হয় (যেমন দেখুন), নিয়ন্ত্রণকারীর সাথে যোগাযোগ করা হয় ...
অ্যাশ

77

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

এমভিসি (মডেল ভিউ কন্ট্রোলার)

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

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

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

আরও রেফারেন্সের জন্য


কিন্তু MVPবিন্যাসে, যখন অ্যাপ্লিকেশনটি প্রথমবারের জন্য লোড হয়, তখন কি উপস্থাপক প্রথম দর্শনটি লোড করার জন্য দায়বদ্ধ নয়? উদাহরণস্বরূপ যেমন আমরা যখন ফেসবুক অ্যাপ্লাইটিউন লোড করি, তখন কি উপস্থাপক লগইন পৃষ্ঠা লোড করার জন্য দায়বদ্ধ নয়?
ভাইপার

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

2
এটি স্পষ্টতই ভুল ... এমভিসিতে মডেল কখনও সরাসরি দেখুন এবং বিপরীতে সরাসরি কথা বলেন না। তারা এমনকি অন্য একটি বিদ্যমান জানেন না। নিয়ামক হ'ল আঠালো যা তাদের একসাথে রাখে
মেগাএএমএএনএক্স

1
আমি অ্যাশ এবং মেগা ম্যানএক্সের সাথে একমত এমভিসি ডায়াগ্রামে, তীরটি মডেল থেকে দেখানো ভিউ থেকে মডেল (বা ভিউমোডেল, বা ডিটিও) হওয়া উচিত; কারণ মডেলটি ভিউ সম্পর্কে জানেন না, তবে ভিউটি মডেল সম্পর্কে জানেন।
Jboy Flaga

57

প্রশ্নের অনেক উত্তর রয়েছে, তবে আমি অনুভব করেছি যে দু'জনের তুলনায় পরিষ্কারভাবে কিছু সহজ উত্তর দরকার for কোনও এমভিপি এবং এমভিসি অ্যাপে কোনও চলচ্চিত্রের নামের জন্য অনুসন্ধান করা হলে আমি এখানে আলোচনাটি তৈরি করেছি:

ব্যবহারকারী: ক্লিক করুন…

দেখুন : কে সে? [ এমভিপি | এমভিসি ]

ব্যবহারকারী: আমি সন্ধানের বোতামটিতে ক্লিক করেছি ...

দেখুন : ঠিক আছে, একটি সেকেন্ড ধরে রাখুন…। [ এমভিপি | এমভিসি ]

( উপস্থাপককে কল করা দেখুন | নিয়ন্ত্রণকারী …) [ এমভিপি | এমভিসি ]

ভিউ : আরে উপস্থাপক | কন্ট্রোলার , একজন ব্যবহারকারী সবেমাত্র অনুসন্ধান বোতামে ক্লিক করেছেন, আমি কী করব? [ এমভিপি | এমভিসি ]

উপস্থাপক | কন্ট্রোলার : আরে ভিউ , সেই পৃষ্ঠাতে কোনও অনুসন্ধান শব্দ রয়েছে? [ এমভিপি | এমভিসি ]

দেখুন : হ্যাঁ,… এটি এখানে… "পিয়ানো" [ এমভিপি | এমভিসি ]

উপস্থাপকের : ধন্যবাদ দেখুন ... এদিকে আমি অনুসন্ধান শব্দ আপ দেখছি মডেল , দয়া করে তাকে / তার একটি অগ্রগতি বার প্রদর্শন [ সবচেয়ে মূল্যবান খেলোয়াড় | এমভিসি ]

( উপস্থাপক | নিয়ন্ত্রণকারী মডেলকে কল করছে …) [ এমভিপি | এমভিসি ]

উপস্থাপক | নিয়ামক : আরে মডেল , এই অনুসন্ধান শব্দটির সাথে আপনার কোনও মিল আছে ?: "পিয়ানো" [ এমভিপি | এমভিসি ]

মডেল : আরে উপস্থাপক | কন্ট্রোলার , আমাকে পরীক্ষা করতে দিন… [ এমভিপি | এমভিসি ]

( মডেল মুভি ডেটাবেজে একটি জিজ্ঞাসা করছে…) [ এমভিপি | এমভিসি ]

( কিছুক্ষণ পর ... )

-------------- এখান থেকেই এমভিপি এবং এমভিসি বিচ্যুতি শুরু করে ---------------

মডেল : আমি আপনার জন্য একটি তালিকা পেয়েছি, উপস্থাপক , এটি এটি জেএসওনে আছে "[{" নাম ":" পিয়ানো শিক্ষক "," বছর ": 2001}, {" নাম ":" পিয়ানো "," বছর ": 1993} ] ”[ এমভিপি ]

মডেল : কিছু ফলাফল উপলব্ধ, কন্ট্রোলার । আমি আমার উদাহরণে একটি ফিল্ড ভেরিয়েবল তৈরি করেছি এবং ফলাফল দিয়ে এটি পূরণ করেছি। এটির নাম "অনুসন্ধানের ফলাফলগুলি তালিকা" [ এমভিসি ]

( উপস্থাপক | নিয়ন্ত্রণকারী মডেলকে ধন্যবাদ জানায় এবং ভিউতে ফিরে আসে ) [ এমভিপি | এমভিসি ]

উপস্থাপক : অপেক্ষার দৃশ্যের জন্য ধন্যবাদ , আমি আপনার জন্য মিলে যাওয়া ফলাফলের একটি তালিকা পেয়েছি এবং সেগুলি উপস্থাপনযোগ্য বিন্যাসে সাজিয়েছি: ["পিয়ানো শিক্ষক 2001", "পিয়ানো 1993"]। অনুভূমিক তালিকায় এটি ব্যবহারকারীর কাছে প্রদর্শন করুন। এছাড়াও দয়া করে এখন অগ্রগতি বারটি লুকান [ এমভিপি ]

কন্ট্রোলার : অপেক্ষার ভিউয়ের জন্য ধন্যবাদ , আমি আপনার অনুসন্ধানের অনুসন্ধানের বিষয়ে মডেলকে জিজ্ঞাসা করেছি । এটি বলেছে যে এটি মিলে যাওয়া ফলাফলের একটি তালিকা খুঁজে পেয়েছে এবং এটিকে তার উদাহরণের মধ্যে "অনুসন্ধানের ফলাফলগুলি তালিকাভুক্ত" নামক একটি ভেরিয়েবলে সংরক্ষণ করেছে। আপনি সেখান থেকে এটি পেতে পারেন। এছাড়াও দয়া করে এখন অগ্রগতি বারটি লুকান [ এমভিসি ]

দেখুন : আপনাকে অনেক উপস্থাপক [ এমভিপি ] ধন্যবাদ

দেখুন : আপনাকে "কন্ট্রোলার" [ এমভিসি ] ধন্যবাদ (এখন দেখুন নিজেই প্রশ্ন তুলছে: মডেল থেকে প্রাপ্ত ফলাফলগুলি আমি ব্যবহারকারীর সামনে কীভাবে উপস্থাপন করব ? সিনেমাটির প্রযোজনা বছরটি প্রথম বা শেষ হওয়া উচিত ...? উচিত? উল্লম্ব বা অনুভূমিক তালিকায় থাকবেন? ...)

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


মূলত আপনি যা বলতে চাইছেন তা হল নিয়ামকটি মনের যুক্তিকে মাইক্রোম্যানেজ করে? সুতরাং এটি কী হয় এবং কীভাবে দেখা যায় তা উপস্থাপনের মাধ্যমে দর্শনকে ঘন করে তোলে?
রাদু

@ রাদু, না, এটি মাইক্রোম্যানেজ করে না, উপস্থাপকটি দৃশ্যটি প্যাসিভ বা বোবা
বানিয়েই করেন

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

35
  • এমভিপি = মডেল-ভিউ-উপস্থাপক
  • এমভিসি = মডেল-দেখুন-নিয়ামক

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

2
মডেল ভিউ আপডেট করে। এবং এটি এখনও একটি decoupled সিস্টেম?
অ্যাশ

34

মডেল দেখুন-কন্ট্রোলার

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

  • ডেটা এবং ব্যবসায়িক যুক্তি পরিচালনা করার জন্য মডেল
  • ব্যবহারকারী ইন্টারফেস এবং অ্যাপ্লিকেশন পরিচালনা করার জন্য নিয়ামক
  • গ্রাফিকাল ইউজার ইন্টারফেস অবজেক্ট এবং উপস্থাপনা পরিচালনা করার জন্য দর্শন Views

এটিকে আরও স্পষ্ট করতে, আসুন একটি শপিং তালিকা অ্যাপ্লিকেশনটি কল্পনা করুন। আমরা যা চাই তা হ'ল এই সপ্তাহে আমাদের প্রতিটি আইটেমের নাম, পরিমাণ এবং দাম কিনতে হবে। নীচে আমরা এমভিসি ব্যবহার করে কীভাবে এই কার্যকারিতাটির কিছু বাস্তবায়ন করতে পারি তা বর্ণনা করব।

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

মডেল দেখুন-উপস্থাপকের

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

আপনি যদি সাধারণ প্রয়োগের সাথে একটি নমুনা দেখতে চান তবে দয়া করে এই গিটহাব পোস্টটি দেখুন

অনুসন্ধানের একটি কংক্রিট ওয়ার্কফ্লো এবং একটি ডাটাবেস থেকে ব্যবহারকারীদের তালিকা প্রদর্শন এইভাবে কাজ করতে পারে: এখানে চিত্র বর্ণনা লিখুন

এমভিসি এবং এমভিপি নিদর্শনগুলির মধ্যে পার্থক্য কী ?

এমভিসি প্যাটার্ন

  • কন্ট্রোলার আচরণের উপর ভিত্তি করে এবং সমস্ত দর্শন ভাগ করা যায়

  • কোন দৃশ্যটি প্রদর্শন করবেন তা নির্ধারণের জন্য দায়বদ্ধ হতে পারে (ফ্রন্ট কন্ট্রোলার প্যাটার্ন)

এমভিপি প্যাটার্ন

  • মডেলটির সাথে ভিউ আরও আলগাভাবে মিলিত হয়। উপস্থাপকটি মডেলটিকে দেখার সাথে আবদ্ধ করার জন্য দায়বদ্ধ।

  • ইউনিট পরীক্ষা করা সহজ কারণ দেখার সাথে ইন্টারঅ্যাকশনটি একটি ইন্টারফেসের মাধ্যমে

  • সাধারণত উপস্থাপক মানচিত্র এক এক দেখুন। জটিল ভিউগুলিতে একাধিক উপস্থাপক থাকতে পারে।


2
না, এমভিসি তে ভিউ এবং মডেলের মধ্যে সরাসরি সংযোগ নেই। আপনার চিত্রটি ভুল
üzgür

33

মনে রাখার মতো বিষয় হ'ল বিভিন্ন ধরণের এমভিপিও রয়েছে। ফোলার প্যাটার্নটি দুটি ভাগে ভাগ করেছেন - প্যাসিভ ভিউ এবং তদারকি নিয়ন্ত্রক।

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

আপনার বাস্তবায়ন এই জাতীয় কিছু দেখতে পারে:

public class CustomerView : ICustomerView
{
    public string Name
    { 
        get { return txtName.Text; }
        set { txtName.Text = value; }
    }
}

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

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

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

আমি মনে করি যে আমি ইউআই আর্কিটেকচারে সবচেয়ে ভাল উত্স খুঁজে পেয়েছি তা হ'ল জেরেমি মিলার দ্য বিল্ড ইওর নিজের সিএবি সিরিজ সারণীর বিষয়বস্তুতে ব্লগ পোস্টের সিরিজটি করেছেন । তিনি এমভিপি-র সমস্ত স্বাদ coveredেকে রেখেছিলেন এবং সেগুলি কার্যকর করার জন্য সি # কোড দেখিয়েছেন।

ইউ-কার্ডে পুনর্দর্শনকৃত সিলভারলাইটের প্রসঙ্গে মডেল-ভিউ-ভিউমোডেল প্যাটার্ন সম্পর্কে আমি ব্লগ করেছি : ভিউমোডেল প্যাটার্নটি বাস্তবায়ন করছি


25

তারা প্রত্যেকে বিভিন্ন সমস্যার সমাধান করে এবং এমনকি নীচের মতো কিছু একসাথে একত্রিত করা যায়

সম্মিলিত প্যাটার্ন

এখানে এমভিসি, এমভিপি এবং এমভিভিএমের একটি সম্পূর্ণ তুলনাও রয়েছে


1
অতিরিক্ত জটিলতার পরিবর্তে আপনি প্রশ্নের উত্তর দিতে পারতেন। আমাদের বেশিরভাগই এখানে আছেন। এমভিপি এবং এমভিসি-র মধ্যে তুলনার জন্য অনুসন্ধান করা হয়েছে এবং এখানে পুনঃনির্দেশিত হয়েছে এবং আপনি সেই স্থাপত্যগুলির সামঞ্জস্যের কথা বলছেন যা ওপির সাথে সম্পর্কিত নয়।
ফরিদ

18

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

এমভিসি বনাম এমভিপি-র মধ্যে পার্থক্য সম্পর্কে এখানে একটি আলোচনা রয়েছে।

পার্থক্যটি হ'ল একটি এমভিসি অ্যাপ্লিকেশনটিতে traditionতিহ্যগতভাবে দৃষ্টিভঙ্গি থাকে এবং নিয়ামকটি একে অপরের সাথে নয়, তবে মডেলটির সাথে যোগাযোগ করেন।

এমভিপি ডিজাইনগুলির উপস্থাপকটি মডেলটি অ্যাক্সেস করে এবং দর্শনটির সাথে ইন্টারঅ্যাক্ট করে।

এটি বলার পরে, এএসপি.এনইটি এমভিসি এই সংজ্ঞাগুলি দ্বারা একটি এমভিপি কাঠামো হয় কারণ কন্ট্রোলার ভিউকে পপুলেট করার জন্য মডেলটিকে অ্যাক্সেস করে যা বোঝায় কোন যুক্তি নেই (কেবলমাত্র নিয়ামকের দ্বারা সরবরাহিত ভেরিয়েবলগুলি প্রদর্শিত হয়)।

এমভিপি থেকে সম্ভবত এএসপি.নেট এমভিসি পার্থক্য সম্পর্কে ধারণা পেতে স্কট হ্যানসেলম্যানের এই মিক্স উপস্থাপনাটি দেখুন


7
এমভিসি এবং এমভিপি ফ্রেমওয়ার্ক নয়, নিদর্শন। আপনি যদি সত্যই ভাবেন, topic বিষয়টি নেট ডেস্কটপটি সম্পর্কে ছিল, তবে এটি "ইন্টারনেট" শোনার এবং এটি IE সম্পর্কে ভাবার মতো।
তেরেখো

খুব নিশ্চিত যে প্রশ্নটি 2008 সালে প্রথমবার জিজ্ঞাসা করা হয়েছিল, তখন থেকেই তা উল্লেখযোগ্যভাবে বিকশিত হয়েছে Additionally অতিরিক্তভাবে, আমার উত্তরটির দিকে ফিরে তাকান (এবং এটি 4 বছর আগের ছিল তাই আপনার চেয়ে আমার অনেক বেশি প্রসঙ্গ নেই) আমি বলতে চাই যে আমি সাধারণত শুরু করি এবং তারপরে .NET MVC কে কংক্রিটের উদাহরণ হিসাবে ব্যবহার করুন।
ম্যাট মিচেল

13

উভয়ই উপস্থাপনা এবং ব্যবসায়ের যুক্তিগুলিকে পৃথক করার চেষ্টা করছে এমন নকশাগুলি, ইউআই দিক থেকে ব্যবসায় যুক্তিটিকে ডিকপল করে

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

উভয়ই টিডিডি সক্ষম করে এবং ডাউনসাইড এবং আপসাইড করে।

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

এই বিষয়ে আরও কিছু বিশদ দেওয়ার জন্য এখানে আরও একটি ব্লগ পোস্ট লিঙ্ক রয়েছে

http://blog.vuscode.com/malovicn/archive/2007/12/18/model-view-presenter-mvp-vs-model-view-controller-mvc.aspx


9

আমি এমভিপি এবং এমভিসি উভয়ই ব্যবহার করেছি এবং যদিও আমরা বিকাশকারীগণ উভয়ই প্যাটার্নের প্রযুক্তিগত পার্থক্যের দিকে মনোনিবেশ করার ঝোঁক রাখি যদিও আইএমএইচও-তে এমভিপি-র জন্য বিন্দু অন্য যে কোনও কিছুর চেয়ে সহজতরকরণের সাথে সম্পর্কিত।

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

আমার অভিজ্ঞতা আমাকে বলেছে যে ওয়েব ফর্ম থেকে এমভিপিতে এবং তারপরে এমভিপি থেকে এমভিসিতে একটি দল সরিয়ে নেওয়া অপেক্ষাকৃত সহজ; ওয়েব ফর্মগুলি থেকে এমভিসিতে স্থানান্তর করা আরও কঠিন।

আমি এখানে আমার এক বন্ধু এমভিপি এবং এমভিসি সম্পর্কে প্রকাশিত একটি নিবন্ধের একটি লিঙ্ক এখানে রেখেছি।

http://www.qsoft.be/post/Building-the-MVP-StoreFront-Gutthrie-style.aspx


8

এমভিপিতে ভিউ উপস্থাপকের কাছ থেকে ডেটা আঁকেন যা মডেল থেকে ডেটা আঁক এবং প্রস্তুত করে / স্বাভাবিক করে দেয় এমভিসি-তে নিয়ামক মডেল থেকে ডেটা আঁকেন এবং দৃশ্যে ধাক্কা দিয়ে সেট করুন।

এমভিপিতে আপনার একাধিক ধরণের উপস্থাপক এবং একক উপস্থাপক বিভিন্ন একাধিক ভিউয়ের সাথে কাজ করে একক দর্শন রাখতে পারেন।

এমভিপি সাধারণত কোনও ধরণের বাঁধাই কাঠামো ব্যবহার করে, যেমন মাইক্রোসফ্ট ডাব্লুপিএফ বাইন্ডিং ফ্রেমওয়ার্ক বা এইচটিএমএল 5 এবং জাভার জন্য বিভিন্ন বাঁধার ফ্রেমওয়ার্ক।

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

সুতরাং, উদাহরণস্বরূপ, যদি মডেলটি একটি গাড়ি হয়, তবে উপস্থাপক কোনও প্রকারের গাড়ি উপস্থাপক, গাড়ির বৈশিষ্ট্য (বছর, নির্মাতা, আসন ইত্যাদি) দর্শনে প্রকাশ করেন। দর্শনটি জানে যে 'গাড়ি নির্মাতা' নামক পাঠ্য ক্ষেত্রটির উপস্থাপক নির্মাতার সম্পত্তি প্রদর্শন করা দরকার।

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

এই বাঁধাই কাঠামো, যদি আপনি এটি সরিয়ে ফেলেন তবে এটি আসলে নিয়ামক :-)

এবং তাই, আপনি এমভিসির বিবর্তন হিসাবে এমভিপিকে দেখতে পারেন।

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

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


6

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

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


4

আমি মনে করি এরউইন ভান্ডারভালকের এই চিত্রটি (এবং এর সাথে প্রবন্ধটি ) এমভিসি, এমভিপি এবং এমভিভিএম, তাদের মিল এবং তাদের পার্থক্যের সর্বোত্তম ব্যাখ্যা। নিবন্ধটি এ "MVC, সবচেয়ে মূল্যবান খেলোয়াড় এবং MVVM" জিজ্ঞাসার জন্য সার্চ ইঞ্জিন ফলাফলে দেখা না কারণ প্রবন্ধের শিরোনাম শব্দের "MVC" এবং "সবচেয়ে মূল্যবান খেলোয়াড়" ধারণ করে না; তবে এটিই সেরা ব্যাখ্যা, আমি মনে করি।

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

( নিবন্ধটি চাচা বব মার্টিন তার একটি আলোচনায় যা বলেছিলেন তার সাথেও মেলে: এমভিসি মূলত ছোট UI উপাদানগুলির জন্য তৈরি হয়েছিল, সিস্টেমের আর্কিটেকচারের জন্য নয়)


3

এমভিসির অনেক সংস্করণ রয়েছে, এই উত্তরটি ছোট্টকলের মূল এমভিসি সম্পর্কে। সংক্ষেপে, এটি হয় এমভিসি বনাম এমভিপি এর চিত্র

এই টক ড্রয়েডকন এনওয়াইসি 2017 - আর্কিটেকচার উপাদানগুলির সাথে পরিষ্কার অ্যাপ্লিকেশন ডিজাইন এটি স্পষ্ট করে

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



5
এটি একটি ভুল উত্তর। বিভ্রান্ত হবে না। যেমন @ রডি লিখেছেন, ভিউ এবং মডেলের মধ্যে কোনও ইন্টারঅ্যাকশন নেই।
শন মেহান

এমভিসি চিত্রটি সঠিক নয় বা সর্বোত্তম বিভ্রান্তিকর, দয়া করে এই উত্তরের দিকে কোনও মনোযোগ দিন না।
জয়

2
@ জে 1 বি আপনার কী এমভিসি "সঠিক" বলে মনে করেন? এই উত্তরটি মূল এমভিসি সম্পর্কে। আরও অনেক এমভিসি রয়েছে (আইওএসের মতো) যা প্ল্যাটফর্মের সাথে মানিয়ে নিতে পরিবর্তিত হয়েছিল, বলুনUIKit
onmyway133

তীর মানে কি?
সমস্যাসমূহ

3

নেই এই আঙ্কেল বব থেকে চমৎকার ভিডিও যেখানে তিনি সংক্ষিপ্তভাবে ব্যাখ্যা MVC & সবচেয়ে মূল্যবান খেলোয়াড় শেষে।

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

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

আমি আশা করি এটি আরও ভালভাবে সহায়তা করে।


2
চাচা বব থেকে গুরুত্বপূর্ণ বিষয়: মূলত ট্রাইগভে রেইনসকাগ আবিষ্কার করেছিলেন, এমভিসি প্রতিটি উইজেটের জন্য পুরো ফর্মটি নয় meant
বাসিল বার্ক

2

আপনি অ্যাকশন-ডোমেন-প্রতিক্রিয়াকারী ( এডিআর ) সম্পর্কে ভুলে গেছেন ।

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

কিছু লোক ভুলে যেতে থাকে যে এমভিসি 70 এর শেষের দিকে তৈরি হয়েছিল " , এবং ওয়েবটি কেবলমাত্র 80" / 90 এর প্রথম দিকে "তৈরি করা হয়েছিল M , মডেল এবং ভিউ একসাথে বিদ্যমান থাকবে exist

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

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

দ্রষ্টব্য: উইকিপিডিয়া জানিয়েছে যে " প্রতিটি এডিআর ক্রিয়াটি পৃথক শ্রেণি বা ক্লোজার দ্বারা উপস্থাপিত হয়। " এই না অগত্যা সত্য। বেশ কয়েকটি ক্রিয়া একই নিয়ামকের মধ্যে থাকতে পারে এবং প্যাটার্নটি এখনও একই।


2

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


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

1
উইকিপিডিয়ায় এমভিসি দেখুন, এটি ঠিক কিভাবে এটি কাজ করে।
ক্লাইভ জেফারিজ

1
পাঠকরা এটি পছন্দ করুন বা না করুন, গুগলিংয়ের মাধ্যমে পাওয়া যায় এমন প্রচুর উত্স বলে যে এমভিসিতে ভিউটি মডেলের আপডেটগুলি সাবস্ক্রাইব করে। এবং কিছু ক্ষেত্রে এমনকি নিয়ামকও হতে পারে এবং তাই এই জাতীয় আপডেটগুলি ডেকে আনে । যদি আপনি এটি পছন্দ করেন না, তবে সেই নিবন্ধগুলিতে অভিযোগ করুন, বা 'বাইবেল' বলে মনে করেন যে আপনি কেবলমাত্র বৈধ উত্স বলে মনে করেন, কেবল উত্তরগুলি উত্তরের পরিবর্তে কেবল সেখানে উপলব্ধ অন্যান্য তথ্যকে রিলে করে দেয়!
আন্ডারস্কোর_ডি

1
শব্দটির শব্দটি অবশ্যই উন্নত করা যেতে পারে তবে সত্য যে ভিউ এমভিসিতে মডেলটির পরিবর্তনের জন্য সাবস্ক্রাইব করে। মডেলটিকে এমভিসিতে ভিউটি জানা দরকার নেই।

আপনাকে ধন্যবাদ .. এটি আমাকে অনেক সাহায্য করেছে
ডিভাইন রেশ ২

1
  • এমভিসি-তে, ভিউয়ের ইউআই অংশ রয়েছে, নিয়ামক হ'ল ভিউ এবং মডেলের মধ্যে মধ্যস্থতাকারী এবং মডেলটিতে ব্যবসায়িক যুক্তি রয়েছে।
  • এমভিপিতে, ভিউতে ইউআই এবং উপস্থাপক উভয়ই প্রয়োগ রয়েছে কারণ এখানে উপস্থাপক কেবল একটি ইন্টারফেস এবং মডেল একই, যার অর্থ ব্যবসায় যুক্তিযুক্ত।

-1

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

এমভিপি মানে মডেল - দেখুন-উপস্থাপক। এটি 2007 এর প্রথম দিকে একটি ছবিতে আসে যেখানে মাইক্রোসফ্ট স্মার্ট ক্লায়েন্ট উইন্ডোজ অ্যাপ্লিকেশনগুলি প্রবর্তন করে।

একজন উপস্থাপক এমভিপিতে একটি তত্ত্বাবধানের ভূমিকা হিসাবে অভিনয় করছেন যা মডেলগুলি থেকে দর্শন ইভেন্টগুলি এবং ব্যবসায়িক যুক্তিগুলিকে বাধ্যতামূলক করে।

ভিউ ইভেন্টের বাইন্ডিং উপস্থাপনায় একটি ভিউ ইন্টারফেস থেকে প্রয়োগ করা হবে।

দৃশ্যটি ব্যবহারকারী ইনপুটগুলির জন্য সূচনাকারী এবং তারপরে ইভেন্টগুলি উপস্থাপকের কাছে প্রেরণ করে এবং উপস্থাপক ইভেন্টের বাইন্ডিংগুলি পরিচালনা করে এবং মডেলগুলি থেকে ডেটা পান gets

পেশাদাররা: দর্শনটিতে কেবলমাত্র ইউআই রয়েছে কোনও লজিস্টিক নয় উচ্চ স্তরের পরীক্ষারযোগ্যতা

কনস: ইভেন্ট বাইন্ডিংগুলি প্রয়োগ করার সময় বিট জটিল এবং আরও বেশি কাজ

MVC

এমভিসি মানে মডেল-ভিউ-কন্ট্রোলার। নিয়ামক মডেল তৈরি এবং বাইন্ডিং মডেলগুলির সাথে দর্শন উপস্থাপনের জন্য দায়বদ্ধ।

নিয়ামক হ'ল সূচনাবিদ এবং এটি স্থির করে যে কোন ভিউ রেন্ডার করতে হবে।

পেশাদাররা: একক দায়িত্বের নীতিমালার উপর উচ্চ স্তরের পরীক্ষারযোগ্যতার উপর জোর দিন

কনস: কখনও কখনও নিয়ন্ত্রণকারীদের জন্য অত্যধিক কাজের চাপ, যদি একই নিয়ামকটিতে একাধিক ভিউ রেন্ডার করার চেষ্টা করা হয়।

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