এমভিসির তুলনায় এমভিপির উন্নতিগুলি কী কী?


49

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

তারা কী সমস্যার মুখোমুখি হয়েছিল, যে এমভিসি সমাধান করে না (বা খারাপভাবে সমাধান করেছে), তবে এমভিপি সমাধান করতে পারে? এমভিপি কোন সমস্যার সমাধানের উদ্দেশ্যে?

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

আমি যে নিবন্ধটি পড়েছিলাম তার একটিতে বলা হয়েছিল:

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

সুতরাং, আমি বুঝতে পারি না, তবে এটি কি অন্য কোনও উপায়ে হতে পারে, যেমন জিইউআই উপাদানগুলি নিজের দ্বারা ব্যবহারকারী ইনপুট পরিচালনা করে না? এবং "নিজের দ্বারা পরিচালিত" এর অর্থ কী?



4
আমি মনে করি এটি কেবল "দ্য সম্রাটের নতুন জামাকাপড়", মিকিয়েসফ্টের একটি নতুন বাজওয়ার্ড।
কিওয়ার্টি_সো

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

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

11
আপনি যে ধরণের উত্তর চান তা এই নিদর্শনগুলি ব্যবহার করে কিছু তৈরি করা। তাহলে আপনি আলোকিত হবেন।
রবার্ট হার্ভে

উত্তর:


63

এমভিসি ধারণাগতভাবে মার্জিত:

  • ব্যবহারকারী ইনপুট নিয়ামক দ্বারা পরিচালিত হয়
  • নিয়ামক মডেল আপডেট
  • মডেল ভিউ / ইউজার ইন্টারফেস আপডেট করে
           +---+
      +----| V |<----+
user  |    +---+     | updates
input |              |
      v              |
    +---+          +---+
    | C |--------->| M |
    +---+ updates  +---+

তবে: এমভিসিতে ডেটা এবং ইভেন্ট-প্রবাহটি বিজ্ঞপ্তিযুক্ত। এবং ভিউতে প্রায়শই উল্লেখযোগ্য যুক্তি থাকবে (ব্যবহারকারীর ক্রিয়াগুলির জন্য ইভেন্ট হ্যান্ডলারগুলি) like একসাথে, এই বৈশিষ্ট্যগুলি সিস্টেমটিকে পরীক্ষা করা কঠিন এবং বজায় রাখা কঠিন করে তোলে।

এমভিপি আর্কিটেকচার একটি উপস্থাপকের সাথে নিয়ামককে প্রতিস্থাপন করে, যা দর্শন এবং মডেলটির মধ্যে মধ্যস্থতা করে। এটি সিস্টেমকে লিনিয়ারাইজ করে:

       user input         updates
+---+ -----------> +---+ --------> +---+
| V |              | P |           | M |
+---+ <----------- +---+ <-------- +---+
        updates            updates

এর নিম্নলিখিত সুবিধা রয়েছে:

  • যুক্তি (ইভেন্ট হ্যান্ডলার এবং ব্যবহারকারী ইন্টারফেসের মতো অবস্থা) উপস্থাপনা থেকে উপস্থাপককে স্থানান্তরিত করা যেতে পারে।

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

  • যেহেতু ইউজার ইন্টারফেসটি অ্যাপ্লিকেশন যুক্তি থেকে বিচ্ছিন্ন, উভয়ই স্বাধীনভাবে বিকাশ করা যায়।

তবে এই পদ্ধতির কিছু ত্রুটিও রয়েছে:

  • এটি আরও পরিশ্রম প্রয়োজন।
  • উপস্থাপক সহজেই অবিস্মরণীয় "godশ্বর শ্রেণিতে" রূপান্তর করতে পারেন।
  • অ্যাপ্লিকেশনটির একটি এমভিপি অক্ষ নেই, তবে একাধিক অক্ষ: ব্যবহারকারী ইন্টারফেসের প্রতিটি স্ক্রিন / উইন্ডো / প্যানেলের জন্য একটি। এটি হয় আপনার আর্কিটেকচারকে সহজতর করতে পারে বা মারাত্মকভাবে এটিকে অতিরিক্ত জটিল করে তুলতে পারে।

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

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

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

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

9
@ রবার্টহারভে আমি যুক্তি দিয়ে বলব যে ওয়েবটি "এমভিসি" বলে তা আসলে মূল সংজ্ঞা দ্বারা আসলে কখনও "এমভিসি" ছিল না। যে কেউ সংক্ষিপ্ত বিবরণ হাইজ্যাক করেছে তাকে বোঝা শব্দটি চয়ন করার জন্য এবং সবাইকে বিভ্রান্ত করার জন্য মাথার উপরের দিকে আঘাত করা উচিত।
jpmc26

6

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

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