2010-11-11 12 views
5

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

हालांकि .... हाल ही में मैं Enterprise लाइब्रेरी 5 को देख शुरू कर दिया है और यह क्या है मेरी भ्रम। कहाँ वे सभी एक साथ फिट करते हैं? तो प्रिज्म का उपयोग करता है करने के लिए नेतृत्व है एक मॉड्यूल आधारित वास्तुकला के साथ DI ... EntLib एक अनुप्रयोग ब्लॉक प्रकार वास्तुकला ... और एमई के साथ डी का उपयोग करता है एफ DI का उपयोग नहीं करता है? क्या इसका मतलब यह है कि एंटीलिब और प्रिज्म पूरी तरह से अलग वास्तुकला विधियों हैं या एक दूसरे का उप-समूह है? एमईएफ भी दोनों के साथ इस्तेमाल किया जा सकता है?

कोई भी स्पष्टीकरण का स्वागत किया जाएगा।

बहुत धन्यवाद

उत्तर

10

मैं, भी, आईओसी और MEF के बीच अंतर से हैरान था। उन्हें वर्णन करने का सबसे आसान तरीका यह था:

MEF कुछ ऐसी खोज और तत्काल करने के लिए है जिसे आप नहीं जानते हैं।

आईओसी कुछ ऐसा करने का अनुरोध करने के लिए है जिसे आप जानते हैं।

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

दूसरी ओर आईओसी - आप वर्तमान पुस्तकालय से कार्यान्वयन का अनुरोध करते हैं, और आपको एक दिया जाता है। लेकिन यह सुनिश्चित करने के लिए आप भी जिम्मेदार हैं कि एक कार्यान्वयन मौजूद है।

आईओसी निर्भरता इंजेक्शन के लिए है। एमईएफ विस्तारशीलता के लिए है।

+0

हाय जोश, आपके उत्तर के लिए बहुत धन्यवाद, उनके बारे में वर्णन करने और उनके बारे में सोचने का एक अच्छा तरीका है। मुझे माइक टॉली द्वारा चैनल 9 पर एक शानदार वीडियो मिला, इसकी सिल्वरलाइट आधारित है, लेकिन डब्लूपीएफ के लिए भी उतनी ही प्रासंगिक है: http://channel9.msdn.com/blogs/matthijs/silverlight-4-a-guided-tour-of-the -मैनेज्ड-एक्स्टेंसिबिलिटी-फ्रेमवर्क-मेफ – jameschinnock

+0

आईओसी, जब डीआई के साथ अनुमोदित किया जाता है, तो इंटरफेस का खुलासा करता है जो आपको कार्यक्षमता को "जानने" की अनुमति देता है लेकिन कक्षा को चलाने के लिए नहीं। यह काम पर बस बहुलक डिजाइन है लेकिन जटिलता एमईएफ अद्वितीय है कि यह प्रतिबिंब का उपयोग कर फ्लाई पर डीएलएल उत्पन्न करेगा। इसलिए यह अन्य कोड अड्डों से स्रोत कोड को बदलने के बिना डीएलएल को स्वैप करने की अनुमति देता है।इसलिए मैं इस घटक पर जोश से पूरी तरह से सहमत हूं, हालांकि, मुझे नहीं लगता कि यह ज्यादातर लोगों के लिए एक उचित दृष्टिकोण है। http://msdn.microsoft.com/en-us/library/ff648478.aspx http://msdn.microsoft.com/en-us/library/dd460648%28v=vs.110%29.aspx –

+0

MEF => आवेदन प्लग इन – orad

3

इन 2 पदों पर एक नज़र डालें:

उद्यम लाइब्रेरी के रूप में, v5.0 में हम इसे कंटेनर-अज्ञेयवाद कर दिया है। यद्यपि एंटरप्राइज़ लाइब्रेरी जहाजों के बाहर एकता कंटेनर के साथ जहाज है, यह आपकी पसंद या एमईएफ के किसी भी कंटेनर के साथ काम करने के लिए आर्किटेक्टेड है। आपको उचित कॉन्फ़िगरेटर प्रदान करने की आवश्यकता है (summary के अंत में कॉन्फ़िगरेटर पर जानकारी देखें)

+1

हाय Grigori, लिंक के लिए धन्यवाद, महान thats! मैं सही सोच कर कि प्रिज्म और EntLib के बीच मुख्य उच्च स्तर मतभेद वास्तव में architecting का एक अलग तरीका है में (उस शब्द मौजूद ?? :-) करता है) कार्यक्रमों हूँ? तो Prsim मॉड्यूल का उपयोग करता है - इस प्रकार यह संभवतः WPF Ui dev पर उपयुक्त है, जबकि EntLib ऐप ब्लॉक का उपयोग करता है, शायद अधिक सर्वर से संबंधित काम? प्रिज्म पर एंटीलिब का उपयोग करने का एक अच्छा उदाहरण क्या होगा? बहुत धन्यवाद, बहुत सराहना की। – jameschinnock

+0

जेम्स, इनके दिमाग में अलग-अलग उद्देश्यों हैं। प्रिज्म, (WPF या Silverlight में) समग्र UI के architecting के लिए विशिष्ट है, जबकि EntLib एक सामान्य प्रयोजन (नहीं परत-विशिष्ट) पुस्तकालय है कि इस तरह प्रवेश, सत्यापन, अपवाद प्रबंधन आदि –

+0

के रूप में आम पार काटने चिंताओं को संबोधित करता है यह अंतर उपयोगी होगा कहीं पर प्रकाश डाला, उन पुस्तकालयों विषम के लिए एक उपयोगी लिंक @jameschinnock – nicolas

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