.NET रिएक्टिव फ्रेमवर्क के लिए अच्छा परिचय [बंद]


218

Microsoft दस्तावेज़ीकरण के अलावा, क्या Microsoft प्रतिक्रियाशील (Rx) ढांचे के लिए एक अच्छा परिचय और ट्यूटोरियल है?

इसके अलावा, एक अच्छा उदाहरण क्या है (कोड के साथ) जो प्रतिक्रियाशील एक प्रोग्रामिंग समस्या को आसान बनाता है जो पारंपरिक अतुल्यकालिक कोडिंग तकनीकों का उपयोग करके हल करना चुनौतीपूर्ण है?


मैं देखता रहता हूं - मुझे एक अच्छा विचार होने से पहले बहुत सारे उदाहरण देखने होंगे।
सैम हैरवेल

4
मैंने Rx के साथ WPF में लाइव बिंग खोज का एक छोटा सा डेमो बनाया: blog.andrei.rinea.ro/2013/06/01/…
आंद्रेई Reanea

5
मैं अपने ब्लॉग पर पोस्ट की एक श्रृंखला में वास्तव में इस सवाल का जवाब देता हूं: rehansaeed.co.uk/reactive-extensions-part1-replacing-events
मुहम्मद रेहान सईद

जवाबों:


97

अद्यतन : नीचे दिए गए ब्लॉग पोस्ट मेरी ऑनलाइन पुस्तक www.IntroToRx.com द्वारा दिए गए हैं । यह एक व्यापक 19 अध्याय की पुस्तक मुफ्त में उपलब्ध है। आप इसे वेब पर ब्राउज़ कर सकते हैं, या अपनी किंडल के लिए मोबिल वर्जन डाउनलोड कर सकते हैं। आप इसे छोटे शुल्क (~ 99c / 77p) के लिए अमेज़न से डायरेक्ट प्राप्त कर सकते हैं। यदि पुस्तक आपकी आवश्यकताओं या अपेक्षाओं को पूरा नहीं करती है, तो मुझे (लेखक को) बताएं और हम v2 के लिए बेहतर करेंगे।

हॉट / कोल्ड पोस्ट के लिंक के लिए धन्यवाद। यह पूरी श्रृंखला का केवल एक हिस्सा है ,

  1. आरएक्स का परिचय
  2. स्थैतिक और विस्तार के तरीके
  3. लाइफटाइम प्रबंधन - पूरा करना और सदस्यता समाप्त करना
  4. प्रवाह नियंत्रण
  5. कई IObservable धाराओं का संयोजन
  6. निर्धारण और सूत्रण
  7. गर्म और ठंडे वेधशालाएँ
  8. परीक्षण आरएक्स
  9. बफर, विंडो, जॉइन और ग्रुप जॉइन

मैं इस ब्लॉग को अधिक आरएक्स परिचयात्मक सामान के साथ अपडेट करता रहूंगा।

अधिक उन्नत सामान के लिए आप Rx फोरम (MSDN) पर जाना चाहते हैं ।


7
मैं अपने पैरों को आरएक्स के बारे में सीख रहा हूं क्योंकि सभी शिक्षण सामग्री वीडियो के रूप में हैं। इस पाठ-आधारित संसाधन प्रदान करने के लिए +1।
डेनियल शिलिंग

यह लिंक मृत है।
मास्लो

2
इस लिंक को लंबे समय तक जीवित रखें
पूर्ण समय कंकाल

1
मैं जेम्स (EnumerateThis) के साथ काम करता हूं और उसने वर्षों में इसे नहीं छुआ है। वह इसे पुनर्जीवित करने का समय या भूख नहीं लगती है
ली कैंपबेल

85

यहां बहुत सारे कोड उदाहरणों के साथ एक विकी साइट है। यह दर्शाता है कि .NET Rx फ्रेमवर्क की विभिन्न विशेषताओं का उपयोग कैसे करें: http://rxwiki.wikidot.com/101samples

