2011-12-15 13 views
7

मैं इस साइट पर कुछ चीजें आसपास पढ़ें:मुझे अपने निनजेक मॉड्यूल और मेरे कारखानों को कहां परिभाषित करना चाहिए?

  • यह आवेदन
  • यह सबसे अच्छा हमारे पुस्तकालयों एक निर्भरता इंजेक्शन ढांचे पर निर्भर करने से बचने के है प्रक्षेपण पर हमारे कंटेनर कॉन्फ़िगर करने के लिए सबसे अच्छा है
  • उन वस्तुओं को प्रारंभ करने के लिए कारखानों का उपयोग करने की अनुशंसा की जाती है जिनके गुण रनटाइम

पर परिभाषित किए गए हैं I Ninject का उपयोग करते हैं। अगर मैं इन सिफारिशों को समझते हैं, यह आवश्यक है कि:

  • मेरे पुस्तकालयों का उपयोग नहीं करते NInject.dll
  • इसलिए, मेरा NinjectModules अपने आवेदन की परियोजना में परिभाषित किया जाना चाहिए
  • मेरे कारखानों (which are created on this principle) चाहिए मेरे आवेदन की प्रोजेक्ट में भी परिभाषित किया गया है, न कि सीधे लाइब्रेरी में

यह अजीब लगता है, खासकर कारखानों के लिए। मेरे पास कई परियोजनाएं हैं जो एक ही लाइब्रेरी का उपयोग करती हैं। क्या इन सभी परियोजनाओं को निंजा मॉड्यूल और कारखानों को फिर से परिभाषित करना चाहिए?

आपको क्या लगता है?

+0

संभावित डुप्लिकेट [फ्लुएंट आईओसी कॉन्फ़िगरेशन (वर्तमान में निनजेक्ट की कोशिश कर रहा है) के लिए सर्वश्रेष्ठ स्थान] (http://stackoverflow.com/questions/5733591/best-location-for-fluent-ioc-configuration-currently-trying-ninject) –

उत्तर

1

कॉन्फ़िगरेशन आवश्यक रूप से एप्लिकेशन असेंबली में नहीं है। यह कई समर्पित असेंबली में भी हो सकता है जिसमें कॉन्फ़िगरेशन के एक हिस्से से कुछ भी नहीं है। लेकिन जैसा कि आपने बताया है कि यह कार्यान्वयन का हिस्सा नहीं होना चाहिए। यदि आप कई परियोजनाओं पर बिल्कुल वही कॉन्फ़िगरेशन साझा करते हैं तो आप किसी मौजूदा संदर्भ को संदर्भित कर सकते हैं।

कारखानों के लिए आप भविष्य में Ninject.Extensions.Factory का उपयोग कर सकते हैं ताकि आपको उन्हें स्वयं लागू करने की आवश्यकता न हो।

+0

@ फ़िलिमिन्डीजी यह भी देखें [रेमो द्वारा इस प्रश्न में मैंने डुप्लिकेट के रूप में सुझाव दिया है] (http://stackoverflow.com/a/5746602/11635) –

+0

मुझे कॉन्फ़िगरेशन के लिए कई समर्पित असेंबली का उपयोग करने का विचार पसंद है। – Filimindji

+0

आप Ninject.Extensions.Factory का उपयोग कैसे करते हैं? – Filimindji

1

यह आपके पुस्तकालयों के संदर्भ पर एक बहुत निर्भर करता है, मैं इसे कैसे करते हैं:

  • मुख्य परियोजना में एक Bootstrapper में सब कुछ प्रमाणित करें। मैं bootstrappers जहाँ मैं अलग बातें कॉन्फ़िगर की कई स्तर हैं (मुख्य रूप से, क्योंकि मैं परियोजनाओं के एक ही वस्तु के रूप में मेरी पुस्तकालयों का उपयोग, इसलिए वे समान विन्यास है)

  • इस Ioc ढांचे से निकाला रखने के लिए हालांकि, मैं ServiceLocator pattern का उपयोग जो आप अपने कारखानों में उपयोग कर सकते हैं।

+0

मैंने पढ़ा कि सेवा लोकेटर का उपयोग वास्तव में एक विरोधी पैटर्न है। यदि संभव हो तो मैं इससे बचना चाहूंगा। या यह कारखानों के लिए ठीक है? – Filimindji

+1

मैं इसे एक एंटी पैटर्न मानता हूं जब आप अपनी सेवाओं के अंदर इसे किसी कंस्ट्रक्टर में या संपत्ति के रूप में इंजेक्शन देने के बजाय निर्भरता प्राप्त करने के लिए उपयोग करते हैं, कारखाने में आप आईओसी कंटेनर को सारणी करने की कोशिश कर रहे हैं (ताकि आप एक अलग उपयोग कर सकें)। –

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