संकलन-समय IOC


11

क्या किसी ने संकलन समय पर आईओसी करने के लिए एक परियोजना शुरू की है (संभवतः रोसलिन या लिनक मेथडइन्फो का उपयोग करके)?

आईओसी कंटेनरों के साथ मेरा अनुभव इस प्रकार बहुत अच्छा रहा है, कुछ छोटे मुद्दों को छोड़कर

  1. कई आईओसी कंटेनर स्टार्ट-अप के लिए धीमे होते हैं, जैसा कि रिज़ॉल्यूशन लॉजिक में से अधिकांश होता है
  2. यह सुनिश्चित करना अक्सर कठिन होता है कि संकल्प संभव है, क्योंकि संकलन अब यह सुनिश्चित नहीं करता है कि निर्माणकर्ता को बुलाया जा सकता है
  3. अक्सर IOC कंटेनर रनटाइम में एक छोटा ओवरहेड जोड़ते हैं (कुछ बहुत छोटे नहीं होते हैं, अक्सर वे जो जल्दी शुरू होते हैं धीरे-धीरे चलते हैं)

यह मुझे लगता है कि आदर्श समाधान आईओसी के बजाय एक फैक्ट्री क्लास को जोड़ने वाली बिल्ड चेन के लिए एक संकलन कदम जोड़ना होगा।

क्या किसी ने इसे पहले किया है? यदि नहीं, तो क्यों नहीं?

जवाबों:


4

ऐसा करने से इस तरह की समस्या नहीं होनी चाहिए। बस एक ही IoC तर्क चलाएं और कक्षाओं को तत्काल करने के बजाय, आप उस कोड को उत्सर्जित करते हैं जो तात्कालिकता करता है।

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


हां मुझे पता है कि यह संभव है। लेकिन मुझे अभी तक एक IoC कंटेनर को देखना है जो इसे करता है। मैंने यह भी नोट किया है कि वर्तमान प्रवृत्ति कोड (धाराप्रवाह एपीआई) में पंजीकरण की ओर लगती है। यह देखते हुए, मैं लिखने पर विचार कर रहा हूँ कि कहा IoC कंटेनर।
ArTs

मुझे लगता है कि हिरो को याद है ( github.com/philiplaureano/Hiro ) संकलन समय पर इसका सामान कर सकता है।
lzcd

2
"लेकिन ऐसा करने से, आप IoC का एक बहुत बड़ा लाभ निकाल रहे हैं: यह बदलने की क्षमता कि कैसे सहकर्मियों की रचना पूरी एप्लिकेशन को फिर से जोड़ने के बिना की जाती है।" यह मुझे लगता है कि इसे पूरे आवेदन पर लागू करना ओवरकिल है; आप एप्लिकेशन के प्रत्येक भाग को प्लग-इन में बदल रहे हैं। इसके अतिरिक्त, दोनों तकनीकों को सह-अस्तित्व में सक्षम होना चाहिए - कोई कारण नहीं है कि आप कुछ घटकों को संकलन समय पर और कुछ रनटाइम पर तार नहीं कर सकते।
डोभाल

मैं नहीं देखता कि यह कैसे एक बड़ा फायदा है। किस संदर्भ में आप रनटाइम पर घटकों को पूरी तरह से बदल रहे हैं? कुछ विन्यास मामलों का उपयोग हो सकता है?
andyczerwonka 14

4

Java / Android के लिए डैगर ऐसा करता है। यह कुछ रनटाइम मैजिक (जैसे कि गुइसेज़) को लगभग पूरी तरह से संकलन-समय कोडेन अनुभव प्रदान करने के लिए बलिदान करता है, जिसमें अधिकांश रनटाइम त्रुटियों को संकलन त्रुटियों में परिवर्तित करना शामिल है।

.NET में भी अच्छा होगा।

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