रूढ़िवादी MVVM कार्यान्वयन व्यर्थ है? मैं एक नया एप्लिकेशन बना रहा हूं और मैंने विंडोज फॉर्म और डब्ल्यूपीएफ पर विचार किया। मैंने WPF को चुना क्योंकि यह भविष्य का सबूत है और बहुत सारे लचीलेपन की पेशकश करता है। XAML का उपयोग करके अपने UI में महत्वपूर्ण परिवर्तन करने के लिए कम कोड और आसान है।
चूंकि WPF के लिए विकल्प स्पष्ट है, मुझे लगा कि मैं MVVM का उपयोग करके अपने आवेदन आर्किटेक्चर के रूप में सभी तरह से जा सकता हूं क्योंकि यह मिश्रण क्षमता, पृथक्करण चिंताओं और इकाई परीक्षणशीलता प्रदान करता है। सैद्धांतिक रूप से, यह यूआई प्रोग्रामिंग की पवित्र कब्र की तरह सुंदर लगता है। यह संक्षिप्त साहसिक; हालाँकि, वास्तविक सिरदर्द में बदल गया है। जैसा कि अभ्यास में अपेक्षित था, मुझे लग रहा है कि मैंने एक समस्या को दूसरे के लिए व्यापार किया है। मैं एक जुनूनी प्रोग्रामर बन गया हूं, मैं चीजों को सही तरीके से करना चाहता हूं ताकि मैं सही परिणाम पा सकूं और संभवत: एक बेहतर प्रोग्रामर बन सकूं। MVVM पैटर्न ने उत्पादकता पर मेरे परीक्षण को रोक दिया और अभी एक बड़ी yucky हैक में बदल गया है!
बिंदु में स्पष्ट मामला एक मोडल संवाद बॉक्स के लिए समर्थन जोड़ रहा है। सही तरीका यह है कि डायलॉग बॉक्स लगाकर उसे व्यू मॉडल से जोड़ दिया जाए। इसे काम में लाना मुश्किल है। MVVM पैटर्न से लाभ उठाने के लिए, आपको अपने आवेदन की परतों में कई स्थानों पर कोड वितरित करना होगा। आपको टेम्प्लेट प्रोग्रामिंग प्रोग्रामिंग जैसे टेम्प्लेट और लांबा एक्सप्रेशंस का भी उपयोग करना होगा। सामान जो आपको स्क्रीन पर अपने सिर को खरोंचते हुए घूरता है। यह रखरखाव और डिबगिंग बनाता है एक बुरा सपना जैसा कि मैंने हाल ही में खोजा है। मेरे पास एक अच्छा काम करने वाला बॉक्स था, जब तक कि मुझे दूसरी बार अपवाद नहीं मिला, यह कहते हुए कि यह डायलॉग बॉक्स को बंद होने के बाद फिर से नहीं दिखा सकता। मुझे संवाद विंडो के करीब कार्यक्षमता के लिए एक ईवेंट हैंडलर जोड़ना था, IDialogView के कार्यान्वयन में एक और अंत में एक और IDialogViewModel में। मुझे लगा कि MVVM हमें इस तरह के असाधारण हैकरी से बचाएगा!
इस समस्या के प्रतिस्पर्धी समाधानों के साथ कई लोग हैं और वे सभी हैक हैं और एक स्वच्छ, आसानी से पुन: प्रयोज्य, सुरुचिपूर्ण समाधान प्रदान नहीं करते हैं। MVVM टूलकिट्स में से अधिकांश संवादों पर चमकते हैं और जब वे उन्हें संबोधित करते हैं, तो वे सिर्फ सतर्क बक्से होते हैं जिन्हें कस्टम इंटरफेस या व्यू मॉडल की आवश्यकता नहीं होती है।
मैं MVVM व्यू पैटर्न को छोड़ने की योजना बना रहा हूं, कम से कम इसके रूढ़िवादी कार्यान्वयन पर। तुम क्या सोचते हो? यदि आपके पास कोई भी हो तो क्या यह आपके लिए परेशानी का कारण है? क्या मैं सिर्फ एक अक्षम प्रोग्रामर हूं या MVVM ऐसा नहीं है जो इसे करने के लिए सम्मोहित है?