मैं आरएक्स की मूल बातें समझता हूं। जहां मैं संघर्ष कर रहा हूं कि आप वास्तव में अकादमिक उदाहरणों से परे इसका उपयोग कैसे करेंगे? कुछ सामान्य, सरल वास्तविक दुनिया के परिदृश्य क्या हैं जहाँ Rx .NET में हमारे पास आज की तुलना में बेहतर समाधान है?
मैं आरएक्स की मूल बातें समझता हूं। जहां मैं संघर्ष कर रहा हूं कि आप वास्तव में अकादमिक उदाहरणों से परे इसका उपयोग कैसे करेंगे? कुछ सामान्य, सरल वास्तविक दुनिया के परिदृश्य क्या हैं जहाँ Rx .NET में हमारे पास आज की तुलना में बेहतर समाधान है?
जवाबों:
अच्छे उदाहरणों के एक समूह के लिए , 101 Rx नमूने विकी देखें
आरएक्स आपको कोड लिखने की अनुमति देता है जो समवर्ती घटनाओं को एक साथ ऑर्केस्ट्रा करता है। यदि आपने कभी टीपीएल (यानी टास्क) का उपयोग किया है, तो कंटीन्यूड बैकफ्लिप्स को कंटीन्यू करने के लिए कंट्राविथ या वेटअल्स के साथ सही चीजों पर प्रयास करना होगा, आरएक्स आपके लिए है।
उदाहरण के लिए, "इस सरणी में प्रत्येक आइटम के लिए, एक वेब सेवा को कॉल करें, और जब वे सभी अनुरोध वापस आते हैं, तो कुछ और करें। यदि उनमें से कोई भी विफल हो जाए, तो पूरी बात विफल हो जाए"।
प्रकटीकरण, बेशर्म प्लग आगे: जेसी लिबर्टी और मैंने आरएक्स के बारे में जो पुस्तक लिखी थी, वह इस सवाल को हल करने के लिए डिज़ाइन की गई थी, "मैं अपने दिन के काम में आरएक्स का उपयोग कैसे करूं?" "मैं इसके साथ क्या कर सकता हूं ?"
सबसे पहले, IObservable एक घटना है । तो कहीं भी आप आंतरिक रूप से घटनाओं का उपयोग करते हैं, तो आप IObservable का उपयोग कर सकते हैं - और यदि आपको बाद में इस घटना में LINQ लागू करने की आवश्यकता है, तो आप इसे बिना रीफ़ैक्टरी के कर सकते हैं।
दूसरे, आरएक्स किसी भी स्थिति के लिए फिट है जब आपको अपने कोड को अतुल्यकालिक रूप से चलाने की आवश्यकता होती है । उदाहरण के लिए, एक वेब सेवा को कॉल करना, या एक बड़ी छवि को लोड करना।
लेकिन जब यह वास्तव में चमकना शुरू हो जाता है - यदि आपका कार्यक्रम IObservable उपयोग के कुछ "महत्वपूर्ण द्रव्यमान" तक पहुंचता है और आप विभिन्न वेधशालाओं को संयोजित करना शुरू करते हैं तो आप चकित हो जाएंगे कि कुछ कार्य कितने आसान हो जाते हैं।
अब दोनों मामलों में, डेटा प्राप्त करने का मानक तरीका घटनाओं के माध्यम से है, लेकिन अगर मुझे क्वेरी सिंटैक्स, या रचना चाहिए, तो आरएक्स मुझे देता है जहां इवेंट नहीं होते हैं।
Rx बहुत सामान्य है, इसलिए इसमें असीमित उपयोगिता है, जैसे IEnumerable / IEnumerator में असीमित उपयोगिता है। IE मूल्यों को खींचता है, IO मूल्यों को धक्का देता है।
फॉरच एक ठोस उदाहरण है जहां IEnumerables काम में आते हैं, लेकिन यह IEnumerable, या उपज या कुछ भी नहीं समझाता है। वही आरएक्स के साथ जाता है।
किसी भी चीज़ को देखने के बिंदु से, या एक धक्का बिंदु से देखने में सक्षम होने के नाते, और दिशा या साधनों को नियंत्रित करने में सक्षम होने के नाते, बहुत शक्तिशाली है, क्योंकि अब आप लाइनक्यू क्वेरी का उपयोग करके, इच्छा के आसपास गणनाओं को धक्का और खींच सकते हैं। आईओ के मुकाबले "फ्री" के लिए ऑपरेटर, क्योंकि यह IE का गणितीय दोहरी है।
मैंने अभी-अभी Rx पर अपनी पहली नज़र डाली है, लेकिन एक मज़ेदार परियोजना जिसका उपयोग मैं इसके लिए करूँगा, वह है एक सिल्वरलाइट विजेट बनाना जो हमारे ASP.NET MVC वेब ऐप में गतिविधि प्रदर्शित करता है (जिसे एक्शन मेथड्स कहा जाता है, जिसके द्वारा उपयोगकर्ता, आदि) । ऐसा लगता है कि Rx इस परियोजना में बहुत सी चीज़ों की मदद कर सकता है, जैसे कि संगामिति प्रबंधन और थ्रॉटलिंग।