GUI अपडेट प्रबंधित करने के लिए MVVM पैटर्न बनाम रिएक्टिव प्रोग्रामिंग


11

रिएक्टिव प्रोग्रामिंग और एमवीवीएम दो दृष्टिकोण हैं जो यूआई से डोमेन परत को अलग करने की समस्या का समाधान कर सकते हैं।

  • MVVM एक व्यूमोडल को परिभाषित करके ऐसा करता है, जो UI घटकों के लिए मैप की गई डेटा संरचना है। यूआई डेटा प्रदर्शित करता है, और संभवत: उपयोगकर्ता होने पर इसे अपडेट कर सकता है।
  • एक प्रतिक्रियाशील रूपरेखा वेधशालाओं के एक ग्राफ को परिभाषित करती है जो यूआई को सूचित करती है कि डेटा का कुछ टुकड़ा बदल गया है

प्रतिक्रियाशील रूपरेखा मन की हिस्सेदारी प्राप्त कर रहे हैं, दोनों मुख्यधारा के प्लेटफार्मों में (आरएक्स इन .नेट और जावा, रिएक्ट.जेएस के साथ) और अधिक प्रायोगिक स्थानों (हैस्केल में एफआरपी)।

मैंने मुख्य रूप से कोणीय के साथ MVVM का उपयोग किया है, और मुझे अभिव्यक्ति की सरलता अनुपात काफी संतोषजनक लगता है, हालांकि मैंने केवल इसके साथ छोटे / मध्यम परियोजनाओं पर काम किया है।

एक प्रतिक्रियाशील ढांचा क्या डेवलपर को खरीदता है जो mvvm नहीं करता है?

क्या वास्तव में अंतर है? उदाहरण के लिए, नॉकआउट.जेएस को एक एमवीवीएम फ्रेमवर्क के रूप में विज्ञापित किया गया है, लेकिन इसके इंटरफ़ेस में प्रतिक्रियात्मक भावना है:

this.firstName = ko.observable("John");
this.lastName = ko.observable("Smith");

this.fullName = ko.computed(function() {
    return this.firstName() + " " + this.lastName();
}, this);

MVVM डोमेन से प्रस्तुति की चिंता को अलग करने के लिए एक पैटर्न है। रिएक्टिव फ्रेमवर्क ऐसे उपकरण हैं जिनका उपयोग इस पृथक्करण पैटर्न को प्राप्त करने के लिए किया जा सकता है। वे अनन्य नहीं हैं।
एलेक्सफॉक्सगिल

@AlexG खैर, ऐसे उपकरण हैं जो एक दृश्यम और यूआई के बीच संचार का समन्वय करते हैं। मैं उन MVVM फ्रेमवर्क को कॉल करूंगा।
साइमन बर्गोट

बिंदु खड़ा है - नॉकआउट जेवी MVVM को चिंताओं को अलग करने में सक्षम करने के लिए एक प्रतिक्रियाशील ढांचे का उपयोग करता है । MVVM को सक्षम करने के लिए AngularJS गंदी-जाँच का उपयोग करता है । वे पैटर्न को प्राप्त करने के सिर्फ विभिन्न तरीके हैं। शायद आपका सवाल है "एमवीवीएम ढांचे में प्रतिक्रियात्मक प्रतिमान क्या प्राप्त करता है जो डर्टी-चेकिंग नहीं करता है?"
एलेक्सफॉक्सगिल

@ एलेक्स जी तो आप कहेंगे कि यह एक कार्यान्वयन विवरण है? मुझे लगता है कि यह मेरे सवाल का जवाब देता है।
सिमोन बर्गोट

@ साइमन: मैं इसे क्रियान्वयन विवरण के रूप में अर्हता प्राप्त नहीं करूंगा, लेकिन ViewModel में मॉडल में परिवर्तन के विभिन्न तरीकों के रूप में और अधिक
बजे बार्ट वैन इनगेन शेनौ

जवाबों:


10

वे अलग-अलग गैर-प्रतिस्पर्धी अवधारणाएं हैं और वे आसानी से एक साथ मिलकर एक महान परिणाम उत्पन्न कर सकते हैं।

आम शब्दों में:

MVVM कोडबेहिंद (GUI / मॉडल युग्मन) अव्यवस्था से दूर होने के लिए उपयोगी है। घटना / कॉलबैक अव्यवस्था को कम करने के लिए प्रतिक्रियाशील दृष्टिकोण उपयोगी है।

मैं XAML / WPF के बारे में थोड़ा सीखने की सलाह दूंगा क्योंकि Microsoft MVVM का मूल आविष्कारक है। Microsoft ने प्रतिक्रियात्मक दृष्टिकोण के बहुत अच्छे कार्यान्वयन का भी निर्माण किया: प्रतिक्रियात्मक एक्सटेंशन।

यहाँ उन्हें संयोजित करने का एक अच्छा प्रयास है:

http://www.reactiveui.net https://github.com/reactiveui/ReactiveUI

संबंधित एसओ प्रश्न:

/programming/1763411/reactive-extensions-rx-mvvm

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.