मैंने पाया कि यह सबसे व्यापक साइट है, और जिसको शुरू करने के लिए सबसे तेज है।


12
अब तक मैं बता सकता हूं कि यह विकी आपको इतना नहीं बताता कि आपको किस संदर्भ को शामिल करना है। जो बल्कि ... निराशा है।
जॉर्ज माउर

umm केवल dll जोड़ते हैं और ऑब्जेक्ट एक्सप्लोरर को खोलते हैं और कक्षा की खोज करते हैं। बेशक दृश्य स्टूडियो में राइट क्लिक संदर्भ मेनू भी मदद करता है
जो

62

आरएक्स-फ्रेमवर्क के लिए एमएसडीएन साइट

किसी डेवलपर के गहरे जाने के लिए, स्रोत कोड

आरएक्स के बारे में शांत ऑस्ट्रियाई मुख्य

यह सबसे अच्छा मैंने देखा है: DevCamp 2010 कीनोट - Rx: अपने अतुल्यकालिक प्रोग्रामिंग ब्लूज़ का इलाज

चैनल 9 पर कुछ दिलचस्प वीडियो

किम हैमिल्टन और वेस डायर: इनसाइड .NET Rx और IObservable / IObserver इन BCL (VS 2010)

आरएक्स के निर्माता के साथ एक साक्षात्कार: विशेषज्ञ से विशेषज्ञ: ब्रायन बेकमैन और एरिक मीजर - .NET के अंदर प्रतिक्रियाशील रूपरेखा (आरएक्स)

आरएक्स के निर्माता से एक परिचय

एक कोडप्रोजेक्ट अनुच्छेद

लिंक के साथ एक और पाठ्यक्रम पहला ब्लॉग (नया)


5
+1 इन वीडियो की अत्यधिक अनुशंसा करें, मैंने एक बहुत कुछ सीखा, IQueryable और IQbservable पर बार्ट डे स्मेट के कुछ वीडियो भी देखें, आप आरएक्स के इनसाइड के बारे में बेहतर समझ सकते हैं।
गिदोन

1
"DevCamp 2010 कीनोट" वीडियो के लिए पूर्ण नमूने परियोजना यहां है: bartdesmet.net/download/Rx40Samples.zip
Omer Raviv

16

यहाँ कुछ का एक उदाहरण है जो प्रतिक्रियाशील प्रोग्रामिंग के साथ करना आसान है, लेकिन क्लासिक घटनाओं के साथ गन्दा (यदि चुनौतीपूर्ण नहीं) है, तो यह पंक्तियों को खींचता है जबकि माउस बटन नीचे है। यह पठनीय है, कोई स्पष्ट स्थिति नहीं है:

var pen = new Pen(Color.Red, 3);
var graphics = this.CreateGraphics();

var mouseMoveWhileDown = 
    from md in this.GetMouseDown()
    from mv in this.GetMouseMove().Until(this.GetMouseUp())
    select new Point(mv.X, mv.Y);

mouseMoveWhileDown
    .Pairwise()
    .Subscribe(tup => graphics.DrawLine(pen, tup.Item1, tup.Item2)); 

(मुझे स्वीकार करना चाहिए कि उस उदाहरण में, पेयरवाइज़ () घर में पली-बढ़ी है ...)

IObservable के बारे में सबसे महत्वपूर्ण बात यह है कि यह IEnumerable की तरह ही 'कंपोजेबल' है।

मैं किसी अन्य उत्तर में उल्लिखित वीडियो की पूरी तरह से अनुशंसा करता हूं। वास्तव में Channel9 पर इस विषय पर कई अलग-अलग वीडियो हैं:


कहां से आता है। सुनील कहां से आता है, मैं इसका इस्तेमाल कभी नहीं कर सकता, मुझे एक संदर्भ याद आ रहा है
टिमोथी

