2 साल के बाद, मैं अभी भी एमवीवीएम के साथ काम करने वाले सॉफ्टवेयर के निर्माण के व्यावहारिक तरीके से जूझ रहा हूं। कुछ मामलों में यह बहुत अच्छा है। मैंने एक मल्टीथ्रेड एप्लिकेशन किया जिसने एक छोटी सी असेंबली लाइन को नियंत्रित किया जो MVVM अवधारणाओं के बिना एक बुरा सपना होता। फिजिकल असेंबली लाइन से एक अमूर्तता लगभग एक मस्तिष्क नहीं थी।
हालांकि, मेरा कैरियर ज्यादातर व्यावसायिक अनुप्रयोगों की आंतरिक रेखा के आसपास घूमता है - एक व्यवसाय के संचालन को औपचारिक और अनुकूलित करना। इस तरह के ऐप में आमतौर पर CRUD और कंपाउंड ऑपरेशंस के इर्द-गिर्द घूमने वाला एक बिजनेस टीयर होता है। LOBs में, मेरे विचार मॉडल अंत में बिजनेस क्लास के तरीकों की एक पंक्ति के आवरण कार्यों का एक बहुत ही सरल संग्रह है और अंत में केवल संदेश बॉक्स दिखाने या विंडो खोलने जैसे कार्यों को सरलतम रूप से जटिल करते हैं। क्या किसी और को यह अजीब नहीं लगता, जब लोग विंडो के लिए "निर्भरता इंजेक्शन" और "मैसेजिंग प्रोवाइडर" के लंबे डिस्क्रिप्शन में चले जाते हैं। दशकों के लिए किया गया है। स्टैक ओवरफ्लो पर कितने अन्य प्रश्न हैं जो उन कार्यों के लिए सलाह मांगते हैं जो विनफॉर्म में बेहद सरल थे?
मुझे गलत मत समझो - मुझे एमवीवीएम मिलता है और यह कैसे सिकुड़ा हुआ और विपणन सॉफ्टवेयर पैकेज के क्षैतिज विकास करने वाली बड़ी टीमों के लिए अमूल्य हो सकता है। व्यू मॉडल का परीक्षण करने वाला मॉडल खराब आरटीएम बग से बचकर लाखों बचा सकता है और समर्पित यूआई डेवलपर्स एक समृद्ध अनुभव दे सकते हैं। लेकिन जब पुनर्वितरण की लागत कम से कम होती है और सभी व्यवसाय के लिए भुगतान करना आसान होता है, तो यह काम करने के लिए आसान सॉफ्टवेयर होता है, तो मुझे अपने बिजनेस लॉजिक के पहले से ही परीक्षण किए गए समय को एक साधारण "रैपर" vm के परीक्षण के लिए क्यों खर्च करना चाहिए? कितना समय वास्तव में व्यापार मुझे प्यारा एनिमेशन और रंग योजनाओं पर खर्च करने की अनुमति देने वाला है? क्या करने के लिए एक जूनियर डेवलपर के लिए कुछ बचा है (एक सेव फंक्शनलिटी में बग को ट्रैक करना "Save_ick" पर देखा जा सकता है)
बेशक, मुझे वास्तव में WPF की डेटाबाइंडिंग पसंद है। इसका लाभ उठाने के लिए, मैं डेटा संदर्भ को विंडो पर ही सेट करता हूं, जहां इसकी व्यावसायिक वर्ग के साथ-साथ किसी अन्य अवलोकन गुण तक पहुंच है। हां मैं ऐसा करके हर MVVM "नियम" को तोड़ता हूं। लेकिन कम से कम मेरे पास सरल ईवेंट संचालित कोड है जो पढ़ने में आसान है और मुझे नए डेटाबाइंडिंग और सत्यापन का लाभ उठाना है। समस्या डिजाइनरों में है - जिसका मैं वह सब उपयोग नहीं करता, लेकिन अब उम्मीद करता हूं कि यह 2012 में बेहतर रूप से एकीकृत हो जाए - डिजाइनर सैकड़ों गुणों को दिखाता है जो एक खिड़की और इसके आधार वर्ग हैं।
उन लोगों के लिए जो आप से संबंधित हो सकते हैं, आप मुझे संसाधनों, किताबों की ओर इशारा कर सकते हैं, या यहां तक कि सिर्फ परिप्रेक्ष्य में बदलाव कर सकते हैं जिससे यह निगलने में आसान हो गया है। मैं MVVM को एक और शॉट दूंगा, लेकिन पिछली बार जब मैं वीएम से एक संदेश बॉक्स दिखाने के लिए निर्भरता इंजेक्शन के बारे में चिंता करने के लिए बहुत बेवकूफ महसूस कर रहा था तो मेरा यूनिट परीक्षण का कोई इरादा नहीं था। यहां तक कि अगर मैंने यूनिट परीक्षण किया, तो क्या हम उन खूंखार "कसकर-युग्मित" अनुप्रयोगों के संकलन समय त्रुटियों के लिए ट्रेडिंग रन टाइम परीक्षण करके वास्तव में अधिक गुणवत्ता प्राप्त कर रहे हैं?
मुझे लगता है कि एक जवाब सिर्फ winforms में रहने के लिए है। लेकिन WebForms के अंतिम समर्थकों में से एक के रूप में (मेरे पास वेब डेवलपमेंट की प्रवृत्ति के समान समालोचना है), मैंने डायनासोर की तरह थोड़ा महसूस किया क्योंकि यह तब होता है जब मुझे लगता है कि Microsoft प्रमाणन पटरियों में अब और कोई WebForms नहीं बचा है। आगे बढ़ना ही एकमात्र विकल्प है, भले ही मुझे यह पसंद न हो।