MVC बनाम MVVM – उनके बीच अंतर

एमवीसी और एमवीवीएम के बीच मुख्य अंतर

  • MVC फ्रेमवर्क एक आर्किटेक्चरल पैटर्न है जो किसी एप्लिकेशन को तीन मुख्य तार्किक घटकों मॉडल, व्यू और कंट्रोलर में विभाजित करता है। दूसरी ओर, MVVM मार्क-अप लैंग्वेज या GUI कोड की मदद से ग्राफिकल यूजर इंटरफेस के विकास को अलग करने की सुविधा देता है
  • MVC में, नियंत्रक अनुप्रयोग का प्रवेश बिंदु होता है, जबकि MVVM में, दृश्य अनुप्रयोग का प्रवेश बिंदु होता है।
  • एमवीसी मॉडल घटक का परीक्षण उपयोगकर्ता से अलग से किया जा सकता है, जबकि एमवीवीएम अलग इकाई परीक्षण के लिए आसान है, और कोड ईवेंट-संचालित है।
  • MVC आर्किटेक्चर कंट्रोलर और व्यू के बीच "एक-से-कई" संबंध स्थापित करता है, जबकि MVVM आर्किटेक्चर व्यू और व्यू मॉडल के बीच "एक-से-कई" संबंध परिभाषित करता है।

एमवीवीएम और एमवीसी के बीच अंतर

MVC क्या है?

RSI एमवीसी फ्रेमवर्क एक आर्किटेक्चरल पैटर्न है जो किसी एप्लिकेशन को तीन मुख्य तार्किक घटकों मॉडल, व्यू और कंट्रोलर में विभाजित करता है। इसलिए इसका संक्षिप्त नाम MVC है। MVC का पूरा नाम मॉडल व्यू कंट्रोलर है।

इस आर्किटेक्चर में, किसी एप्लिकेशन के विशिष्ट विकास पहलुओं को संभालने के लिए एक घटक बनाया जाता है। MVC व्यवसाय तर्क और प्रस्तुति परत को एक दूसरे से अलग करता है। यह आर्किटेक्चरल पैटर्न मुख्य रूप से डेस्कटॉप ग्राफिकल यूजर इंटरफेस (GUI) के लिए उपयोग किया जाता है।

एमवीवीएम क्या है?

MVVM आर्किटेक्चर मार्क-अप लैंग्वेज या GUI कोड की मदद से ग्राफिकल यूजर इंटरफेस के विकास को अलग करने की सुविधा देता है। MVVM का पूरा नाम मॉडल-व्यू-व्यू मॉडल है।

एमवीवीएम का व्यू मॉडल एक मूल्य परिवर्तक है, जिसका अर्थ है कि मॉडल से डेटा ऑब्जेक्ट्स को इस तरह से प्रदर्शित करना व्यू मॉडल की जिम्मेदारी है कि ऑब्जेक्ट्स को आसानी से प्रबंधित और प्रस्तुत किया जा सके।

एमवीसी पैटर्न


MVC Archiटेक्चर
MVC Archiटेक्चर

तीन महत्वपूर्ण MVC घटक हैं:

  • आदर्श: इसमें सभी डेटा और उससे संबंधित तर्क शामिल हैं।
  • राय: उपयोगकर्ता को डेटा प्रस्तुत करना या उपयोगकर्ता इंटरैक्शन को संभालना।
  • नियंत्रक: मॉडल और दृश्य घटकों के बीच एक इंटरफ़ेस.

आइये प्रत्येक घटक को विस्तार से देखें:

आदर्श

मॉडल घटक डेटा और संबंधित तर्क को संग्रहीत करता है। यह उस डेटा का प्रतिनिधित्व करता है जिसे नियंत्रक घटकों या किसी अन्य संबंधित व्यावसायिक तर्क के बीच स्थानांतरित किया जा रहा है।

उदाहरण के लिए, एक नियंत्रक ऑब्जेक्ट आपको डेटाबेस से ग्राहक की जानकारी प्राप्त करने में मदद करता है। यह डेटा में हेरफेर करता है और इसे डेटाबेस में वापस भेजता है या उसी डेटा को रेंडर करने के लिए इसका उपयोग करता है।

देखें

व्यू एप्लीकेशन का वह हिस्सा है जो डेटा की प्रस्तुति को दर्शाता है। मॉडल डेटा से एकत्रित डेटा द्वारा व्यू बनाए जाते हैं। व्यू मॉडल से जानकारी देने का अनुरोध करता है ताकि वह उपयोगकर्ता को आउटपुट भेज सके।