1
@ टिमोथी, मुझे लगता है कि यह एक पुराने संस्करण के लिए एक थ्रोबैक हो सकता है। वह या मैंने खुद लिखा था (मैं उस समय IObservable विस्तार विधियों को लागू करने के साथ खेल रहा था)। मैं जो देख सकता हूं, उसमें से प्रतिक्रियाशील एक्सटेंशन के नवीनतम संस्करण में एक विधि है TakeUntil, जो एक अच्छी फिट की तरह दिखती है।
बेंजोल

यह एक भयानक उदाहरण है जो Rx की भावना को दर्शाता है। धन्यवाद।
दान अब्रामोव

क्या आप Pairwise () के कार्यान्वयन को साझा कर सकते हैं?
विस्फ़ोटक

1
@blaster, इस कार्यान्वयन के बारे में कैसे var pairwise = source.Zip(source.Skip(1), (x, y) => new Tuple(x, y)):।
मिस्टरमेटफोर

12

एक बार जब आप हैंड्सऑनलैब सहित कुछ मूल सामानों के माध्यम से चले गए हैं, तो सुनिश्चित करें कि आप ली कैंपबेल के हॉट एंड कोल्ड ऑब्ज़र्वबल्स की जांच कर रहे हैं, जो मेरे लिए आरएक्स से कुछ रहस्यमय रहस्य ले गए :)


4

आपको प्रतिक्रियात्मक LINQ के बारे में लेखों की यह श्रृंखला मिल सकती है (उपयोगी): प्रतिक्रियाशील प्रोग्रामिंग (II।) - प्रतिक्रियाशील LINQ का परिचय

उसके पास इसका उपयोग करके एक खेल लिखने का एक उदाहरण है, इसलिए यह उम्मीद की जानी चाहिए कि आप क्या देख रहे हैं।



4

विचित्र रूप से, प्रतिक्रियाशील एक्सटेंशन होमपेज एक दर्जन वीडियो और ब्लॉग से लिंक करता है, लेकिन व्यापक आधिकारिक संदर्भ प्रलेखन से लिंक करना भूल जाता है। यह एक रोने वाली शर्म है, अगर आप टीम को जानते हैं, तो कृपया उन्हें अपनी वेबसाइट को ठीक करने के लिए कहें!


3

Rx सैंडबॉक्स के साथ खेलते हैं जो कि विभिन्न कॉम्बिनेटरों का अर्थ है एक बहुत ही सहज ज्ञान युक्त दृश्य प्राप्त करता है। यह मैंने देखा सबसे अच्छा शिक्षण उपकरण है।


2

इन लेखों के माध्यम से जाओ, और विशेष रूप से, संबंधित स्रोत कोड डाउनलोड करें और इसके साथ खेलें।

इस पर भरोसा करने से मदद मिलेगी


2

दूसरे प्रश्न का उत्तर देने के लिए, यहां एक समस्या है जो आरएक्स से बहुत लाभ उठा सकती है। इसे "जल्दी अमीर हो जाओ" कहा जाता है।

आपने एक ही नाम से एक गेम विकसित किया है और यह बहुत अच्छी तरह से बिक रहा है। लेकिन यह केवल थोक के लिए आपके स्टोर पर उपलब्ध है। नकदी प्रसंस्करण को आसान बनाने के लिए, आपके पास एक कन्वेयर बेल्ट है जो आपकी ओर बहती है।

(कृपया ऊपर कहानी बदलने के लिए स्वतंत्र महसूस करें :))

बिक्री के लोग इस पर नकदी के बाउंड वार्डों को लगाते हैं, जिसमें कोई लेबल नहीं होता है जो कि वेड में राशि और बिलों के प्रकार को दर्शाता है। आपका काम पैसा छांटना और गिनना है। बाद में, जब आपको अधिक पैसे मिलते हैं, तो आप दूसरों की मदद करने के लिए किराया कर सकते हैं।

इस मामले में, स्रोत नकदी (निर्माता) के वार्डों का एक अतुल्यकालिक स्रोत है। आपके कर्मचारी और आपूर्तिकर्ता पैसे की उम्मीद करते हैं, लेकिन आपको वार्डों का उपभोग करना होगा, उन्हें अनपैक करना होगा और उन्हें चुकाने के लिए अपने कस्टम बिजनेस लॉजिक का इस्तेमाल करना होगा।

