मैं वर्तमान में .NET के लिए रिएक्टिव एक्सटेंशन्स फ्रेमवर्क के साथ ग्रिप कर रहा हूँ और मैं अपने विभिन्न परिचय संसाधनों (मुख्य रूप से http://www.introtorx.com ) के माध्यम से अपना काम कर रहा हूँ ।
हमारे आवेदन में कई हार्डवेयर इंटरफेस शामिल हैं जो नेटवर्क फ़्रेम का पता लगाते हैं, ये मेरे IObservables होंगे, फिर मेरे पास विभिन्न प्रकार के घटक हैं जो उन फ़्रेमों का उपभोग करेंगे या डेटा पर कुछ प्रकार के परिवर्तन करेंगे और एक नए प्रकार के फ़्रेम का उत्पादन करेंगे। अन्य घटक भी होंगे जिन्हें उदाहरण के लिए प्रत्येक n'th फ्रेम को प्रदर्शित करने की आवश्यकता है। मुझे विश्वास है कि Rx हमारे अनुप्रयोग के लिए उपयोगी होने जा रहा है, हालाँकि मैं IObserver इंटरफ़ेस के कार्यान्वयन विवरण से जूझ रहा हूँ।
मेरे द्वारा पढ़े जा रहे संसाधनों के अधिकांश (यदि सभी नहीं) ने कहा है कि मुझे स्वयं IObservable इंटरफ़ेस को लागू नहीं करना चाहिए, लेकिन दिए गए कार्यों या कक्षाओं में से एक का उपयोग करना चाहिए। मेरे शोध से यह प्रतीत होता है कि एक बनाने से Subject<IBaseFrame>
मुझे वह मिलेगा जो मुझे चाहिए, मेरे पास मेरा एक धागा होगा जो हार्डवेयर इंटरफ़ेस से डेटा पढ़ता है और फिर मेरे Subject<IBaseFrame>
उदाहरण के OnNext फ़ंक्शन को कॉल करता है । विभिन्न IObserver घटकों को तब उस विषय से उनकी सूचनाएं प्राप्त होंगी।
मेरा भ्रम इस ट्यूटोरियल के परिशिष्ट में दिए गए सलाह से आ रहा है जहाँ यह कहता है:
विषय प्रकारों के उपयोग से बचें। आरएक्स प्रभावी रूप से एक कार्यात्मक प्रोग्रामिंग प्रतिमान है। विषयों का उपयोग करने का मतलब है कि अब हम राज्य का प्रबंधन कर रहे हैं, जो संभावित रूप से परिवर्तनशील है। एक ही समय में उत्परिवर्तन की स्थिति और अतुल्यकालिक प्रोग्रामिंग दोनों से निपटना सही होने के लिए बहुत कठिन है। इसके अलावा, कई ऑपरेटरों (विस्तार विधियों) को यह सुनिश्चित करने के लिए सावधानीपूर्वक लिखा गया है कि सदस्यता और अनुक्रम का सही और सुसंगत जीवनकाल बनाए रखा जाए; जब आप विषयों का परिचय देते हैं, तो आप इसे तोड़ सकते हैं। यदि आप स्पष्ट रूप से विषयों का उपयोग करते हैं तो भविष्य के रिलीज़ में महत्वपूर्ण प्रदर्शन में गिरावट देखी जा सकती है।
मेरा आवेदन काफी महत्वपूर्ण है, मैं स्पष्ट रूप से उत्पादन कोड में जाने से पहले आरएक्स पैटर्न का उपयोग करने के प्रदर्शन का परीक्षण करने जा रहा हूं; हालाँकि मुझे चिंता है कि मैं कुछ ऐसा कर रहा हूँ जो कि Subject क्लास का उपयोग करके Rx फ्रेमवर्क की भावना के विरुद्ध है और फ्रेमवर्क के भविष्य के संस्करण में प्रदर्शन को नुकसान पहुंचाने वाला है।
क्या मुझे जो चाहिए वो करने का एक बेहतर तरीका है? हार्डवेयर पोलिंग थ्रेड लगातार चल रहा है कि क्या कोई पर्यवेक्षक हैं या नहीं (एचडब्ल्यू बफर बैकअप देगा अन्यथा), इसलिए यह बहुत गर्म अनुक्रम है। मुझे तब कई पर्यवेक्षकों को प्राप्त फ्रेम पास करने की आवश्यकता है।
किसी भी सलाह की काफी सराहना की जाएगी।