2010-06-01 17 views
6

में गतिशील प्लग-इन आधारित कार्यक्षमता कैसे विकसित करें मैं अपने आवेदन के लिए प्लग-इन समर्थन प्रदान करने के विभिन्न तरीकों के लिए चारों ओर देख रहा हूं। आदर्श रूप से, मैं एक कोर कार्यक्षमता तैयार करूँगा और आयात करने, डेटा निर्यात करने जैसे विभिन्न प्लग-इन/एडॉन्स विकसित करने वाले विभिन्न ग्राहकों के आधार पर ... प्लग-इन आर्किटेक्चर के माध्यम से सी # अनुप्रयोग एक्स्टेंसिबल बनाने के लिए कुछ विधियां उपलब्ध हैं?सी #

चलिए एक उदाहरण बनाते हैं। यदि हमारे पास एक ऐसा प्रोग्राम है जिसमें एक मुख्य मेनू (फ़ाइल, संपादित करें, देखें, एट अल।) शामिल है, जिसमें ट्री व्यू के साथ निर्माता (समूह, जीएम, अब) द्वारा समूहित कारों के विभिन्न ब्रांड प्रदर्शित करता है। कार पर राइट क्लिक करने से एक संदर्भ मेनू प्रदर्शित होता है जिसमें 'डिलीट कार' होने का एकमात्र विकल्प होता है।

आप एप्लिकेशन को कैसे विकसित कर सकते हैं ताकि प्लग-इन तैनात किए जा सकें ताकि आप एक ग्राहक को ट्री व्यू में एक नया ब्रांड देखने की अनुमति दे सकें, आइए होंडा कहें, और कार संदर्भ मेनू को भी सीमित करें ताकि वे अब 'एक कार पेंट'?

ग्रहण/आरसीपी विकास में यह विस्तार बिंदुओं और प्लग-इन द्वारा आसानी से संभाला जाता है। सी # इसे कैसे संभालता है? मैं अपने स्वयं के प्लग-इन आर्किटेक्चर को विकसित करने और एमईएफ पर पढ़ने की तलाश में हूं।

उत्तर

10

MEF शुरू करने के लिए एक अच्छी जगह होगी।

ग्लेन ब्लॉक का आलेख Managed Extensibility Framework: Building Composable Apps in .NET 4 with the Managed Extensibility Framework एक अच्छा अवलोकन प्रदान करता है।

बीटीडब्ल्यू, शीर्षक से बेवकूफ मत बनो - आप .NET 3.5 SP1 के लिए भी MEF प्राप्त कर सकते हैं।

+0

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

+0

यदि आप एमवीवीएम (http://msdn.microsoft.com/en-us/magazine/dd419663.aspx) का उपयोग करते हैं तो यह पता लगाना आसान हो जाना चाहिए। यह आपको मेनस और मेनू इटम्स को एक अंतर्निहित (प्लग करने योग्य) ऑब्जेक्ट मॉडल से बांधने में सक्षम बनाता है। –

1

विजुअल स्टूडियो 2010 एमईएफ का उपयोग करता है, इसलिए मुझे लगता है कि यह एक सुरक्षित शर्त है जो एमएस में जाने का पसंदीदा तरीका है। System.Addin हमेशा थोड़ा भारी लग रहा था, लेकिन अगर आपको हमेशा काम करने के लिए एडिन की आवश्यकता होती है और आपका कोडबेस लगातार विकसित होता है तो यह बेहतर विकल्प हो सकता है।

यदि आप एडिन को अलग करने की परवाह करते हैं, तो आपको AppDomains पर पढ़ना चाहिए। मुझे एक डेमो प्रोजेक्ट मिला है जिसे मैंने isolating assemblies within an AppDomain here से निपटने में मदद करने के लिए बनाया है, जो आपको दिलचस्प लगेगा। अलगाव के बारे में त्वरित तथ्यों: केवल आपके प्रकारों को सीमा पार करना चाहिए और इन प्रकारों को सील कर दिया जाना चाहिए, क्रॉस डोमेन इवेंट हैंडलिंग से चिल्लाना चलाना चाहिए, और एडिन को कभी भी मार्शलबीरफोब ऑब्जेक्ट का विस्तार नहीं करना चाहिए।