2010-09-17 12 views
7

एमवीवीएम एक माइक्रोसॉफ्ट डिजाइन पैटर्न है जो एएसपी.NET एमवीसी से पहले मौजूद था। क्या एमवीवीएम और नए एमवीसी पैटर्न के बीच मतभेदों पर प्रकाश के माध्यम से कोई भी हो सकता है?एएसपी.NET एमवीसी और एमवीवीएम

+3

एमवीसी (जो नवीनतम एएसपी.नेट एमवीसी * कार्यान्वयन * के बाहर प्रयोग योग्य है) लंबे समय तक एमवीवीएम की भविष्यवाणी करता है ... देखें: http://en.wikipedia.org/wiki/Model-view-controller –

+1

विशेष रूप से इंगित करने के लिए संपादित किया गया है कि यह माइक्रोसॉफ्ट एएसपी.NET एमवीसी है।मुझे पता है कि एमवीसी एमवीवीएम की भविष्यवाणी करता है लेकिन एएसपी.नेट एमवीसी एमवीवीएम का उत्तराधिकारी है, भले ही एमवीवीएम एमवीसी पर आधारित है। –

उत्तर

13

क्या कोई भी एमवीवीएम और नए एमवीसी पैटर्न के बीच मतभेदों पर प्रकाश डाल सकता है?

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

एमवीवीएम का उपयोग करते समय आप मॉडल और व्यू के बीच एक अमूर्त जोड़ रहे हैं, जो निश्चित रूप से व्यूमोडेल है। यह लेखक को उस ऑब्जेक्ट को देखने में मदद करता है जो दृश्य द्वारा सबसे ज्यादा उपभोग किया जाता है। व्यूमोडेल में ऐसी चीजें हो सकती हैं जो (डोमेन) मॉडल में जगह से बाहर होंगी। यहां जुड़ी लागत यह है कि आपको मैपिंग तर्क होना चाहिए जो मॉडल से डेटा को मॉडल में स्थानांतरित कर देता है। ऑटोमैपर जैसे टूल्स इस कोर के साथ सहायता कर सकते हैं।

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

2

मैं यह सुझाव देना चाहता हूं कि एमवीवीएम माइक्रोसॉफ्ट के डिजाइन पैटर्न और एएसपी.नेट एमवीसी है, जो हाल ही में माइक्रोसॉफ्ट द्वारा एक विशिष्ट कार्यान्वयन है (जो आवश्यक रूप से एमवीसी या एमवीवीएम का पालन नहीं करता है लेकिन समान है)। और रीड द्वारा सुझाए गए अनुसार, एमवीसी 70 के दशक से आसपास रहा है।

1

दोनों एमवीसी & एमवीवीएम वास्तुकला पैटर्न हैं। एमवीसी की जड़ें वापस स्मॉलटाक में हैं। एएसपी.नेट एमवीसी एएसपी.NET ढांचे का उपयोग कर एमवीसी पैटर्न के माइक्रोसॉफ्ट के कार्यान्वयन है।

दोनों पैटर्न चिंताओं को अलग करने के साथ सौदा करते हैं। एमवीसी मॉडल (डेटा लेयर), व्यू (प्रेजेंटेशन लेयर) और कंट्रोलर (बिजनेस लॉजिक लेयर) जैसे अनुप्रयोगों में विभिन्न सामान्य रूप से प्रयुक्त परतों की बातचीत के साथ अधिक है।

डब्ल्यूपीएफ और सिल्वरलाइट की उन्नत डाटाबेसिंग क्षमताओं के साथ, एमवीवीएम अधिक उपयुक्त और अगली बड़ी चीज़ के रूप में प्रचारित था। मार्टिन फाउलर ने इन एंटरप्राइज़ एप्लिकेशन आर्किटेक्चर पुस्तक में प्रस्तुति पैटर्न के रूप में इन पैटर्न को सामान्यीकृत किया।

एक व्यूमोडेल का उपयोग करने में मुझे एक फायदा यह है कि यह आपको यूनिट परीक्षणों का उपयोग करके बेहतर ढंग से एप्लिकेशन कोड का परीक्षण करने की अनुमति देता है। इस कारण से मुझे एमवीवीएम मिल जाता है या कम से कम व्यूमोडेल बिट का उपयोग अक्सर एएसपी.नेट एमवीसी अनुप्रयोगों में भी किया जा रहा है।

+0

हाँ ViewModel एएसपी.NET एमवीसी में भी मौजूद है। क्या हम एमवीसी में प्रस्तुति परत के साथ सिल्वरलाइट की एक ही उन्नत क्षमताओं को एकीकृत नहीं कर सकते हैं? मैं बस सोच रहा था कि वेब ऐप विकास में एक और वजन कैसे है। –

4

एमवीसी और एमवीवीएम वास्तव में काफी अलग हैं। एएसपी एमवीसी के बारे में बात करते समय एमवीवीएम की गलतफहमी का एक उचित मामला प्रतीत होता है। एमवीसी में 'व्यू मॉडल्स' बनाने का अभ्यास, जो विचारों को खिलाने के लिए विशिष्ट वर्ग हैं, जबकि अच्छी अभ्यास एमवीवीएम की भावना के लिए सच नहीं है, और वास्तव में एमवीसी का एक क्लीनर संस्करण है।

एमवीवीएम डब्ल्यूपीएफ या इसी तरह का उपयोग कर डेस्कटॉप के लिए अधिक उपयुक्त है, या पूरी तरह ब्राउज़र में जावास्क्रिप्ट ढांचे जैसे knockout.js का उपयोग कर ब्राउज़र में अधिक उपयुक्त है। पैटर्न एमवीसी के लिए काफी अलग है और इसमें मॉडल को 'सदस्यता' के रूप में शामिल किया गया है।

संबंधित मुद्दे