बिक्री के लोग अपने स्वयं के धागे पर चल रहे हैं, ताकि उन्हें बेल्ट पर फेंकने के लिए आपको गिनने के लिए इंतजार न करना पड़े। आपका समय सबसे अच्छा उपयोग किया जाता है यदि आपको बताया जाए कि जब गिनती के लिए अधिक पैसा उपलब्ध है, तब तक आप अन्य काम कर सकते हैं।

आप एक बाइट [] द्वारा प्रत्येक वड का प्रतिनिधित्व कर सकते हैं।

यह एक काफी सामान्य वास्तविक दुनिया की स्थिति है; जब आप किसी भी संसाधन को पुनः प्राप्त करते हैं [उदाहरण के लिए, खोज नेटवर्क, छवियों या वीडियो के लिए वेबपृष्ठ] बाह्य उपकरणों से किसी नेटवर्क या डेटा पर, तो आप उन्हें बाइट्स (संभवतः हेडर के साथ) प्राप्त करते हैं। एक एकल थ्रेड में, या एक बहु-थ्रेड वातावरण में, जिसके साथ काम करना बहुत मुश्किल है, आप उन्हें एकत्र और संसाधित करते हैं। अब नहीं है!!


यह सिर्फ कुछ निर्माता (बिक्री के लोग) हैं जो एक ही IObserver <T> पर OnNext को कॉल करते हैं और फिर उपभोक्ता इसकी सदस्यता लेते हैं लेकिन यह सुनिश्चित करते हैं कि यह एक अलग थ्रेड पर अवलोकन कर रहा है जहां इसे (OnNext) का उत्पादन किया जा रहा है।
ली कैंपबेल


1

क्या आपका "Microsoft दस्तावेज़ीकरण को छोड़कर" खंड चैनल 9 पर वीडियो तक विस्तारित है?

प्रतिक्रियाशील ढांचे के निर्माता एरिक मीजर: - विशेषज्ञ से विशेषज्ञ: ब्रायन बेकमैन और एरिक मेजर - .NET रिएक्टिव फ्रेमवर्क (आरएक्स) के अंदर

एकदम नया : .NET के लिए Rx एक्सटेंशन के साथ शुरुआत करना



1

एंड्रियास हॉफमैन लिंक के अलावा (जब मैं Rx सीख रहा था तो उन्हें बहुत मदद मिली)

यहां बार्ट डी स्मेट (एक बहुत चालाक व्यक्ति जो चीजों को वास्तव में अच्छी तरह से समझाता है) में से कुछ हैं:

Rx के माध्यम से किंडा एक रन:
Rx - अपने अतुल्यकालिक प्रोग्रामिंग ब्लूज़ का इलाज

कुछ गैरी इंसिडेंस + कुछ दर्शन, ये वीडियो वास्तव में ज्ञानवर्धक हैं:
मिन LINQ - LINQ का सार
(उपरोक्त वीडियो कैसे LINQ थोड़े अन्य चीजों से संबंधित है, जैसे Rx से संबंधित है)

IQbservable पर अवलोकन - IQueryable के दोहरे


1

DEVHOL202 - .NET के लिए प्रतिक्रियाशील एक्सटेंशन के साथ अतुल्यकालिक ब्लूज़ का इलाज करना (PDF, 2 MB) के मेरे द्वारा अब तक देखी गई सबसे अच्छी लैब / ट्यूटोरियल है। यह आपको लाइब्रेरी की मूल बातों के माध्यम से निर्देशित करता है, ताकि आप जो सीखा है उस पर निर्माण और डिजाइन कर सकें।

एक जावास्क्रिप्ट संस्करण भी है। "लैब पर प्रतिक्रियाशील एक्सटेंशन हाथ" के लिए Google खोजें।


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