2010-03-12 9 views
5

मैं आदेशप्लगइन वास्तुकला:। उतारने

  • कस्टम उपयोगकर्ता परिभाषित कार्यों को लोड करने में भीतर C#/शुद्ध एक प्लगइन वास्तुकला लागू करने की आवश्यकता
  • एक कस्टम डेटा ग्रिड/रूपांतरण के लिए
  • डेटा प्रकार से निपटने के कोड/...

गैर-स्थिर लिंक वाली असेंबली फ़ाइलों से।

क्योंकि एप्लिकेशन को कई कस्टम उपयोगकर्ता परिभाषित क्रियाओं को संभालना है, Iam स्मृति उपयोग को कम करने के लिए निष्पादित करने के बाद उन्हें अनलोड करने की आवश्यकता है।

मैं, प्लगइन आर्किटेक्चर के बारे में कई अच्छी लेख नहीं मिले जैसे:

लेकिन उनमें से कोई मुझे ठीक से एक उतारने के लिए पर्याप्त सॉसेज दिया सभा।

चूंकि प्रोग्राम वितरित किया जाना है और उपयोगकर्ता परिभाषित क्रियाएं (नाम राज्यों के रूप में) उपयोगकर्ता परिभाषित हैं: मैं असेंबली को दुर्भावनापूर्ण कोड निष्पादित करने से रोकने के लिए कैसे रोकूं (उदाहरण के लिए, मेरे प्रोग्रा को बंद करना, फ़ाइलों को हटाना)?

क्या आपके पास कोई अन्य समस्या है?

+0

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

+0

ठीक है क्योंकि मैं क्लाइंट सर्वर आर्किटेक्चर विकसित कर रहा हूं, कम से कम सर्वर को लंबे समय तक चलना चाहिए (कम से कम मुझे आशा है कि :-) –

+1

+1 अपने प्रश्न में "सॉसेज" का उपयोग करने के लिए +1! – Eccentropy

उत्तर

4

क्या आपने एमएस से ऐड-इन्स और एक्सटेंसिबिलिटी फ्रेमवर्क का उपयोग करने के बारे में सोचा है? http://msdn.microsoft.com/en-us/magazine/cc163476.aspx

माइकल

+0

@ माइकल: क्या यह ढांचा अनलोडिंग समस्या को संभालता है? –

+0

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

+0

धन्यवाद, मुझे क्या चाहिए की तरह दिखता है! –

4

एक तकनीक अतिरिक्त असेंबली को एक अलग ऐपडोमेन में लोड करना है। AppDomain को उतारने से असेंबली को उतार दिया जाएगा।

+0

मुख्य ऐपडोमेन से सामान के साथ नई ऐपडोमेन बात में उन अतिरिक्त असेंबली कैसे होगी? – BjarkeCK

+0

देखें कि [DoCallBack] (http://msdn.microsoft.com/en-US/library/system.appdomain.docallback.aspx) आपकी मदद करता है, लेकिन सामान्य रूप से, [आरटीएफएम] (http://msdn.microsoft। com/en-us/पुस्तकालय/System.AppDomain.aspx)। –

1

आप एक भी असेंबली को अनलोड नहीं कर सकते हैं। आप केवल AppDomain को उतारकर असेंबली के समूह को अनलोड कर सकते हैं, जिसका वे हिस्सा हैं।

यह अनिवार्य रूप से एसक्यूएल सीएलआर काम करता है, और एएसपी.नेट - उपयोगकर्ता द्वारा आपूर्ति की गई असेंबली के लिए एक क्षणिक ऐपडोमेन द्वारा।

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