2016-01-11 10 views
10

http://docs.reactiveui.net/en/index.html से:ReactiveUI (RxUI) बनाम प्रतिक्रियाशील एक्सटेंशन

ReactiveUI एक MVVM रूपरेखा है कि नेट सुंदर, परीक्षण योग्य उपयोगकर्ता इंटरफ़ेस बनाने के लिए है कि किसी भी मोबाइल पर रन या आप रिएक्टिव एक्सटेंशन का उपयोग करने की अनुमति देता है डेस्कटॉप मंच।

क्या आरएक्सयूआई किसी भी तरह प्रतिक्रियाशील एक्सटेंशन से अलग है?

मुझे एमवीवीएमआरओआर/लाइट + आरएक्स पर आरएक्सयूआई क्यों पसंद करना चाहिए? इतना खास क्या है? क्या आरएक्सयूआई ऐसा कुछ कर सकता है जो आरएक्स नहीं कर सकता? क्या यह अधिक संक्षिप्त है? क्या यह अधिक आरामदायक है?

मैंने जिथब पेज https://github.com/reactiveui/ReactiveUI#a-compelling-example पर उदाहरण देखा। लेकिन क्या मैं सिर्फ आरएक्स के साथ ऐसा नहीं कर सकता?

पीएस क्या एपीआई डॉक्टर कहीं है?

उत्तर

17

आपने यहां बहुत सारे प्रश्न शामिल किए हैं, इसलिए मैं उन्हें एक-एक करके जवाब दूंगा।

क्या आरएक्सयूआई किसी भी तरह प्रतिक्रियाशील एक्सटेंशन से अलग है?

हां। Reactive Extensions"अवलोकनशील अनुक्रमों और LINQ-style क्वेरी ऑपरेटरों का उपयोग करके एसिंक्रोनस और ईवेंट-आधारित प्रोग्राम लिखने के लिए एक लाइब्रेरी है।" इसका विशेष रूप से यूआई के साथ कुछ लेना देना नहीं है। आरएक्स आपको पर डेटा की एक धारा पर एक सामान्य अमूर्त प्रदान करता है।

आरएक्सयूआई एक एमवीवीएम फ्रेमवर्क है, जिसका अर्थ है it is a library of classes helping you implement MVVM pattern in your app

क्या आरएक्सयूआई ऐसा कुछ कर सकता है जो आरएक्स नहीं कर सकता? क्या यह अधिक संक्षिप्त है? क्या यह अधिक आरामदायक है?

यह एक अलग उद्देश्य प्रदान करता है। आरएक्स विधियों का एक सेट प्रदान करता है, जो आम तौर पर आपको अपने ऐप में डेटा को स्थानांतरित करने में मदद कर रहे हैं। आरएक्सयूआई का उपयोग यूजर इंटरफेस बनाने के लिए किया जाता है। यह हुड के तहत आरएक्स का उपयोग करता है, और इसके घटकों से आरएक्स-प्रकार एपीआई (अर्थात्, IObservble<T>) का खुलासा करता है।

उदाहरण के लिए, ReactiveUI में एक ICommand कार्यान्वयन, ReactiveCommand, exposes a property called ThrownException कहा जाता है, प्रकार IObservable<Exception> की है जो (यदि आप इसे "के रूप में त्रुटियों की एक अनुक्रम" पढ़ सकते हैं)।

ध्यान दें कि IObservable<T> इंटरफ़ेस प्रकार .NET बेस क्लास लाइब्रेरी का हिस्सा है, सचमुच इस प्रकार के साथ चल रहे सभी उपयोगी कार्यों को प्रतिक्रियाशील एक्सटेंशन लाइब्रेरी में शामिल किया गया है।

लेकिन क्या मैं सिर्फ आरएक्स के साथ ऐसा नहीं कर सकता?

नहीं, क्योंकि - उदाहरण के लिए - आरएक्स आपको प्रत्येक एमवीवीएम ढांचे का एक महत्वपूर्ण हिस्सा ICommand कार्यान्वयन प्रदान नहीं करता है।

मुझे एमवीवीएमआरओआर/प्रकाश + आरएक्स पर आरएक्सयूआई क्यों पसंद करना चाहिए? इतना खास क्या है?

आप अपने एप्लिकेशन में रिएक्टिव एक्सटेंशन एक बहुत का उपयोग करना चाहते हैं, तो आप RxUI (बल्कि अन्य MVVM ढांचे की तुलना में) का उपयोग करने के, क्योंकि वे एक दूसरे के साथ वास्तव में अच्छी तरह से एकीकृत पसंद कर सकते हैं। संयुक्त, वे तुम्हें बॉक्स से बाहर कार्यक्षमता का एक बहुत कुछ के साथ प्रदान करते हैं (बाहर, ReactiveCommand या WhenAny जाँच उदाहरण के लिए,

कहा जा रहा है, as Paul Betts (creator of RxUI) stated it:।

आप अन्य MVVM चौखटे के साथ ReactiveUI उपयोग कर सकते हैं, आपको एक या दूसरे को प्रतिबद्ध करने की आवश्यकता नहीं है। आरएक्सयूआई में कई विधियां जैसे किसी भी ऑब्जेक्ट पर जब कोई काम करता है और रनटाइम पर निर्धारित करता है कि उन्हें कैसे कनेक्ट किया जाए।

आरएक्सयूआई निश्चित रूप से एक बुफे टेबल है (जो आप चाहते हैं उसे ले लो !), एक सात कोर्स भोजन नहीं :)

और अंत में:

पी.एस. क्या एपीआई डॉक्टर कहीं है?

हाँ वहाँ है! यहाँ एक नज़र डालें: https://reactiveui.net/api/

एक तरफ ध्यान दें के रूप में, Reactive Programming section of the docs ब्राउज़ करने के लिए स्वतंत्र लग रहा है, जो आप बुनियादी शब्दावली और अवधारणाओं ढांचे :) पीछे खड़े के कुछ समझा जाएगा

+0

asynchronicity async की तुलना में धीमी की RxUI implemenetation है/इंतजार कर रहे हैं? मैं इसे एंड्रॉइड डिवाइस पर इस्तेमाल करने की योजना बना रहा हूं, इसलिए इससे कोई फर्क नहीं पड़ता ... – tower120

+0

ठीक है, इस तरह के एक प्रश्न का उत्तर देना वास्तव में कठिन/असंभव है (देखें http://ericlippert.com/2012/12/17/performance- rant/पता करने के लिए क्यों!)। इसके अलावा, क्या आपका मतलब * आरएक्स * एसिंक्रोनिसिटी का कार्यान्वयन था? क्योंकि आरएक्सयूआई इस तरह कुछ भी लागू नहीं करता है। इसके अलावा, आरएक्सयूआई बहुत अच्छी तरह से आरएक्स और टीपीएल (उर्फ async इंतजार) दोनों के साथ interoperates। – pmbanka

+0

नहीं, मैं बल्कि नए थ्रेड की शुरुआत के रूप में async/await (जो एक ही धागे पर होता है) का मतलब था। मैं वास्तव में नहीं जानता कि यह आरएक्स में कैसे कार्यान्वित किया गया। लेकिन मुझे पता है कि async/await जितना तेज़ हो सकता है ... और धागे के बीच सिंक्रनाइज़ेशन बहुत सी CPU समय ले सकता है। – tower120

संबंधित मुद्दे