2010-07-20 14 views
15

के रूप में MEF का उपयोग करते हुए इस जैसे कुछ सामान को पढ़ने के बाद: http://mikehadlow.blogspot.com/2008/09/managed-extensibility-framework-why.htmlएक आईओसी

मैं समझता हूँ कि MEF कुछ featcures है कि मैं एक आईओसी में नहीं मिलेगा, और MEF कुछ आईओसी सामान probaboly के रूप में उन्नत नहीं है कि है कि क्योंकि कुछ अन्य आईओसी सिस्टम ऑफर कर सकते हैं।

मुझे एमईएफ सामान की आवश्यकता है। क्या मुझे आईओसी ढांचे की भी आवश्यकता है या क्या मैं एमईएफ के साथ ठीक हूं?

आशेर

+0

कृपया समुदाय और अपने अनुमोदन दर्ज़ा के लाभ के लिए एक जवाब निशान। – RyBolt

उत्तर

8

आपकी आवश्यकताओं/मौजूदा कोड पर निर्भर करता है।

यदि आपके पास आईओसी कंटेनर पर एक मौजूदा कोड आधारभूत संरचना है, तो आप वास्तव में इन्हें एमईएफ के साथ जोड़ सकते हैं। हाल ही में मैं एक एएसपी.नेट एमवीसी + एमईएफ ढांचा तैयार कर रहा हूं, और मेरे कुछ पाठक पूछ रहे हैं कि एमआईएफ + एमवीसी ढांचे के साथ एकता को एकीकृत कैसे किया जाए। Common Services Locator नामक एक परियोजना के लिए धन्यवाद, यह वास्तव में आसान साबित हुआ।

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

यह MEFs ExportProvider मॉडल के लाभों में से एक है, आप आसानी से किसी भी अतिरिक्त प्रदाताओं में प्लग के लिए विभिन्न स्रोतों से निर्यात खींच शुरू करने के लिए कर सकते हैं।

पिछले हफ्ते I blogged about combining MEF+Unity (और एमईएफ + ऑटोफैक एक अन्य एक्सपेपल के रूप में), और हालांकि मेरे उदाहरण एएसपी.नेट एमवीसी के लिए तैयार हैं, अवधारणा अधिकांश अन्य कार्यान्वयन के लिए समान है।

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

मुझे पता है आप किसी भी सवाल :)

3

आईओसी के एक उद्देश्य इस प्रकार है, तो चलो।

एमईएफ विशेष रूप से अच्छी तरह डिज़ाइन किया गया है, अगर आप अपने सिस्टम में कुछ प्रकार के प्लगइन्स रखना चाहते हैं। या कोड जिसे आप ठीक से चलाने के लिए भरोसा नहीं करते हैं (अपवादों को संभालने के लिए मत भूलना)।

लेकिन, यह एक भूमि के ऊपर के साथ इसलिए आता है।

अगर आप सिर्फ आईओसी करना है, के रूप में यह एक्स्टेंसिबल और परीक्षण योग्य सॉफ्टवेयर के लिए एक अच्छा डिजाइन पैटर्न है चाहते हैं, तो मैं, AutoFac की सिफारिश करेंगे के रूप में यह एक ही पुरुष से है। कम या ज्यादा :-)

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

प्लगइन्स के लिए

-> MEF

अपने आईओसी के लिए

-> एक सरल आईओसी

3

हम एक आईओसी कंटेनर के रूप में MEF का उपयोग करें और यह हमारे लिए काम कर रहा है।

कहा जा रहा है, तो आप ग्लेन ब्लॉक द्वारा इस ब्लॉग पोस्ट पर एक नज़र, जहां वह कमियों को सूचीबद्ध लेना चाहिए आपके सामने आ सकने: Should I use MEF for my general IoC needs?

+0

MEF2 (.NET 4.5 फ्रेमवर्क में) उस आलेख में उल्लिखित मुद्दों को हल करता है। –

1

मैं हाल ही में ऑटोफ़ैक पर स्विच करने से पहले वेब एप्लिकेशन में "आईओसी" के लिए प्रदाता मॉडल का उपयोग कर रहा था।

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

मुझे लगता है कि यदि आप एक स्वच्छ कोड आधार चाहते हैं तो एमईएफ सबसे अच्छा समाधान होगा क्योंकि इसमें अधिक सम्मेलन हैं, इसलिए अनिवार्य रूप से लोग फ़ोल्डर में घटकों को छोड़ सकते हैं और परिवर्तनों को बढ़ावा देने के लिए किसी भी कॉन्फ़िगरेशन को नहीं बदल सकते हैं। यह अच्छा है लेकिन संभवतः मेरे परिदृश्य के लिए ओवरकिल जहां एक साधारण विन्यास ओवरराइड पर्याप्त है।

मेरे ब्लॉग पोस्ट पर और अधिक पढ़ें - उम्मीद है कि ब्लॉग इसके बारे में कुछ अच्छी टिप्पणी भी मिल जाएगा: http://healthedev.blogspot.com/2011/12/making-custom-built-applications.html

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