क्या WPV में MVVM पुराना है? [बन्द है]


18

मैं वर्तमान में WPF के लिए अपना हेड राउंड MVVM प्राप्त करने की कोशिश कर रहा हूं - इसका मतलब यह नहीं है कि मेरा सिर राउंड कांसेप्ट हो, लेकिन वास्तविक नट और बोल्ट के आसपास ऐसा कुछ भी हो जो डंब CRUD की तुलना में पीटा ट्रैक से आगे हो।

मैंने देखा है कि बहुत सारे चौखटे, और अधिकांश / सभी ब्लॉग पोस्ट 'उम्र' से पहले के हैं।

क्या यह इसलिए है क्योंकि यह अब पुरानी टोपी है और ब्लॉगर्स ने अगली बिग थिंग पर कदम रखा है, या सिर्फ इसलिए कि उन्होंने कहा है कि सब कुछ कहना है?

दूसरे शब्दों में, क्या ऐसा कुछ है जो मुझे याद आ रहा है?


1
WPF के लिए MVVM फ्रेमवर्क को अपडेट किया जाता रहा है। हॉट नया विषय प्रतिक्रियाशील प्रोग्रामिंग [google it!] ReactiveUI के माध्यम से MVVM के रूप में उपलब्ध है । के 3 nuget डाउनलोड WPF शीर्ष 10 MVVM चौखटे हैं: Prism.WPF, MvvmCross, Caliburn.Micro। AFAIK, ये सभी भी Xamarin.Forms और UWP का समर्थन करते हैं, इसलिए आने वाले वर्षों के लिए प्रासंगिक होगा।
टूलमेकरसेव

जवाबों:


7

MVVM पुराना नहीं है, लेकिन इसके साथ शुरू करने के लिए इसे ओवरलेप किया गया था। मुझे यह कभी पसंद नहीं आया और इसने मुझे बहुत लंबे समय तक WinForms में रखा; पेड़ों के लिए जंगल को देखने में असफल, मैंने बच्चे को स्नान के पानी से बाहर फेंक दिया। मुझे अब WPF मिलता है, और मुझे मार्कअप के साथ कोड नहीं मिलाने का विचार आता है, लेकिन मैं मार्कअप को एक जगह चिपका देने की एंड्रॉइड शैली पसंद करता हूं और अपने कोड में कास्ट के साथ इसे डीरेफेरेंस करता हूं (जिसे आप WPF में भी कर सकते हैं, यहां तक ​​कि हालांकि यह जो भी कारण के लिए ऐसा करने के लिए ट्रेंडी कभी नहीं मिला)।

इस तरह से आप अधिक महीन दाने वाले नियंत्रण हासिल कर लेते हैं और आपको हर जगह "चालू" हैंडल करने के बारे में चिंता करने की ज़रूरत नहीं है। मुझे लगता है कि यह वास्तव में अधिक परीक्षण करने योग्य है क्योंकि परीक्षण हमेशा इसे पकड़ नहीं पाएंगे यदि आप एक "चालू" घटना को याद करते हैं।

आप "घोषणात्मक" का एक सा खो देते हैं, जो इन दिनों एक प्रवृत्ति लगती है (जैसे कि यदि दो विगेट्स एक ही मूल्य पर मैप किए जाते हैं, तो MVVM में आप बस ऐसा कर सकते हैं, जबकि अनिवार्य कोड के साथ आपको दोनों को अलग-अलग सेट करना होगा) । लेकिन यहां तक ​​कि एमवीवीएम के साथ, यह केवल मासिक धर्म के मामले में काम करता है। यदि कुछ विजेट को किसी अन्य विजेट के लॉग को प्रदर्शित करना है, तो आपको एक और हैंडलर और एक अन्य "ऑनचेंज" इवेंट लिखना होगा और इसलिए आप अंत में "घोषणात्मक" की परिभाषा को फैलाने के लिए कहेंगे ऐसा है।

