यहां मैं कुछ डब्ल्यूपीएफ प्रश्नों के बारे में एक बहुत ही सरल बेवकूफ शब्दों में जवाब देने की कोशिश कर रहा हूं, जो शुरुआती/विनफॉर्म डेवलपर्स का सामना करते हैं और जब मैंने डब्ल्यूपीएफ के साथ शुरुआत की तो मुझे सामना करना पड़ा। इंटरनेट में कई लेख और ट्यूटोरियल हैं जो पर्याप्त ज्ञान देते हैं, लेकिन बहुत सरल प्रश्नों के उत्तर ढूंढना मुश्किल है। मैं इसे यहां संबोधित करने की कोशिश कर रहा हूं।
WPF क्या है?
विस्तार के रूप में विंडोज प्रेजेंटेशन फाउंडेशन चला जाता है; यह विंडोज अनुप्रयोगों के निर्माण के लिए एक "प्रस्तुति" प्रणाली है। यदि आप एक Winforms डेवलपर हैं तो WPF में आपको जो बड़ा अंतर मिलेगा वह यह है कि जिस तरह डिज़ाइनर दिखता है। Winforms के विपरीत डिजाइनर कोड सी # कोड नहीं है लेकिन एक्सएएमएल कोड है।
डब्ल्यूपीएफ क्यों?
वैसे, डब्ल्यूपीएफ को विनफॉर्म पर प्राथमिकता देने का मुख्य कारण यह है कि डब्ल्यूपीएफ समृद्ध यूआई प्रदान करता है। इसके अलावा डब्ल्यूपीएफ प्रदान करने वाले कई अन्य लाभ भी हैं, यह इंटरनेट में कई ट्यूटोरियल में अधिक स्पष्ट रूप से उपलब्ध है। यह एक वेक्टर आधारित प्रतिपादन इंजन है। यदि कोई सिर्फ एक विनफॉर्म एप्लिकेशन के यूआई की तुलना करता है और एक डब्ल्यूपीएफ एप्लीकेशन देखो और महसूस के मामले में अंतर शांत हो जाएगा।
एमवीवीएम क्या है?
एमवीवीएम एक पैटर्न है, जो अनुप्रयोगों के विकास के दौरान अनुकूलित किया जाता है। इसे "मॉडल व्यू व्यू मॉडल" के रूप में विस्तारित किया जाता है, मूल रूप से प्रोजेक्ट की संरचना करते समय हमारे पास एक मॉडल फ़ोल्डर होता है जिसके अंतर्गत सभी मॉडल फाइलें (.cs) रखी जाएंगी, दृश्य मॉडल फ़ोल्डर के तहत सभी व्यूमोडेल फाइलें (.cs) होगी दृश्य फ़ोल्डर के नीचे और सभी दृश्य फ़ाइलों (.xaml) रखा जाएगा। यदि एमवीवीएम का उपयोग किया जाता है तो उसके पीछे कोई कोड नहीं होगा .xaml.cs फ़ाइल में ऑटो निर्मित विधि को छोड़कर कोई कोड नहीं होगा।
मॉडल: मॉडल में व्यावसायिक तर्क भाग है जो दृश्य मॉडल का समर्थन करता है जो अंततः दृश्य में प्रस्तुत किया जाएगा।
व्यूमोडेल: प्रत्येक दृश्य में एक दृश्य मॉडल होगा। व्यूमोडेल INotifyPropertyChanged इंटरफ़ेस को कार्यान्वित करेगा, और इसमें सभी गुण होंगे जो संबंधित दृश्य से बंधे हैं। मॉडल को किसी भी व्यावसायिक तर्क से लोड नहीं किया गया है और जिम्मेदारी मॉडल के साथ है।
देखें: दृश्य xaml फ़ाइल के अलावा कुछ भी नहीं है जहां विंडो डिज़ाइन की गई है। एक्सएएमएल एक मार्कअप भाषा है। WinF में विपरीत WPF में प्रत्येक नियंत्रण एक निर्भरता संपत्ति के साथ बाध्य किया जाएगा या तो पूर्वनिर्धारित या उपयोगकर्ता परिभाषित किया जाएगा।
क्यों एमवीवीएम?
जब भी WPF में कोई एप्लिकेशन विकसित किया जा रहा है, तो एमवीवीएम इसके साथ काम करता है। एमवीवीएम का उपयोग करने के सबसे बड़े फायदों में से एक यह है कि यह एक यूआई स्वतंत्र इकाई परीक्षण के लिए संभव बनाता है, क्योंकि इकाई परीक्षण के दौरान कोई कोड पीछे नहीं है यूआई संबंधित वस्तुओं की आवश्यकता है और इसलिए 100% कोड कवरेज संभव है। इकाई परीक्षण में, 'कमांड' (wpf में कमांड के लिए देखो) उपयोगकर्ता द्वारा किसी विशेष उपयोगकेस का परीक्षण करने के लिए पारित किया जा सकता है।
क्या यह WPF के साथ काम करते समय एमवीवीएम के साथ जाने के लिए एक जनादेश या पूर्ण आवश्यक है?
मैं नहीं कहूंगा, डब्ल्यूपीएफ के साथ काम करते समय एमवीवीएम के साथ जाना अनिवार्य नहीं है, हालांकि यह आवश्यकता पर निर्भर करता है। किसी को एमवीवीएम लाभ प्रदान करना पड़ता है और फिर तय करता है कि इसके साथ जाना है या नहीं। एमवीवीएम विकास के प्रारंभिक दिनों के दौरान जटिलता को जोड़ता है लेकिन आखिरकार यह इसके लाभों के साथ आता है। यदि पूरा एप्लिकेशन Winforms में है और केवल एक छोटा मॉड्यूल है, तो WPF में एक छोटी सी सुविधा विकसित की जा रही है, तो एमवीवीएम का पालन करना आवश्यक नहीं होगा, कोई खुशी से कोड पीछे रख सकता है और समृद्ध यूआई अनुभव प्राप्त कर सकता है। फिर मैं दोहराना चाहूंगा कि पूरी तरह से आवश्यकता के प्रकार पर निर्भर करता है।
क्या मेरे पास एक दृश्य दृश्य में एक दृश्य/एकाधिक दृश्यों के लिए एकाधिक दृश्य मॉडल हो सकते हैं?
यह एक प्रश्न है जिसके लिए मुझे किसी भी .NET समुदायों में स्पष्ट कुरकुरा उत्तर नहीं मिला है। सबसे पहले हमने देखा कि एमवीवीएम के साथ जाने का मुख्य इरादा 100% कोड कवरेज प्राप्त करने के लिए है, इससे यह स्पष्ट हो जाता है कि हम स्वतंत्र रूप से प्रत्येक व्यूमॉडल का परीक्षण करने जा रहे हैं और इसलिए एक पूर्ण रूप का परीक्षण किया जाता है। इसे ध्यान में रखते हुए एक दृश्य के लिए एक दृश्यमान दृष्टिकोण के लिए जाना बेहतर है। एमवीवीएम लाइट मैसेंजर या किसी अन्य माध्यम का उपयोग करके आवश्यकता होने पर आवश्यकता होने पर हम हमेशा व्यूमोडेल के बीच संवाद कर सकते हैं।
व्यूमोडेल और मॉडल के बीच क्या अंतर है?
यह एक प्रश्न है जो शुरुआती हमेशा होता है क्योंकि उन्हें दोनों के बीच बहुत अंतर नहीं मिलता है। यहां अंतर है: - मॉडल एक वर्ग के अलावा कुछ भी नहीं है जिसमें डेटा को संशोधित करने के लिए डेटा-विधियां हैं, जिनका उपयोग व्यूमोडेल में किया जाएगा और आखिरकार दृश्य में बाध्य किया जाएगा। व्यूमोडेल में केवल वे गुण हैं जो दृश्य में बाध्य होंगे। प्राप्त करने या सेट विधियों में कोई डेटा प्राप्त करने के लिए मॉडल में एक विधि को कॉल कर सकता है। फिर यह मॉडल इस विशेष दृश्य मॉडल के लिए है। अब आप यह तय कर सकते हैं कि यदि आपको कोई भारी व्यावसायिक तर्क नहीं है तो आपको वास्तव में मॉडल क्लास की आवश्यकता है, तो आप मॉडल क्लास से बच सकते हैं और इसे व्यूमोडेल में रख सकते हैं, लेकिन क्लीनर मॉडल क्लास का उपयोग करना होगा।
एमवीवीएम में, क्या मैं दृश्य मॉडल या मॉडल क्लास को देखने के लिए छोड़ सकता हूं?
फिर यह पहले से उल्लिखित आवश्यकता पर निर्भर करता है, यदि कोई भारी व्यावसायिक तर्क नहीं है तो आप मॉडल श्रेणी से बच सकते हैं और इसे व्यूमोडेल में रख सकते हैं, लेकिन क्लीनर दृष्टिकोण मॉडल श्रेणी का उपयोग करना होगा।
ग्रॉक = ग्रोक + अजीक - महान नया शब्द – MrTelly