दृश्य चार्ट, आरेख और तालिका से डेटा का भी प्रतिनिधित्व करता है। उदाहरण के लिए, किसी भी ग्राहक दृश्य में टेक्स्ट बॉक्स, ड्रॉपडाउन आदि जैसे सभी UI घटक शामिल होंगे।

नियंत्रक

कंट्रोलर एप्लीकेशन का वह हिस्सा है जो यूजर इंटरैक्शन को संभालता है। कंट्रोलर यूजर से माउस और कीबोर्ड इनपुट की व्याख्या करता है, मॉडल और व्यू को उचित रूप से बदलने के लिए सूचित करता है।

नियंत्रक मॉडल को उसकी स्थिति को अपडेट करने के लिए आदेश भेजता है (उदाहरण के लिए, किसी विशिष्ट दस्तावेज़ को सहेजना)। नियंत्रक दृश्य की प्रस्तुति को बदलने के लिए अपने संबद्ध दृश्य को आदेश भी भेजता है (उदाहरण के लिए, किसी विशेष दस्तावेज़ को स्क्रॉल करना)।

एमवीवीएम पैटर्न

यहाँ, MVVM के लिए एक पैटर्न है:

एमवीवीएम Archiटेक्चर
एमवीवीएम Archiटेक्चर

MVVM आर्किटेक्चर व्यू और व्यू-मॉडल के बीच दो-तरफ़ा डेटा बाइंडिंग प्रदान करता है। यह आपको व्यू-मॉडल के अंदर संशोधनों के प्रसार को व्यू में स्वचालित करने में भी मदद करता है। व्यू-मॉडल, व्यू-मॉडल में बदलाव करने के लिए ऑब्ज़र्वर पैटर्न का उपयोग करता है।

आइये एक दूसरे के इस घटक को विस्तार से देखें:

आदर्श

मॉडल डेटा और संबंधित तर्क को संग्रहीत करता है। यह उस डेटा का प्रतिनिधित्व करता है जिसे नियंत्रक घटकों या किसी अन्य संबंधित व्यावसायिक तर्क के बीच स्थानांतरित किया जा रहा है।

उदाहरण के लिए, एक कंट्रोलर ऑब्जेक्ट स्कूल डेटाबेस से छात्र की जानकारी प्राप्त करेगा। यह डेटा में हेरफेर करता है और इसे डेटाबेस में वापस भेजता है या उसी डेटा को रेंडर करने के लिए इसका उपयोग करता है।

देखें

दृश्य का तात्पर्य HTML, CSS, jQuery आदि जैसे UI घटकों से है।

पैटर्न व्यू को कंट्रोलर से प्राप्त डेटा को परिणाम के रूप में प्रदर्शित करने के लिए जिम्मेदार माना जाता है। यह व्यू मॉडल (मॉडल) को यूजर इंटरफेस (यूआई) में भी बदल देता है।

मॉडल देखें

व्यू मॉडल, व्यू की स्थिति का समर्थन करने के लिए फ़ंक्शन, कमांड, विधियाँ प्रस्तुत करने के लिए ज़िम्मेदार है। यह मॉडल को संचालित करने और व्यू में ईवेंट को सक्रिय करने के लिए भी उत्तरदायी है।

एमवीसी और एमवीवीएम के बीच अंतर Archiटेक्चर

यहां, MVVM और MVC के बीच महत्वपूर्ण अंतर दिए गए हैं

एमवीसी (मॉडल व्यू कंट्रोलर) एमवीवीएम (मॉडल व्यू व्यूमॉडल)
नियंत्रक अनुप्रयोग का प्रवेश बिंदु है। दृश्य, अनुप्रयोग का प्रवेश बिंदु है।
नियंत्रक एवं दृश्य के बीच एक से अनेक संबंध। दृश्य एवं दृश्य मॉडल के बीच एक से अनेक संबंध।
दृश्य में नियंत्रक का संदर्भ नहीं है दृश्य में दृश्य-मॉडल के संदर्भ होते हैं।
MVC पुराना मॉडल है एमवीवीएम एक अपेक्षाकृत नया मॉडल है।
इस मॉडल को पढ़ना, बदलना, यूनिट परीक्षण करना और पुनः उपयोग करना कठिन है जब हमारे पास जटिल डेटा बाइंडिंग होगी तो डिबगिंग प्रक्रिया जटिल हो जाएगी।
MVC मॉडल घटक का परीक्षण उपयोगकर्ता से अलग से किया जा सकता है अलग इकाई परीक्षण के लिए आसान है और कोड घटना संचालित है।

एमवीसी की विशेषताएं

