5

मुझे पता है उत्सुक हूँ अगर यह संभव है के साथ Spring.Net आईओसी बदलें को Spring.Net के अंतर्निहित में आईओसी Ninject के साथ कंटेनर की जगह। हम अपनी अन्य परियोजनाओं में आईओसी के लिए मेरी टीम पर निनजेक्ट का उपयोग करते हैं, इसलिए यदि संभव हो तो मैं उस कंटेनर का उपयोग जारी रखना चाहूंगा।एक और कंटेनर (जैसे Ninject)

क्या यह संभव है? क्या किसी ने Ninject-Spring.Net एडाप्टर लिखा है ??

संपादित

मैं Spring.Net पैकेज (डेटा का उपयोग, लेन-देन, आदि) के कई हिस्सों की तरह है, लेकिन मैं वास्तव में निर्भरता इंजेक्शन कंटेनर की तरह नहीं है। मुझे लगता है कि Ninject

साथ

धन्यवाद

उत्तर

2

जेफरी, क्या आप कृपया ऐसा करने का प्रयास कर सकते हैं जो आप करने की कोशिश कर रहे हैं? मुझे तुम्हारा बिंदु नहीं दिख रहा है, क्यों/कहाँ/आप 2 कंटेनरों को कैसे मिश्रण करना चाहते हैं। यदि आपका कोड पूरी तरह से कंटेनर-अज्ञेयवादी है, तो आपको वायरिंग करने के लिए कंटेनर का उपयोग करने में कोई समस्या नहीं होगी।

+0

एरिच, मैं दोनों को मिश्रण नहीं करना चाहता, मैं पूरी तरह से स्प्रिंग.Net कंटेनर को निनजेक्ट के साथ बदलना चाहता हूं (हम इसे अन्य परियोजनाओं पर उपयोग करते हैं और मैं इसे सरल, धाराप्रवाह एपीआई पसंद करता हूं)। साइड सवाल: क्या Spring.et सामान्य रूप से संपत्ति या कन्स्ट्रक्टर इंजेक्शन के आसपास लिखा है? मैंने देखा है कि कुछ वर्गों को लगता है कि वे प्रोपेरी इंजेक्शन के साथ कॉन्फ़िगर किए गए हैं। –

+0

मुझे स्पष्टीकरण दें क्योंकि मैं देखता हूं कि गलतफहमी कहां से आ रही है। उदाहरण के लिए, मुझे स्प्रिंग.Net में उपयोग किए गए डीएओ और एडीओ.Net रैपर पसंद हैं, लेकिन मैं Spring.Net के हिस्से के रूप में प्रदान किए गए कंटेनर का उपयोग किए बिना उन घटकों को कॉन्फ़िगर करने में सक्षम होना चाहता हूं। –

+1

जेफरी, आईओसी कंटेनर से अलग स्प्रिंग.NET की अन्य पुस्तकालयों का उपयोग करना बिल्कुल ठीक है। कन्स्ट्रक्टर-बनाम संपत्ति इंजेक्शन के बारे में, Spring.NET आपको प्रति ऑब्जेक्ट के बीच चयन करने की अनुमति देता है। जब स्वचालित तारों की वस्तुओं की बात आती है, तो आप स्प्रिंग कंटेनर को पहले कन्स्ट्रक्टर की तलाश में भी कॉन्फ़िगर कर सकते हैं और - यदि कोई भी नहीं मिला है या संतुष्ट हो सकता है - इसके बजाय संपत्ति इंजेक्शन आज़माएं। सरल धाराप्रवाह एपीआई के बारे में आप मेरी नई स्प्रिंग चेकआउट करना चाहेंगे। कॉनफिग प्रोजेक्ट http://eeichinger.blogspot.com/2009/12/merry-xmlless-codeconfig-for-springnet.html। –

6

मैं Ninject के लिए Spring.NET परिवर्तित करने के बारे में विशेष रूप से बात नहीं कर सकते को बदलने के लिए चाहते हैं, लेकिन सामान्य तौर पर, सभी आवेदन कोड डि कंटेनर-नास्तिक होने के लिए लिखा जाना चाहिए।

DI कंटेनर के बारे में सोचने का सबसे अच्छा तरीका Hollywood Principle है। डीआई शब्दों में, यह बन जाता है, DI कंटेनर को कॉल न करें, यह आपको पर कॉल करेगा।

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

अधिकांश नमक अपने नमक के लायक इन पैटर्न को मूल रूप से समझते हैं, इसलिए कोई विशेष, डी कंटेनर-विशिष्ट, हुप्स के माध्यम से कूदना आवश्यक नहीं होना चाहिए।

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

यदि आप इस सिद्धांत का पालन करते हैं, तो आप आसानी से एक डी कंटेनर का आदान-प्रदान कर सकते हैं।

+0

+1। सहमत - आप निश्चित रूप से एक सेवा लोकेटर के रूप में उपयोग के लिए कंटेनर के चारों ओर गुजरने से बचना चाहते हैं। – TrueWill

+0

मैं आपके बयान से सहमत हूं, मैं सिर्फ यह जानना चाहता था कि स्प्रिंग.Net इस तरह से विकसित किया गया था या नहीं। मुझे इसके साथ कोई अनुभव नहीं है और मैं इसमें समय बिताना नहीं चाहता हूं अगर मैं इसके साथ निनजेक्ट का उपयोग नहीं कर सकता –

2

मैं सब कुछ मैं अपने अन्य जवाब में कहा मतलब:

निम्न पदों अधिक जानकारी के लिए है। हालांकि, मुझे यह भी एहसास है कि यदि आप वर्तमान में सेवा लोकेटर के रूप में Spring.NET का उपयोग करते हैं (यानी आपके पास कोड कोड पर आपके कोड बेस पर छिड़काव कोड है), तो यह उत्तर बहुत उपयोगी नहीं हो सकता है।

यदि ऐसा है, तो आपको Common Service Locator प्रोजेक्ट सहायक मिल सकता है। यह एक ओपन सोर्स प्रोजेक्ट है जो विशिष्ट सेवा लोकेटरों को दूर करने का प्रयास करता है, जो उन्हें एक सामान्य इंटरफेस के पीछे छुपाता है।

हालांकि उन्हें निनजेक्ट कार्यान्वयन प्रतीत नहीं होता है, उनके पास स्प्रिंग.NET कार्यान्वयन है, इसलिए हो सकता है कि आप वहां आधा रास्ते ले सकें।

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

+0

हाय मार्क, मैं आपके बहुत विस्तृत और सूचनात्मक उत्तरों की सराहना करता हूं लेकिन मेरे पास पहले जैसा ही टिप्पणी है: मैं वास्तव में जानना चाहता हूं कि अगर किसी ने स्प्रिंग.Net के साथ निनजेक्ट का उपयोग किया है और/या उनका अनुभव क्या रहा है, तो उन्होंने इसे कैसे तार दिया, इत्यादि? –

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