2009-10-05 4 views
9

Model-View-ViewModel डब्ल्यूपीएफ और सिल्वरलाइट के साथ बहुत लोकप्रिय है। मैं अपनी सबसे हाल की परियोजनाओं के लिए इसका उपयोग कर रहा हूं, और मैं बहुत बड़ा प्रशंसक हूं।क्या एमवीवीएम WPF के लिए विशिष्ट रूप से उपयुक्त बनाता है?

मैं समझता हूं कि यह MVP का परिशोधन है। हालांकि, मैं सोच रहा हूं कि डब्ल्यूपीएफ (और सिल्वरलाइट) की अनूठी विशेषताओं में एमवीवीएम काम करने की इजाजत देता है, और इस पैटर्न को अन्य ढांचे या प्रौद्योगिकियों का उपयोग करके काम करने से रोकता है (या कम से कम कठिन बना देता है)।

मुझे पता है कि एमवीवीएम में WPF के भीतर शक्तिशाली डेटा बाध्यकारी तकनीक पर एक मजबूत निर्भरता है। यह एक ऐसी विशेषता है जो कई लेखों और ब्लॉगों को डब्ल्यूपीएफ की कुंजी के रूप में उल्लेख करने के लिए प्रतीत होता है जो व्यूमोडेल से दृश्य के मजबूत पृथक्करण के साधन प्रदान करते हैं। हालांकि, डेटा बाध्यकारी अन्य यूआई ढांचे में many forms में मौजूद है। Truss जैसी परियोजनाएं भी हैं जो .NET में POCO को WPF-style डेटाबेसिंग प्रदान करती हैं।

डेटा बाध्यकारी के अलावा, कौन सी विशेषताएं, WPF और Silverlight को मॉडल-व्यू-व्यू मॉडेल के लिए विशिष्ट रूप से उपयुक्त बनाती हैं?

उत्तर

7

डेटा बाइंडिंग, आदेश, नियंत्रण टेम्पलेट्स और एक्सएएमएल।

इनमें से किसी एक के बिना, एमवीवीएम असंभव नहीं होने पर बहुत कठिन होगा। उदाहरण के लिए एएसपीनेट लें, इसमें एएसपीएक्स भाग है (जो कि उदाहरण के लिए एक्सएएमएल के बराबर है), इसमें डेटा बाध्यकारी है, लेकिन इसमें कमांड या नियंत्रण टेम्पलेट्स नहीं हैं, इसलिए एमवीवीएम संभव नहीं है। WinForms में, हमारे पास डाटाबेसिंग है, और यह बहुत अधिक है, इसलिए संभव नहीं है।

+0

आपको क्यों लगता है कि XAML को एमवीवीएम के लिए आवश्यक है? –

+0

2 कारणों से, डेटा बाइंडिंग (एमवीवीएम में एक्सएएमएल के माध्यम से किया जाता है) और कंट्रोल टेम्पलेट्स। उत्तरार्द्ध के बिना, हमारे स्वयं के नियंत्रण को संपादित/बनाना कोड-बाध्य होगा, जिससे उपयोगकर्ता द्वारा बनाए गए नियंत्रणों के साथ काम करते समय एमवीवीएम अधिक कठिन हो जाएगा। – Carlo

+0

डाटाबेसिंग को एक्सएएमएल के माध्यम से नहीं किया जाना चाहिए, और कुछ ऐसे हैं जो इसे एक्सएएमएल से विभाजित करना पसंद करते हैं। कोड यूआई बनाने के दौरान एक्सएएमएल से कठिन है, यह संभव है, और एमवीवीएम उपयोग को प्रभावित नहीं करता है। और मुझे लगता है कि डेटा टेम्पलेट्स नियंत्रण टेम्पलेट्स की तुलना में एमवीवीएम के लिए अधिक प्रासंगिक हैं। –

1

मुझे लगता है कि महान डेटा बाध्यकारी क्षमताओं के अलावा कमांडिंग सपोर्ट (आईसीओएमएंड) इसे WPF और Silverlight के लिए उपयुक्त बनाता है।

2

संक्षेप में: यह डेटा बाध्यकारी है।

प्रति Data Binding Overview from MSDN:

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

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

+0

मिमीएम - मुझे नहीं लगता कि डेटा बाइंडिंग पर्याप्त है, अपने आप में, भले ही यह मुख्य touted सुविधा है। ट्रस जैसी चीजें एमवीवीएम को किसी भी .NET तकनीक के लिए अनुमति देगी, अगर यह केवल डेटा बाइंडिंग के बारे में थी ... (मैं मानता हूं कि यह एक महत्वपूर्ण इमारत ब्लॉक है, केवल एकमात्र नहीं)। मैं अन्य, गैर-डाटाबेसिंग, सुविधाओं की आलोचना कर रहा था जो महत्वपूर्ण हैं। –

2

मैंने एमएफसी, विनफॉर्म और यहां तक ​​कि MATLAB में एमवीवीएम के चचेरे भाई पैटर्न Model-View-Presenter को लागू किया है। मैं मूल पोस्ट से सहमत हूं: डब्ल्यूपीएफ डेटा को बहुत अच्छी तरह बाध्यकारी बनाता है, लेकिन आप अन्य प्लेटफार्मों में अवधारणाओं का उपयोग कर सकते हैं (हालांकि अधिक कोड के साथ)।

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

यह वह क्षेत्र है जहां डब्ल्यूपीएफ अद्वितीय है - मुझे इस आदर्श की ओर काम करने वाले किसी अन्य विकास वातावरण के बारे में पता नहीं है।

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

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