2016-07-18 8 views
5

मैंने इस पर शोध किया है, और मुझे पता है कि आरएक्सजेवा देखने योग्य पैटर्न का उपयोग कर रहा है, और बोल्ट एक निष्पादक पर निर्भर है। अनुक्रमों में किए जाने वाले कार्यों को संभालने के लिए क्या ढांचा अच्छा होगा?आरएक्सजेवा और बोल्ट के बीच क्या अंतर है?

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

धन्यवाद!

उत्तर

13

मैंने दोनों अलग-अलग परियोजनाओं में उपयोग किया है और बोल्ट से आरएक्सजेवा में माइग्रेशन किया है। आपके प्रश्न का सरल उत्तर

अनुक्रमों में किए जाने वाले कार्यों को संभालने के लिए कौन सा ढांचा अच्छा होगा?

क्या आप आसानी से ऐसा करने के लिए ढांचे का उपयोग कर सकते हैं। वे दोनों:

  • प्रत्येक कार्य
  • अनुमति दें त्रुटियों पर कब्जा कर लिया और एक सुविधाजनक समय
में से निपटा जा लिए निर्दिष्ट किया जा करने के लिए कार्य एक और
  • के बाद एक श्रृंखलित जा करने की अनुमति दें प्रबंधक, आदि सक्षम करें

    हालांकि वह जगह है जहां बोल्ट की कार्यक्षमता काफी समाप्त होती है जबकि आरएक्सजेवा सिर्फ दे रहा है। आरएक्सजेवा की असली शक्ति अपने ऑपरेटरों में निहित है जो अन्य चीजों के साथ आपको बदलने की अनुमति देती है, & फ़िल्टर डेटा को गठबंधन करें।

    दोनों ढांचे के लिए सीखने की अवस्था खड़ी है, आरएक्सजेवा खड़ा है ... लेकिन यह काफी शक्तिशाली है।

    एक अलग रूप में विधि की गिनती के दो पुस्तकालयों के लिए

    RxJava - 4605 
    Bolts - 479 
    
  • +0

    धन्यवाद !! क्या यह बोल्ट से rxjava तक एक आसान संक्रमण था? किसी भी नुकसान में मैं भाग सकता हूँ? – reidisaki

    +0

    आरएक्स-जावा में आप कितने नुकसान करेंगे। यह बहुत शक्तिशाली और अभिव्यक्तिपूर्ण है। व्यक्तिगत रूप से 'कैश' ऑपरेटर ने वही नहीं किया जो मैंने अपेक्षित किया था। साथ ही, 'पर्यवेक्षण योग्य' और 'ऑपरेटर' लिखना मुश्किल है जो बैप्रप्रेस का सम्मान करते हैं। – Andy

    7

    Jahnold एक महान सिंहावलोकन दे दी है और मैं बस थोड़ी और जानकारी जोड़ना चाहते थे हैं:

    सबसे पहले, दोनों बोल्ट और RxJava हैं माइक्रोसॉफ्ट के एसिंक्रोनस प्रोग्रामिंग मॉडल के जावा कार्यान्वयन: बोल्ट = टास्क समांतरता लाइब्रेरी और आरएक्सजेवा = प्रतिक्रियाशील एक्सटेंशन। वे दोनों चेनिंग और थ्रेड स्विचिंग को बहुत आसानी से अनुमति देते हैं (पृष्ठभूमि < -> मुख्य धागा)।

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

    • तो बोल्ट पृष्ठभूमि काम है कि इस तरह के सामान्य नेटवर्क अनुरोध के रूप में एक मान देता है, फ़ाइलों को बंद डिस्क, आदि और
    • पढ़ने के लिए अच्छा होगा
    • RxJava चीजें हैं जो एक से अधिक मान जैसे की सदस्यता वापसी के लिए अच्छा होगा जीपीएस निर्देशांक, onClick घटनाओं, आदि

    तो बेहतर आपके सवाल का जवाब देना:

    क्या ढांचा कार्य था निपटने के लिए अच्छा होगा अनुक्रमों में टी करने की जरूरत नहीं है?

    मुझे दूसरे से पूछना होगा: क्या आप अपने काम को एकल परिणाम या एकाधिक परिणाम होने का इरादा रखते हैं?

    +0

    यह कुछ अनुरोधों और दूसरों के लिए एकाधिक के लिए एकल परिणाम होगा ... क्षमा करें मुझे पता है कि मदद नहीं करता है। – reidisaki

    +0

    कोई कारण नहीं है कि आप दोनों का उपयोग क्यों नहीं कर सकते! –

    +0

    @GrantlandChew हालांकि आपका जवाब बोल्ट की तरफ पक्षपातपूर्ण नहीं है, लेकिन यह एक अस्वीकरण रेखा लिखना अच्छा होता। (बहुत अच्छा जवाब बीटीडब्ल्यू। मैं एक ही संदेह में था और बोल्ट के साथ जाऊंगा)। –

    0

    ये दो पुस्तकालय दो अलग-अलग समस्याओं को हल करते हैं।

    बोल्ट

    बोल्ट पारदर्शी रूप से एक पृष्ठभूमि धागा करने के लिए कोड धक्का द्वारा अतुल्यकालिक प्रोग्रामिंग सरल करता है। बोल्ट भी भयानक कोड घोंसले को कम करने के प्रयासों का एक अच्छा सौदा खर्च करता है जो प्रारूप की तरह नेस्टेड पिरामिड पैदा करता है।

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

    RxJava

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

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

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