MVVM में MVC और ViewModel में नियंत्रक के बीच अंतर क्या है?


21

मैं एमवीसी और एमवीवीएम के बीच अंतर स्पष्ट रूप से नहीं देख सकता। मुझे लगता है कि ViewModel में कमांड एक कंट्रोलर में एक्शन विधि की तरह है। और नियंत्रक और ViewModel दोनों डेटा बाइंडिंग के माध्यम से मॉडल की स्थिति को संशोधित करने के बाद स्वयं को ताज़ा करने के लिए दृश्य को सूचित करेंगे। दो पैटर्न के बीच मुख्य अंतर क्या है?

जवाबों:


25

नियंत्रक और ViewModel विभिन्न तरीकों से भिन्न होते हैं।

MVC में कंट्रोलर व्यू को जानता है, यह व्यू को बदल सकता है। यह मॉडल को भी जानता है और इसे कॉल कर सकता है। MVVM में एक ViewModel व्यू का एक सार प्रतिनिधित्व है और यह ठोस UI को नहीं जानता है, यह मॉडल को इस तरह से लपेटता है ताकि इसे वांछित के रूप में प्रदर्शित किया जा सके।

शास्त्रीय एमवीसी में, एक नियंत्रक केवल मॉडल के साथ बातचीत करने के लिए व्यू की एक रणनीति है। वास्तव में, कभी-कभी एक नियंत्रक भी आवश्यक नहीं होता है। MVVM में आपको इसकी आवश्यकता नहीं है, क्योंकि आपके पास अलग-अलग व्यवहार की आवश्यकता होने पर एक ही दृश्य के लिए अलग-अलग ViewModels हो सकते हैं। MVC में आप मॉडल के साथ संवाद करने के लिए ReadOnlyController या एक AdminController उदाहरण हो सकता है। MVVM में आपके पास सिर्फ दो ViewModels हो सकते हैं और आप वह चुनेंगे जो आपको व्यू के लिए चाहिए।

लेकिन उनमें कुछ समानताएँ हैं। दोनों पैटर्न में, व्यू एक पर्यवेक्षक है । शास्त्रीय MVC में, दृश्य मॉडल का एक पर्यवेक्षक है, MVVM में यह ViewModel का एक पर्यवेक्षक है।

दोनों पैटर्न चिंताओं को अलग करने के लिए हैं। एमवीवीएम मुख्य रूप से उपयोग में यूआई तकनीक से पूरी तरह से स्वतंत्र, व्यू का अमूर्त प्रदान करने का लक्ष्य रखता है। MVC उस तक नहीं जाता है। यह प्राथमिक ध्यान चिंताओं को अलग करने पर है, ताकि आप व्यापार तर्क (मॉडल) को ध्यान में न रखें।

हो सकता है कि आपको मेरा यह उत्तर भी इसी तरह के प्रश्न के लिए मददगार लगे।

अंत में, मुझे कहना चाहिए कि दोनों पैटर्न एक ही परिवार के हैं। MVP, जिनमें से MVVM एक वंशज है, MVC का सहोदर है। यदि आप मार्टिन फावलर की वेबसाइट के इस लिंक को अधिक जानना चाहते हैं, तो वह विस्तार से बताते हैं।


क्या आपको नहीं लगता कि इन मॉडल-व्यू आर्किटेक्चर को लागू करने वाले लोगों द्वारा सबसे अच्छा समझा जाता है। मेरा मानना ​​है कि यह डेवलपर के लिए पसंद की बात है। कोई MVC या MVVM का चयन करता है, इस पर निर्भर करता है कि वह ओवर-हेड (MVVM के मामले में) के साथ दृश्य के बारे में कुल अमूर्त चाहता है।
पंकज उपाध्याय

@ पंकज उपाध्याय: आपको किसका उपयोग करना चाहिए यह आपकी आवश्यकताओं और प्रौद्योगिकी की पसंद पर निर्भर करता है और साथ ही आपके प्लेटफ़ॉर्म की आइडिओसंक्रेसीज़ पर भी निर्भर करता है।
फाल्कन

मेरा मानना ​​है कि एमवीसी आर्किटेक्चर किसी भी चीज के लिए काफी अच्छा है, लेकिन ऐसा इसलिए हो सकता है क्योंकि मुझे ऐसी समस्या का सामना नहीं करना पड़ा है जो विशेष रूप से एमवीवीएम की आवश्यकता है। IMO, आपको निश्चित रूप से दृश्य पर कुछ नियंत्रण रखने की आवश्यकता है क्योंकि इसे बिल्कुल ढीला करने से भविष्य के उन्नयन में अधिक त्रुटियां बढ़ेंगी
पंकज उपाध्याय

1
@ पंकज उपाध्याय: यदि आप विभिन्न यूआई प्रौद्योगिकियों के लिए एक ही तर्क का उपयोग करना चाहते हैं तो एमवीपी बेहतर है। मुझे नहीं लगता कि आपको दृश्य पर कुछ नियंत्रण की आवश्यकता है। यह पूरी तरह से स्वतंत्र हो सकता है और आप ViewModels का परीक्षण कर सकते हैं - यदि बेहतर नहीं है। बेहतर पृथक्करण भी डिजाइनरों को लाभान्वित करता है क्योंकि परियोजना पर काम को बेहतर ढंग से विभाजित किया जा सकता है।
फाल्कन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.