एमवीसी की महत्वपूर्ण विशेषताएं इस प्रकार हैं:

  • आसान और घर्षण रहित परीक्षण योग्यता। अत्यधिक परीक्षण योग्य, विस्तार योग्य और प्लग करने योग्य फ्रेमवर्क
  • यह आपको ASP.NET, Django, JSP, आदि द्वारा प्रदान की गई मौजूदा सुविधाओं का लाभ उठाने में भी मदद करता है।
  • यह आपके HTML के साथ-साथ आपके URL पर भी पूर्ण नियंत्रण प्रदान करता है।
  • यह टेस्ट ड्रिवेन डेवलपमेंट (TDD) का समर्थन करता है
  • यह वास्तुकला तर्क का पृथक्करण प्रदान करती है
  • एसईओ अनुकूल यूआरएल के लिए रूटिंग की अनुमति देता है।
  • समझने योग्य और खोजने योग्य यूआरएल के लिए मैपिंग की पेशकश करता है।

एमवीवीएम की विशेषताएं

एमवीवीएम आर्किटेक्चर की विशेषताएं इस प्रकार हैं:

  • MVVM को डेटा बाइंडिंग क्षमताओं के साथ डेस्कटॉप एप्लिकेशन के लिए लिखा गया है - XAML और INotifyPropertyChanged इंटरफ़ेस
  • यदि आप व्यू-मॉडल में संशोधन करना चाहते हैं, तो व्यू-मॉडल एक ऑब्जर्वर पैटर्न का उपयोग करता है।
  • MVVM पैटर्न का प्रयोग अधिकतर किसके द्वारा किया जाता है? WPF, सिल्वरलाइट, एनरूट, आदि.

एमवीसी के लाभ

यहाँ, MVC के लाभ/लाभ दिए गए हैं

  • नए प्रकार के ग्राहकों के लिए आसान समर्थन
  • विभिन्न घटकों का विकास समानांतर रूप से किया जा सकता है।
  • यह एप्लिकेशन को अलग-अलग (MVC) इकाइयों में विभाजित करके जटिलता से बचाता है
  • यह केवल फ्रंट कंट्रोलर पैटर्न का उपयोग करता है जो एकल नियंत्रक का उपयोग करके वेब अनुप्रयोग अनुरोधों को संसाधित करता है।
  • परीक्षण-संचालित विकास के लिए सर्वोत्तम समर्थन प्रदान करता है
  • यह वेब ऐप्स के लिए अच्छी तरह से काम करता है, जो वेब डिजाइनरों और डेवलपर्स की बड़ी टीमों द्वारा समर्थित होते हैं।
  • यह चिंताओं का एक स्पष्ट पृथक्करण (SoC) प्रदान करता है।
  • सभी वर्गीकृत और ऑब्जेक्ट एक दूसरे से स्वतंत्र हैं ताकि आप उनका अलग-अलग परीक्षण कर सकें।
  • MVC एक नियंत्रक पर संबंधित क्रियाओं को तार्किक रूप से एक साथ समूहीकृत करने की अनुमति देता है।

एमवीवीएम के लाभ

यहाँ, MVVM के पक्ष/लाभ दिए गए हैं

  • व्यावसायिक तर्क Ul से अलग है
  • रखरखाव और परीक्षण में आसान
  • घटकों का पुनः उपयोग आसान
  • शिथिल युग्मित वास्तुकला: MVVM आपके अनुप्रयोग वास्तुकला को शिथिल युग्मित बनाता है।
  • आप व्यू' को संदर्भित किए बिना व्यूमॉडल और मॉडल परत दोनों के लिए यूनिट परीक्षण मामले लिख सकते हैं।

एमवीसी के नुकसान

यहाँ, MVC के नुकसान/खामियाँ दी गई हैं

  • व्यावसायिक तर्क Ul के साथ मिश्रित है
  • परीक्षणों का पुनः उपयोग और क्रियान्वयन कठिन
  • कोई औपचारिक सत्यापन समर्थन नहीं
  • डेटा की जटिलता और अकुशलता में वृद्धि
  • आधुनिक उपयोगकर्ता इंटरफ़ेस के साथ MVC का उपयोग करने की कठिनाई
  • समानांतर प्रोग्रामिंग करने के लिए कई प्रोग्रामर्स की आवश्यकता होती है।
  • अनेक प्रौद्योगिकियों का ज्ञान आवश्यक है।

एमवीवीएम के नुकसान

यहाँ, MVVM के नुकसान/खामियाँ दी गई हैं

  • नियंत्रक में बहुत सारे कोडों का रखरखाव
  • कुछ लोगों का मानना ​​है कि सरल यूआई के लिए एमवीवीएम आर्किटेक्चर अत्यधिक हो सकता है।
  • दृश्य और दृश्य मॉडल के बीच तंग युग्मन प्रदान नहीं करता है