android - डैगर और मक्खन चाकू बनाम एंड्रॉइड एनोटेशन




dependency-injection dagger (6)

@ क्रिलीप द्वारा वर्णित रेडिटिट reddit.com/r/androiddev/comments/28vlrt/… में कोई ऐसा व्यक्ति है जिसने एक ही प्रोजेक्ट पर तीनों का उपयोग किया है , डैगर + बटरनाइफ की अत्यधिक बात करता है लेकिन एंड्रॉइडएनोटेशन को इसकी जगह भी देता है:

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

डैगर सेटअप और कॉन्फ़िगर करने के लिए दर्द हो सकता है लेकिन यह करने के बाद इसे अच्छी तरह से लायक है। लेकिन फिर, क्योंकि ये सभी एक-दूसरे से अलग हैं, यह सब इस बात पर निर्भर करता है कि परियोजना के लिए आपकी क्या ज़रूरत है।

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

मैं एक एंड्रॉइड ऐप के लिए निर्भरता इंजेक्शन (डीआई) ढांचे का मूल्यांकन कर रहा हूं। शीर्ष दावेदार हैं: डैगर (मक्खन चाकू के साथ) और एंड्रॉइड एनोटेशन। मैं समझता हूं कि डैगर और बटरकिनीफ एक ही स्रोत-वर्ग से हैं और वे एक दूसरे के पूरक हैं। यहां महत्वपूर्ण मैट्रिक्स हैं जिन्हें मैं ढूंढ रहा हूं:

  1. उपयोग की आसानी (हमारा निर्माण ग्रैडल पर आधारित है और हम एंड्रॉइड स्टूडियो आईडीई का उपयोग करते हैं)
  2. परीक्षण समर्थन (हम कार्यात्मक परीक्षण और यूनिट परीक्षण के लिए रोबोलेक्ट्रिक के लिए रोबोटियम का उपयोग करते हैं)
  3. प्रदर्शन (डी ढांचे प्रतिबिंब का उपयोग करें, जो एक तेज है?)

Google विशेष रूप से निर्भरता इंजेक्शन का उपयोग न करने के लिए कहता है।

लेकिन उनके अनुरोध को पढ़कर वे Guice और प्रतिबिंब आधारित डी लाइब्रेरी के लिए अधिक संदर्भ दे रहे हैं। एंड्रॉइड एनोटेशन जैसे पुस्तकालय संकलन समय उत्पन्न कोड को नियोजित करने के बजाय प्रतिबिंब का उपयोग नहीं करते हैं, जबकि butterknife और dagger एंड्रॉइड के लिए अनुकूलित प्रतिबिंब की एक छोटी राशि का उपयोग करता है लेकिन माना जाता है कि android annotation से थोड़ा अधिक शक्तिशाली है। यह वास्तव में प्रोजेक्ट पर निर्भर करता है और आप कितने प्रदर्शन हिट करने के इच्छुक हैं। मेरी राय में सिर्फ butterknife का उपयोग करके कोड विकास को तेज करने के लिए पर्याप्त है। यदि आपको थोड़ी अधिक android annotation उपयोग करने की ज़रूरत है और आखिरकार यदि आप प्रतिबिंब के कारण मामूली प्रदर्शन हिट करने के इच्छुक हैं तो पावरहाउस butterknife आधारित प्रतिबिंब उपयोग dagger + butterknife साथ प्रदर्शन को पूरी तरह से नष्ट किए बिना सबसे अच्छा विकल्प।


आखिरकार यदि आप तीन में से किसी एक का उपयोग करते हैं, तो आपको एंड्रॉइड के डाटाबेसिंग में मुश्किल समय लगेगा। यदि आपको प्रदर्शन पर विचार करने की आवश्यकता है तो यह सबसे तेज़ है:

developer.android.com/tools/data-binding/guide.html


आपको Toothpick पर आज़माएं।

टूथपिक (रीडमे प्रति) है:

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

यह ज्यादातर मामलों में डैगर 2 से भी तेज हो सकता है, और यह बहुत आसान है।

नोट: हाँ, मैं लेखकों में से एक हूं।


मुझे लगता है कि (प्रदर्शन के संदर्भ में) बेहतर है ButterKnife और AndroidAnotation दूसरा है। ButterKnife संकलन समय एनोटेशन (RetentionPolicy.CLASS) का उपयोग करता है, लेकिन यह रनटाइम पर कोड इंजेक्ट करता है, जिसके परिणामस्वरूप अधिक समय लगता है। इसके बजाय, AndroidAnnotations, संकलन समय पर सभी एनोटेशन को संसाधित करें।


यहां डोजोन ब्लॉग में अच्छा लेख है।

हमें प्रत्येक की सुविधाओं की तुलना करने की आवश्यकता है, जैसे कि:

  • न्यूनतम जार की आवश्यकता है
  • एक्शनबारशरॉक संगतता
  • क्लिक श्रोताओं के लिए इंजेक्शन
  • POJO इंजेक्शन
  • प्रदर्शन

तितली में केवल पोजो इंजेक्शन गायब है! ऐसा लगता है जैसे बटरनाइफ विजेता है!

Source





butterknife