क्या MVVM का कोई आसान चरण-दर-चरण संदर्भ है?
हाँ वहाँ है। यहाँ एक नज़र रखना।
क्या MVVM एक सुपर-सेट या MVC का उप-सेट है?
MVVM MVC परिवार के अंतर्गत आता है, इसलिए, यदि आप कह सकते हैं कि यह एक सबसेट है। यह यूआई को व्यापार तर्क के नीचे से अलग करने का एक प्रकार है। मैं इसे MVC के सहोदर के रूप में वर्णित करूँगा। ओओपी के शुरुआती दिनों से लोग यूआई को अपने तर्क से अलग करने के तरीके खोज रहे हैं। एमवीसी पहला आर्कषक था जो विकसित हुआ। यह बहुत आसान है, हालांकि ज्यादातर लोग इसे सही नहीं पाते हैं। दृश्य केवल मॉडल के लिए एक पर्यवेक्षक है और आवश्यक होने पर इसे कॉल करता है। नियंत्रक केवल मॉडल के साथ संवाद करने के लिए दृश्य के लिए एक रणनीति है, उदाहरण के लिए जब आपको एक विनिमेय व्यवहार (यानी ReadonlyController, AdminController) की आवश्यकता होती है। MVC बहुत सफल है और इसे लागू करने के लिए वास्तव में एक अच्छा अभ्यास है।
MVVM एक विशेष प्रकार का MVP पैटर्न है, जैसा कि मार्टिन फाउलर द्वारा वर्णित है । MVP दृश्य को जितना संभव हो सके गूंगा रखने की कोशिश करता है (जबकि अभी भी उपयोगकर्ता इनपुट आदि ले रहा है), इस प्रकार परीक्षण क्षमता को बढ़ाता है। इसका उद्देश्य दृश्य और संपर्क-तर्क को रोकना है जिसे प्रस्तुतकर्ता में रखना है। प्रस्तुतकर्ता केवल मॉडल / व्यावसायिक तर्क के साथ संचार करता है और दृश्य को अद्यतन करता है। मार्टिन फाउलर अपने प्रस्तुतिकरण मॉडल पैटर्न में MVVM का बहुत वर्णन करते हैं।
दृश्य पूरी तरह से एक ViewModel में सार है। जब View
किसी संपत्ति की ViewModel
जरूरत होती है, तो उसके पास होने की जरूरत भी होती है। यह (ViewModel) अंतर्निहित UI- प्रौद्योगिकी, एक अमूर्तता से पूरी तरह से स्वतंत्र होने के लिए है। दृश्य और ViewModel के बीच संवाद करने के लिए, एक सिंक्रनाइज़ेशन पैटर्न का उपयोग करने की आवश्यकता है (यानी ऑब्जर्वर)। यह एक निष्क्रिय वेब वातावरण में पूरा करना आसान नहीं है। MVVM MVP से भिन्न होता है, क्योंकि दृश्य अब आपके मॉडल / व्यावसायिक तर्क से नहीं, बल्कि ViewModel से जुड़ता है।
कौन सा पैटर्न आधुनिक है और मुझे अपने एप्लिकेशन के विंडोज और वेब संस्करणों के लिए कौन सा चुनना चाहिए?
सिद्धांत रूप में प्रस्तुति मॉडल (एमवीवीएम-जैसे) पूरी तरह से उपयोग में यूआई-तकनीक से स्वतंत्र होना चाहिए। हालांकि, सिंक्रोनाइजेशन पहलू को कवर करने की आवश्यकता है। यह आसानी से CommF और गुण WPF के साथ बाइंडिंग द्वारा किया जा सकता है, जहां सिंक्रनाइज़ेशन गोंद पहले से मौजूद है। ASP.NET के साथ, यह एक अलग कहानी है। हालाँकि, कोडप्रोजेक्ट पर एक लेख है जिसमें सभी विंडोज़ यूआई तकनीकों के साथ प्रेजेंटेशन मॉडल पैटर्न का उपयोग किया गया है। एक नज़र देख लो।