2009-08-01 11 views
6

प्लगइन आर्किटेक्चर के जेफ और जोएल की चर्चाओं के बाद।नेट और प्लगइन आर्किटेक्चर

सी ++ में प्लगइन्स (रनटाइम लोड डीएलएस का उपयोग करके) हमेशा दर्द का थोड़ा सा होता है। आपको उन्हें सक्षम करने के लिए बहुत सारे ग्राउंड वर्क करना पड़ता है और फिर प्लगइन को सी ++ में भी लिखा जाना चाहिए, अक्सर एक ही कंपाइलर के साथ भी। COM ऑब्जेक्ट्स और एक्टिवएक्स ने इनमें से कुछ समस्याओं को हल किया लेकिन कुछ स्वयं को पेश किया।
फिर कहने के लिए, एक पाइथन इंटरफ़ेस, एक C++ ऐप में बड़ी मात्रा में काम है।

क्या मैं सोच रहा हूं कि सभी पुस्तकालयों (या असेंबली या जिन्हें आप उन्हें बुलाते हैं) एक में लिखे गए हैं। नेट भाषा को हमेशा किसी अन्य भाषा से बुलाया जा सकता है। और वस्तुओं को स्वचालित रूप से उनके बीच स्थानांतरित किया जा सकता है?

संभवतया सभी नेट भाषाएं गुई के लिए विनफॉर्म (या डब्ल्यूपीएफ) का भी उपयोग करती हैं, फिर मुख्य ऐप के गुई तक प्लगइन्स एक्सेस भी अपेक्षाकृत सरल होती है।

क्षमा करें अगर यह एक स्पष्ट बिंदु है तो मैं सिर्फ एक पुराने फैशन सी ++ प्रोग्रामर हूं। लेकिन सी ++/सीएलआई के माध्यम से मौजूदा सी ++ पुस्तकालयों का पुन: उपयोग करने में आसानी ने मुझे विश्वास दिलाया है कि सी #/नेट नेट की अधिक जांच के लायक हो सकता है।

संपादित करें - धन्यवाद, अगर मैं प्लगइन जाने का कारण था तो मैं चर्चा करने के लिए देख रहा था। नेट। मेरे व्यापार उपयोगकर्ता वीबी में एक साधारण प्लगइन लिखने में सक्षम होने के दौरान और तकनीकी उपयोगकर्ताओं को एफ # में कुछ चालाक तैयार करने में सक्षम होने के बावजूद मैं किसी और काम के बिना सी ++

+0

धन्यवाद यह प्लगइन के बारे में अधिक चर्चा थी कि क्या प्लगइन आईएल वर्किंग्स पर नेट –

उत्तर

3

हूँ मैं सोच में सही कर कि सभी पुस्तकालयों (या विधानसभाओं या जो भी आप उन्हें बुलाओ) एक में लिखा है। नेट भाषा हमेशा किसी अन्य भाषा से बुलाया जा सकता है। नेट भाषा? और वस्तुओं को स्वचालित रूप से उनके बीच स्थानांतरित किया जा सकता है?

हां। .NET में, सीटीएस की वजह से क्रॉस-भाषा संगतता संभव है (सभी .NET अनुपालन भाषाओं में उपयोग के लिए सामान्य डेटा प्रकारों का एक सेट ऑफ़र करें और टाइप संगतता सुनिश्चित करता है) और सीएलएस (न्यूनतम मानकों का एक सेट परिभाषित करता है जो सभी .NET भाषा संकलक अनुरूप होना चाहिए, और इस प्रकार भाषा अंतःक्रियाशीलता सुनिश्चित करता है)। संकलन के दौरान, किसी भी .NET-compliant भाषा का स्रोत कोड संबंधित भाषा संकलक द्वारा इंटरमीडिएट भाषा कोड में परिवर्तित हो जाता है। चूंकि सभी .NET असेंबली (EXE या DLL) मध्यवर्ती भाषा के रूप में मौजूद हैं, इसलिए वे उनके बीच इंटरऑपरेट कर सकते हैं। सभी .NET अनुपालन वाली भाषाएं समान डेटा प्रकारों का उपयोग करती हैं और केवल .NET प्रकारों के रूप में प्रदर्शित होती हैं। इसलिए यदि आप आईएल में Visual Basic .NET में int # या इंटीजर में int का उपयोग कर रहे हैं, तो इसे System.Int32 के रूप में दर्शाया गया है। [Source]

+0

+1 पर बड़ी टिप्पणियां थीं। मैंने वास्तव में अंत उपयोगकर्ताओं को सी # के अलावा किसी अन्य चीज़ के साथ प्लगइन लिखने का विचार नहीं किया था। मोनो टिप के लिए – IAbstract

0

मुख्य समस्या से स्विच करने का एक अच्छा कारण प्रतीत होता है .NET के तहत प्लगइन के साथ प्लगइन के डीएलएल (और इसके साथ इंटरऑप) से कोड को कॉल करने की क्षमता नहीं है, लेकिन सुरक्षा समस्याएं हैं। जिन्हें भी हल किया जा सकता है, आप यहां देख सकते हैं (नमूने वाले लोगों को भी एक बहुत ही सरल मेजबान + प्लगइन प्रस्तुत करना चाहिए) How to create a Plugin Model in .NET with Sandbox?

और नेट भाषाओं के बीच अंतःक्रियाशीलता के लिए - इसमें कोई समस्या नहीं है।
साझा गुई - मैंने इसे Winforms के साथ किया है, और यह बहुत कठिन नहीं था, हालांकि मुझे नहीं पता कि यह WPF के तहत भी आसान होगा, मैंने कभी कोशिश नहीं की है।

0

हाँ, आप के माध्यम से Reflection

उन सभी को प्राप्त कर सकते हैं वहाँ के बारे में सी # प्लग में संरचना लेख हैं जैसे this one

1

यदि आप प्लग-इन पुस्तकालयों की तलाश में हैं।नेट, वहाँ विकल्पों में से एक जोड़े को मैं के बारे में पता कर रहा हूँ कर रहे हैं:

  • माइक्रोसॉफ्ट से होती है MEF
  • नोवेल (मोनो) से होती है Mono.Addins

दोनों, खुला स्रोत हैं, ताकि आप देख सकते हैं प्लग-इन वातावरण बनाने के बारे में वे कैसे गए।

+0

धन्यवाद !!! – IAbstract

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