2009-04-02 14 views
23

मैं इस समय Managed Extensibility Framework (MEF) के आस-पास अपना सिर प्राप्त करने की कोशिश कर रहा हूं और थोड़ा सा खोद रहा हूं। तो मेरे दिमाग में मैं वर्तमान समीकरण है मैं एक ग्रहण पृष्ठभूमि है:.NET के लिए MEF OSGi है?

MEF =~ OSGi for .NET

मैं अब तक जो सुना है के आधार पर। क्या मैं सही लाइनों पर हूं?

+1

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

उत्तर

20

स्कॉट हंसेलमैन ने ग्लेन ब्लॉक के साथ podcast 148 में एमईएफ के बारे में विनिर्देशों को हाइलाइट करने में मदद की।

ओएसजीआई की तुलना में, एमईएफ "नियंत्रण में उलटा" और OSGi पर बनाया गया है: यह नहीं है: यह (ओएसजीआई) लाइफ साइकिल लेयर के आधार पर एक अलग तंत्र के माध्यम से नया बंडल खोजेगा।

MEF एप्लिकेशन विस्तारशीलता पर केंद्रित है। यह DI को विभिन्न एक्सटेंशन, लिखने की रणनीति के रूप में उपयोग करता है, हालांकि यह अपने आप में एक सामान्य डी कंटेनर नहीं है।

के बाद से अंतिम बिंदु भ्रामक हो सकते हैं, पॉडकास्ट की transcripts मदद कर सकते हैं:

तरह से मैं मूल रूप से यह स्थिति हालांकि, दोनों के बीच अंतर यह है कि आईओसी कंटेनर प्रबंधन के बारे में वास्तव में कर रहे हैं एक विभिन्न वातावरण में चीजों का सेट ज्ञात है, जैसे कि मैं अपने डिस्क वातावरण में लॉगर चाहता हूं, मुझे अपने परीक्षण वातावरण में एक नकली लॉगर चाहिए।

तो MEF एक अज्ञात चीजों के सेट के प्रबंधन के बारे में वास्तव में है और क्या है कि करने पर निर्भर करता है कि एक आईओसी कंटेनर में मुझे क्या करना है या तो एक सम्मेलन आधारित या एक पंजीकरण, विशिष्ट पंजीकरण तंत्र, यहाँ कहने के लिए क्या करते हैं है लॉगर का मतलब है, इसका मतलब यह है कि इसका मतलब क्या है।

एमईएफ कोड पर एक कोड और एक खोज तंत्र और एनोटेशन का उपयोग करता है, जो विशेषताएँ हैं, जहां सिस्टम में जो कुछ भी दिखाई देता है, वही है।

तो फिर, यह एक उच्च स्तर पर ले जा रही है, इसके बारे में आप MEF का उपयोग वास्तव में अज्ञात चीजों का एक सेट के प्रबंधन के लिए है, तो आप आईओसी कंटेनर का उपयोग जाना जाता चीजों का एक सेट के प्रबंधन के लिए।

निष्कर्ष: (में से एक) मुख्य अंतर यह खोज सिद्धांत (बनाम जीवन चक्र आईओसी)

+0

मुझे लगता है कि पॉडकास्ट थोड़ा गलत लिखा गया था: "आईओसी कंटेनर वास्तव में चीजों के सेट के प्रबंधन के बारे में हैं" होना चाहिए "आईओसी कंटेनर वास्तव में चीजों के एक सेट सेट के प्रबंधन के बारे में हैं" –

+0

@Daniel धन्यवाद। फिक्स्ड। – VonC

+0

आप उल्लेख करते हैं कि एमईएफ "नियंत्रण में उलटा" पर बनाया गया है। http://ayende.com/Blog/archive/2008/09/25/the-managed-extensibility-framework.aspx कहता है कि प्रबंधित एक्सटेंसिबिलिटी फ्रेमवर्क एक आईओसी कंटेनर नहीं है। – bhadra

5

सूचना है कि OSGi ताकि बनाया गया एक आईओसी कंटेनर एक मॉड्यूल के रूप में यह की चोटी पर प्रदान किया जा सकता है वास्तव में, ओएसजीआई के साथ-साथ अन्य तंत्र के लिए कई आईओसी कंटेनर भी हैं: डीएस, आईपीओजेओ, ब्लूप्रिंट, और निस्संदेह अन्य।

+2

शुद्ध आईओसी दृष्टिकोण में कमियों को दूर करने के लिए ओएसजीआई का उपयोग करने के बारे में एक दिलचस्प लेख मिला: http://www.theserverside.com/feature/OSGi-है-ढांचे के लिए सभी मॉड्यूलर अनुप्रयोगों। – Jonathan

0

बस इस पर ठोकर खाई, लेकिन Prism ओएसजीआई में सबसे नज़दीकी चीज है जो मैंने देखा है! दस्तावेज़ों में उनके Modular Application Development अनुभाग को देखें।

बस मॉड्यूल निर्भरताओं के अपने उदाहरण को देखें (लगभग बंडलों के बराबर!):

<modules> 
    <module assemblyFile="Modules/ModuleD.dll" moduleType="ModuleD.ModuleD, ModuleD" moduleName="ModuleD"> 
    <dependencies> 
     <dependency moduleName="ModuleB"/> 
    </dependencies> 
</module> 

यह माइक्रोसॉफ्ट पर अधिक की तरह लगता है, पैटर्न & आचरण टीम एक तरह-की OSGi एलायंस समकक्ष के रूप में कार्य करता है।

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