2011-02-10 16 views
8

के लिए उपयोग आईओसी कंटेनर मुझे सही अगर मैं गलत हूँ, लेकिन MEF केवल अज्ञात बातें (प्लगइन्स) कि autodiscovered किया जा सकता है और ऑटो अप तार का एक सेट के प्रबंधन के लिए अच्छा है। भविष्य की परियोजना के लिए हमें आवेदन के ज्ञात हिस्सों को स्पष्ट रूप से कॉन्फ़िगर करने के लिए एक वास्तविक आईओसी कंटेनर की आवश्यकता होगी (जिसमें एमईएफ अच्छा नहीं है) लेकिन इसके अतिरिक्त हमें ऑटोोडिस्क्ड प्लगइन्स का समर्थन करने की आवश्यकता है (अधिमानतः विशेषताओं के बिना पीओसीओ, यदि संभव हो तो)। क्या एक आईओसी कंटेनर आसानी से/डिफ़ॉल्ट रूप से इसका समर्थन कर सकता है? यदि ऐसा है तो आप एक त्वरित संकेत दे सकते हैं कि यह एकता और संरचना मैप में कैसे किया जाता है? वे दो हैं जिन्हें हम वर्तमान में पसंद करते हैं। हम वास्तव में एक आईओसी कंटेनर और MEF पर निर्भरता से बचना चाहते हैं।प्लगइन वास्तुकला

+0

प्लगइन के लिए एमईएफ का उपयोग करने में क्या गलत है? यह बिल्कुल उस उपयोग के मामले के लिए डिज़ाइन किया गया है, और नेट फ्रेमवर्क का इसका हिस्सा है। – jeroenh

+0

Spring.Net पर एक नज़र डालें। –

+1

आपने कहा था कि आप आईओसी कंटेनर और एमईएफ रखने से बचना चाहते हैं, इसलिए मैं इसे उत्तर के रूप में पोस्ट नहीं करूंगा। लेकिन [ऑटोफैक] (http://nblumhardt.com/2010/04/introducing-autofac-2-1-rtw/) एमईएफ के साथ बहुत अच्छी तरह से एकीकृत करता है। –

उत्तर

8

मुझे लगता है कि यह है कि जब तक MEF एक पारंपरिक अर्थों में एक आईओसी कंटेनर नहीं है, यह नियंत्रण से उलट प्रदर्शन कर रहा है ध्यान देना महत्वपूर्ण है। वास्तव में, मैं उससे असहमत हूं और कहूंगा कि एमईएफ किसी अन्य की तरह एक आईओसी कंटेनर है। यूनिटी और एमईएफ कहने के बीच वास्तविक अंतर यह है कि डिफ़ॉल्ट रूप से एमईएफ स्पष्ट प्रकार के संकल्प पर संरचना का समर्थन करता है, और कॉन्फ़िगरेशन पर खोज टाइप करता है। लेकिन, जैसा कि हमने MEFContrib प्रोजेक्ट के साथ देखा है, यह पूरी तरह संभव है कि एमईएफ पारंपरिक आईओसी कंटेनर की तरह व्यवहार करे। एमईएफ आपको मॉड्यूलर घटक व्यवहार के लिए एक महान बेसलाइन प्रदान करता है, जिसमें बहुत से कठोर ग्राफ्टिंग आउट होते हैं, और जिस तरह से इसे डिज़ाइन किया गया है, यह आपको अधिक कार्यक्षमता में जोड़ने की अनुमति देता है। के उदाहरण आप एक और आईओसी कंटेनर या सेवा लोकेटर के आसपास बनाया गया अपने मौजूदा codebase है मान लीजिए, आप ऐसा करने के लिए एक ExportProvider ऊपर तार कर सकता है, हो तुम इस तरह के Common Service Locator परियोजना के रूप में एक सेवा लोकेटर के लिए एक प्रदाता ऊपर तार कर सकता है और उसके बाद एक संगत में प्लग सीएसएल कार्यान्वयन और एमईएफ आपके अन्य आईओसी कंटेनर से व्युत्पन्न प्रकारों का उपयोग कर घटक भागों को लिख रहा है। एमईएफ आपके लिए निर्भरता इंजेक्शन भी करता है।

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

उम्मीद है कि मदद करता है।

+0

क्या MEF Contrib भागों को गुणों के बिना POCO होने की अनुमति देगा? – bitbonk

+2

जिम्मेदार मॉडल एमईएफ के लिए सिर्फ डिफ़ॉल्ट प्रोग्रामिंग मॉडल है। MEFContrib में 'कन्वेंशन कैटलॉग' है, जो 'पार्ट रजिस्ट्री' के साथ संयुक्त है, आपको यूनिटी/ऑटोफैक/विंडसर इत्यादि जैसे कंटेनर जैसे प्रकारों को पंजीकृत करने की अनुमति देता है। –

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