2015 अपडेट

WPF MVVM अपने समय के लिए (r) विकासवादी था। जैसा कि WPF था। लेकिन वे दोनों अपने मौसा थे। प्लेन WPF ने बहुत अधिक निर्माण किया था (प्लस इसे XML पर बनाया गया था), और इससे निपटने के लिए एक तरह का दर्द था। (वास्तव में, अगर WPF ने "फ्रेमवर्क" दृष्टिकोण के बजाय सिर्फ एक "लाइब्रेरी" दृष्टिकोण लिया था, तो यह वास्तव में कुछ शांत सामान में बदल सकता था और संपूर्ण तकनीकी ब्रह्मांड अब पूरी तरह से अलग हो सकता है)। विचार MVVM के महान था, लेकिन WPF में एक MVVM फिट करने की कोशिश कुछ हद तक hacky के बाद से 1) सी # वास्तव में बॉयलरप्लेट का एक बहुत बिना इसे व्यक्त नहीं कर सकता था, और मोडल पॉपअप की तरह 2) WinForms अवशेष अभी भी वैचारिक रूप से प्रचलित थे लेकिन नहीं कर सका एमवीवीएम में आसानी से प्रतिनिधित्व किया जा सकता है। इस प्रकार यह सब चूसा।

कहा कि, यह अभी भी विंडोज पर एकमात्र यथार्थवादी विकल्प है जब आपको LOB ऐप्स के लिए पारदर्शिता या GPU की आवश्यकता होती है।

