मैं यह तय करने की कोशिश कर रहा हूं कि मेरे आईओसी कंटेनर को समाहित करने के लिए अतिरिक्त प्रयासों को पार करना है या नहीं। अनुभव मुझे बताता है कि मुझे अपने ऐप्स और किसी भी तृतीय-पक्ष घटक के बीच encapsulation की एक परत डालना चाहिए। मुझे नहीं पता कि यह ओवरकिल पर सीमा है या नहीं।क्या मुझे अपने आईओसी कंटेनर को समाहित करना चाहिए?
मैं स्थितियों में, जहां मैं कंटेनर स्विच करने के लिए चाहते हो सकता है के बारे में सोच सकते हैं। उदाहरण के लिए, मेरा वर्तमान कंटेनर बनाए रखा जाता है, या एक अलग कंटेनर अधिक हल्के वजन/प्रदर्शन करने वाला साबित होता है और मेरी आवश्यकताओं को बेहतर ढंग से फिट करता है। यदि ऐसा होता है, तो मेरे पास संभावित रूप से करने के लिए बहुत सारी तारों की तार होगी।
स्पष्ट होने के लिए, मैं पंजीकरण और प्रकार के संकल्प के समावेशन पर विचार कर रहा हूं। मुझे लगता है कि यह संकल्प को समाहित करने के लिए कोई ब्रेनर नहीं है - मुझे उम्मीद है कि कंटेनर को एक सहायक/उपयोग वर्ग का प्रतिनिधि होना आम बात है।
संपादित करें:
धारणा है कि मैं तार-अप करने के लिए अपने प्रकार के प्रोग्राम के रूप में प्रकार की सुरक्षा के लिए, संकलन समय जाँच और refactorability पसंद करते है। यह है कोड और उस कंटेनर पर निर्भरता जिसे मैं स्वयं से बचाने के लिए देख रहा हूं।
मैं कई अन्य परियोजनाओं के लिए एक आईओसी कंटेनर का भी उपयोग कर रहा हूं जो बहुत सारे रिश्ते साझा करते हैं, लेकिन कंटेनर के साथ काम करने का दर्द है इसलिए मैं बदलना चाहता हूं। लेकिन, एक परिवर्तन का मतलब है कि मैं पंजीकरण कोड की पुन: प्रयोज्यता खो देता हूं। इसलिए, मैं encapsulation पर विचार क्यों कर रहा हूँ। यह एक बड़ा बोझ नहीं है, लेकिन एक ऐसा जो मैं चाहता हूं, फिर भी, कम करना पसंद है।
मैं करने के लिए देख रहा हूँ:
- कंटेनरों के कंटेनर/संस्करणों में परिवर्तन के प्रभाव को कम करना
- परियोजनाओं है कि विभिन्न कंटेनरों का उपयोग कर सकते
- इंटरफेस प्रदान करते हैं भर में टाइप पंजीकरण स्थिरता के कुछ स्तर प्रदान करें विधियों जो मुझे समझ में आती हैं (रजिस्टर सिंगलेटन < टी, टी > रजिस्टरटाइप < टी, टी > (कुछ लाइफटाइमप्रोवाइडर) के बजाय - उदाहरण के रूप में एकता का उपयोग करके)।
- कंटेनर को परिस्थितियों/स्केलेबिलिटी आवश्यकताओं के रूप में बढ़ाएं उदा। संकल्प/पंजीकरण के दौरान बेहतर कैशिंग, लॉगिंग, आदि जोड़ना।
- टाइप मैपिंग पंजीकृत करने के लिए अपना खुद का मॉडल प्रदान करें।
- मैं एक विधानसभा/पैकेज में RegistrationHandler वस्तुओं का एक समूह बनाना चाहते हैं और इसलिए मैं आसानी से कहीं और कोड बदले बिना कई वर्गों और स्वचालित रूप से पिक इन संचालकों भर में पंजीकरण जिम्मेदारियों विभाजित कर सकते हैं कहते हैं।
मुझे पता है यह एक सा व्यक्तिपरक है, इसलिए पेशेवरों/विपक्ष उपयोगी हो सकता है
धन्यवाद!
यह हो गया है। (.NET के लिए, कम से कम।) [सामान्य सेवा लोकेटर लाइब्रेरी] (http://www.codeplex.com/CommonServiceLocator) किसी भी मामले में मैं श्री Knesek से सहमत हूं। आपको आमतौर पर केवल अपने शीर्ष-स्तरीय वर्ग में अपने कंटेनर पर निर्भरता की आवश्यकता होती है। – TrueWill
जो मैं प्राप्त करने की कोशिश कर रहा हूं उसके लिए ओवरकिल जैसा लगता है। मैं बस बदलाव के प्रभाव को कम करना चाहता हूं, क्या मुझे कंटेनरों को बदलने के लिए चुनना चाहिए (मेरी वर्तमान परियोजना में, या भविष्य की परियोजनाओं में)। मैं इसे पूरा करने के लिए _another_ तृतीय-पक्ष लाइब्रेरी पेश नहीं करना चाहता हूं। –
संबोधित substaintially uin http://davybrion.com/blog/2009/11/integrating-your-ioc-container-with-agatha/ –