2011-06-24 11 views
5

मॉडल-व्यू-व्यू मॉडेल (एमवीवीएम) दृष्टिकोण डब्ल्यूपीएफ यूआई विकास में अग्रणी धावक पैटर्न प्रतीत होता है। मेरे द्वारा पढ़े जाने वाले लगभग हर लेख का तात्पर्य है कि यह सर्वोत्तम अभ्यास है। रिलेकॉमैंड या डेलेगेट कमांड का उपयोग कई लेखों में भी प्रमुख है और ऐसा लगता है कि एमवीवीएम को उनमें से किसी एक का उपयोग किए बिना एमवीवीएम को कार्यान्वित करना लगभग असंभव है (या कोई अन्य बदलाव)। तो वे .NET 4 का हिस्सा क्यों नहीं हैं?क्यों रिलेकॉमैंड या प्रतिनिधिमंडल WPF का हिस्सा नहीं हैं?

मुझे पता है कि रिलेकॉमैंड लागू करने के लिए वास्तव में आसान है और बहुत से तृतीय पक्ष टूलकिट्स में पहले से ही यह है लेकिन मैं सोच रहा हूं कि माइक्रोसॉफ्ट एक तथाकथित "सर्वोत्तम अभ्यास" के कार्यान्वयन के लिए इतना बुनियादी और मौलिक क्यों छोड़ देगा "?

उत्तर

0

इस पर मेरी व्यक्तिगत राय यह है कि रिलेकॉमैंड्स एमवीवीएम के इरादे को तोड़ देता है।

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

रिलेकॉमैंड्स डिबगिंग कम सीधे आगे और वास्तविक दर्द होता है जब आपको इतने सारे फ़ंक्शन/क्रियाओं/प्रतिनिधियों के माध्यम से कदम उठाना होता है और ऑब्जेक्ट से ऑब्जेक्ट तक कूदना होता है।

+0

मैं वास्तव में उन्हें एमवीवीएम के किसी भी वादे को तोड़ने में नहीं देखता हूं। अंत में एमवीवीएम डिकूप्लिंग के बारे में है, उदाहरण के लिए दृश्य और इसके पीछे तर्क, और वे आदेश पूरी तरह से प्राप्त करते हैं। एसआरपी निर्विवाद रूप से सबसे महत्वपूर्ण सिद्धांतों में से एक है, लेकिन आपको देखभाल करना है जहां आपने आर डाल दिया है .. मेरे लिए रिले कॉमांड की उत्तरदायित्व किसी को निष्पादित करने का एक तरीका प्रदान करना है किसी घटना को प्रतिक्रिया देना, और मैं इसे रखना चाहता हूं वीएम में स्वयं कुछ ',' कमांड में केवल एक ही निर्भरता (वीएम) है। अन्यथा कमाना युग्मन युग्मन शुरू करने वाली एक या अधिक वस्तुओं पर निर्भरता हो सकती है। – stijn

+0

... लेकिन यह सब निश्चित रूप से सटीक स्थिति पर निर्भर करता है। मेरे पास बहुत सारे रिलेकॉमैंड्स हैं जो वीएम पर निर्भर नहीं हैं बल्कि एक ईवेंट को इवेंट एग्रीगेटर या इतने पर प्रकाशित करते हैं। उस मामले में वीएम को अनुरोध अग्रेषित करने के लिए पागलपन होगा। – stijn

2

क्योंकि माइक्रोसॉफ्ट डब्ल्यूपीएफ का ख्याल रखता है, न कि एमवीवीएम का।

आप एक पूर्ण टूलकिट सभी घटकों को एक अच्छा MVVM आवेदन के लिए आवश्यक युक्त चाहते हैं, मैं प्रिज्म पर एक नज़र लेने के लिए प्रोत्साहित: A good tutorial here

मूल कारण यह है कि माइक्रोसॉफ्ट "मुख्यधारा" WPF कार्यक्षमताओं पर ध्यान केंद्रित कर रहा है (नियंत्रण और बाइंडिंग बढ़ाने की तरह)। एमवीवीएम है, अगर मैं सही हूं, एमवीवीएम नींव द्वारा "पर्यवेक्षित"।

+1

यदि आपका मतलब है [यह] (http://mvvmfoundation.codeplex.com/), तो यह केवल एक पुस्तकालय है, न कि उन लोगों का समूह जो एमवीवीएम पैटर्न को बनाए रखने/पर्यवेक्षण करने का प्रयास करते हैं। – CodeNaked

1

अधिकांश चीजों के साथ यह पैसे कम हो जाता है। यह एक साधारण वर्ग हो सकता है, लेकिन .NET में इसे शामिल करने के लिए बहुत सारे काम की आवश्यकता है। एक एकल वर्ग होना चाहिए:

  1. रिलीज से पहले पूरी तरह से परीक्षण किया गया। भविष्य के संस्करणों के लिए भी रिग्रेशन परीक्षण लागू किए जाने चाहिए।
  2. कई भाषाओं में पूरी तरह से प्रलेखित, जिसे भी सत्यापित किया जाना चाहिए।
  3. इसका नाम बदलना होगा, क्योंकि रिलेकॉमैंड या डेलेगेट कॉमांड का उपयोग करने से संभवतः वहां किसी भी डब्ल्यूपीएफ को तोड़ दिया जाएगा, जिसमें पहले से ही इन कक्षाएं हैं, क्योंकि नामकरण विवाद होंगे।

इनमें से प्रत्येक को भी अपेक्षा की अपेक्षा अधिक काम की आवश्यकता है (यानी # 2 में पहले ड्राफ्ट, संशोधन, अंतिम अनुमोदन आदि) होंगे।

एक प्रासंगिक लिंक here मिला।

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