प्रतिक्रिया ने बेशक MVVM को अप्रचलित बना दिया है। मुझे निराशा हुई कि VS2015 के पास एक देशी काउंटर नहीं था। अभी के लिए हम अभी भी कच्चे WPF (जो ठीक है, का उपयोग करते हुए फंस गए हैं, लेकिन पुराना लगता है (वास्तव में अभी winforms के रूप में पुराना लगता है ), और अंतर्निहित कार्यक्षमता का एक टन नहीं है (कुछ शांत लेकिन परित्यक्त परियोजना की तरह लगता है) या एमवीवीएम के साथ, जो इस बिंदु पर कुछ भी नहीं के लिए ओवरहेड की तरह महसूस करता है, क्योंकि इसकी कमियों के लिए भी अच्छा एमवीवीएम (कोणीय 1) उजागर हुआ है।

मैं WPF MVVM से बचना चाहता हूँ। यह एक अतिरिक्त परत है, और कोई भी इसके बारे में परवाह नहीं कर रहा है।


3
हम्म .. मुझे लगता है कि यह आंशिक रूप से धर्म की बात है, लेकिन मैंने एमवीवीएम के साथ WPF के साथ सिंच बैक इन एमएम का उपयोग करके शुरुआत की। 2010? और मुझे यह बहुत पसंद आया। तब से मैं कैलिबर्न.माइक्रो और एंगुलर चला गया हूं और अभी भी इसे प्यार करता हूं - जाहिर है, एमवीवीएम में बहुत कमियां हैं जैसे आपने कहा था (डायलॉग करने के लिए कोई गैर-हैकली तरीका नहीं है)। MVVM काफी क्रियात्मक लग सकता है, लेकिन समग्र पठनीयता और स्पष्ट ui- डिजाइन / कार्यान्वयन अंतर अभी भी मेरे लिए सार्थक बनाता है।
cwap

4
"रिएक्ट ने निश्चित रूप से MVVM को अप्रचलित बना दिया है" - फिर भी अधिकांश उद्योग कोणीय का उपयोग करते हैं।
डेन

जब तक आप अपने डेस्कटॉप ऐप को वेब पर स्थानांतरित करने का निर्णय नहीं लेते हैं, तब तक सब कुछ आपके पास WPF नियंत्रणों से बंधा हुआ एक टन कोड-पीछे है।
CAD 24

1
तो, प्रतिक्रियाशील और कोणीय एक जावास्क्रिप्ट वातावरण नहीं है? WPF के साथ क्या करना है? या क्या मैं कुछ न कुछ भूल रहा हूं।
बेरिन लोरिट्श

1
@BerinLoritsch - आप कुछ याद नहीं कर रहे हैं। वह अनुच्छेद इस प्रश्नोत्तर के लिए अप्रासंगिक है; जाहिरा तौर पर डैक्स ने WPF से वेब प्रोग्रामिंग के लिए "आगे बढ़" दिया है। सेब और संतरे।
टूलमेकरसेव

3

सभी ने कहा और किया, एमवीवीएम ढांचे के साथ आप क्या कर सकते हैं, इसकी एक सीमा है।

चूंकि Microsoft ने इसे जारी किया था, इसलिए WPF चालू नहीं हुआ, इसलिए वे "किए गए" हैं। यदि प्रौद्योगिकी के लिए अद्यतन थे, तो पुस्तकालयों को भी अद्यतन करने की आवश्यकता होगी। ऐसा नहीं हुआ है।


तो यह WPF है कि 'तारीख से बाहर' है? अपने पहले वाक्य के बारे में: क्या यह है कि वास्तविक जीवन में यूआई और कोड केवल इसे एक यथार्थवादी प्रस्ताव बनाने के लिए आपस में जुड़े हुए हैं, या WPF में कुछ
मोड़

4
@ बैंजोल - ऐसा लगता है कि माइक्रोसॉफ्ट ने WPF को छोड़ दिया (या कम से कम, अब तकनीक को अपडेट नहीं कर रहे हैं)। एमवीवीएम फ्रेमवर्क के बारे में मेरा कहना सिर्फ इतना है कि अपने इच्छित उद्देश्यों के लिए उन्हें बासी मंच पर जारी रखने और उनका विस्तार करने के लिए बहुत कम है। मुझे नहीं पता कि Microsoft ने WPF को अपडेट करना क्यों बंद कर दिया, लेकिन मुझे संदेह है कि यह वही है जो आप सुझाव देते हैं - यह अधिक संभावना है कि विंडोज 8 और आरटी संसाधनों को WPF से दूर ले गए।
Oded

19
यह सच नहीं है। WPF को कई बार अपडेट किया गया है, हाल ही में .NET 4.5 में सबसे अधिक: msdn.microsoft.com/en-us/library/bb613588.aspx
17 का 26

3
यह भी ध्यान देने योग्य है कि एमएस अपने डेवलपर तकनीकों का हमेशा के लिए समर्थन करता है। MFC, 1992 में रिलीज़, Visual Studio के प्रत्येक रिलीज़ / सर्विस पैक के साथ बग फिक्स प्राप्त करना जारी रखता है।
17 की 26

5
मैं यहाँ तक दावा करूँगा कि WPF में हालिया परिवर्धन की कमी इसकी परिपक्वता का संकेत है। इसके अलावा, जैसा कि @Oded पहले से ही स्पर्श करता है, डेस्कटॉप ऐप्स, जबकि उनके पास अभी भी उनका मूल्य है, अब मोबाइल एप्लिकेशन द्वारा प्रतिस्थापित किया जा रहा है। फिर भी, यह ध्यान देने योग्य है कि WPF ने शुरू किया (घोषणात्मक यूआई प्रोग्रामिंग, एमवीवीएम, डिपेंडेंसीप्रोपरेटी और डेटा बाइंडिंग) में से अधिकांश अब WinRT और वेब प्रौद्योगिकियों (कई JS चौखटे) में रहता है। ये मुख्य मूल्य हैं जिन्होंने क्षेत्र को काफी उन्नत किया है, और मुझे विश्वास है कि वे लंबे समय तक ऐसा करना जारी रखेंगे।
सेबेस्टियन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.