2010-01-26 10 views
12

मैं पिछले दो वर्षों से एमवीवीएम का उपयोग कर रहा हूं और यह निश्चित रूप से उस समय से बेहतर के लिए विकसित हुआ है। जैसा कि मैंने पढ़ा है कि सैकड़ों एमवीवीएम लेख और स्टैक ओवरफ्लो प्रश्नों के बावजूद, मैंने देखा है कि अधिक से अधिक लेख दिखाई देते हैं जो व्यू/व्यूमोडेल रिलेशनशिप और सृजन का वर्णन पहले व्यूमोडेल के रूप में करते हैं या पहले देखें। ये लेख आमतौर पर आईओसी या डीआई का उपयोग करते हैं। मैं कुछ लिंक शामिल करता हूं लेकिन एक नया SO उपयोगकर्ता के रूप में मैं केवल 1 तक सीमित हूं।डब्ल्यूपीएफ - एमवीवीएम - विभिन्न दृश्य निर्माण तकनीकों के पेशेवरों और विपक्ष क्या हैं?

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

<DataTemplate DataType="{x:Type ViewModels:DummyViewModel}"> 
    <Views:DummyUserControl DataContext="{Binding}"/> 
</DataTemplate> 

Testability और decoupling इन 'गैर DataTemplate' वी-वी एम निर्माण/संबंध डिजाइन और लेख का मुख्य उद्देश्य होने लगते हैं, और अक्सर वे MEF या प्रिज्म साथ क्या करना है। आखिरकार मैं निम्नलिखित जानना चाहूंगा:

  1. क्या डेटा टेम्पलेट व्यू निर्माण तकनीक अभी भी उपयोग या अनुशंसित है?
  2. दृश्य के पहले पेशेवरों के विचार/विपक्ष क्या हैं?
  3. पेशेवरों/viewmodel पहली डिजाइन की विपक्ष (दृश्य के साथ इंजेक्शन) कर रहे हैं क्या

मुझे पता है इन ढीला सवाल हैं जिनके जवाब ढीला लायक हैं।

इन विषयों को कवर करने वाले लेखों के किसी भी अच्छे लिंक की सराहना की जाती है, बशर्ते वे एमईएफ/PRISM से संबंधित न हों। अधिक बेहतर। (Google बहुत कुछ बदलता है)

उत्तर

2

1. क्या डेटा टेम्पलेट व्यू निर्माण तकनीक अभी भी उपयोग या अनुशंसित है?

यह एमवीवीएम में काम करने की मेरी पसंदीदा विधि है। मुझे इस दृष्टिकोण को बहुत पसंद है, कारणों से मैं नीचे निर्दिष्ट करूँगा। मैं इसे अपने सभी विकास में उपयोग करता हूं।

2. दृश्य के पहले पेशेवरों के विचार/विपक्ष क्या हैं?

मुझे यहां पाया गया मुख्य समर्थक यह है कि यह डिजाइन समय के अनुभव में थोड़ा आसान है। डिजाइनर पहले से ही डेटा संदर्भ "जानता है", और काम करने का एक आसान काम करने में सक्षम हो जाता है।

मेरे परिप्रेक्ष्य से यहां मुख्य सम्मेलन यह है कि आप व्यू और व्यूमोडेल के बीच एक कठिन युग्मन जोड़ रहे हैं। चारों ओर गुजरने के लिए एक विशिष्ट मॉडल चुनना भी मुश्किल है।

3.What पेशेवरों/viewmodel पहली डिजाइन की विपक्ष

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

हालांकि, यहां डिज़ाइन समय उपयोगिता में थोड़ी कमी है, हालांकि विचारों को डिजाइन समय पर वीएम के बारे में कुछ भी नहीं पता है, इसलिए आप कुछ डिज़ाइनबिलिटी खो देते हैं।

+0

खैर कि नाखून मेरे अपने अनुभवों और विचारों को 100%। विचारों और दृश्यों को उत्पन्न करने के लिए कंटेनर का उपयोग करने के बारे में हाल ही में लिखे गए, मैं चिंतित था कि मैं 'नाव खो रहा था।' क्या आप इंटरफ़ेस का उपयोग करके अपने व्यूमोडेल में अपना विचार इंजेक्ट करते हैं? निजी तौर पर, मैं नहीं चाहता कि मेरे व्यूमोडल्स को देखने के लिए कोई संदर्भ हो। – user259509

+0

मैंने एमईएफ का उल्लेख नहीं किया - लेकिन मैं वास्तव में इसका भी उपयोग करता हूं। यह उपर्युक्त (यानी: सेवाओं) में किनारे के मामलों को संभालने के लिए बहुत उपयोगी है, साथ ही वास्तव में डेटा टेम्पलेट्स भी कर रहा है। आप अपने ऐप.एक्सएएमएल को "प्रदूषित" किए बिना अपने डेटा टेम्पलेट्स को अपने दृश्य में से सेट अप करने के लिए एमईएफ का उपयोग कर सकते हैं, उदाहरण के लिए ... –

+0

आपका ब्लॉग (http://reedcopsey.com/) शानदार है, बीटीडब्ल्यू – user259509

0

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

दृष्टिकोण उपयोग हम WPF अनुप्रयोग फ्रेमवर्क (WAF) परियोजना पृष्ठ पर वर्णित है:

http://waf.codeplex.com/wikipage?title=Model-View-ViewModel%20Pattern&ProjectName=waf

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