मैं केवल अतिरिक्त टोनी के सवालों का जवाब देना चाहता हूं।
यदि आप एक COM बनाना चाहते हैं जिसे वीबीस्क्रिप्ट/जेस्क्रिप्ट से या पुराने "क्लासिक" एएसपी से एक्सेस किया जा सकता है तो आपको आईडीस्पैच को लागू करना होगा।
विजुअल बेसिक 6 में या एमएस ऑफिस के वीबीए में कोई भी दोनों तरीकों का उपयोग कर सकता है। यदि आप अपने COM में संदर्भ जोड़ते हैं, तो आप "प्रारंभिक बाध्य" (IU अज्ञात या VTable) का उपयोग करेंगे। यदि आप CreateObject ("ProgIdName") के साथ VB6 या VBA में अपने COM का उपयोग करते हैं, तो आप "देर से बाध्य" का उपयोग करेंगे।
यह समझना बहुत महत्वपूर्ण है कि COM को VB6/VBA ect से सुलभ बनाने के लिए। यह केवल अज्ञात इंटरफ़ेस को लागू करने के लिए पर्याप्त नहीं है। आपको oleautomation
विशेषता के साथ टाइप लाइब्रेरी बनाना और पंजीकरण करना होगा। ऐसा करने में सक्षम होने के लिए, आप अपने COM के इंटरफ़ेस में केवल oleautomation
संगत डेटा प्रकारों का उपयोग कर सकते हैं (http://msdn.microsoft.com/en-us/library/aa367129%28VS.85%29.aspx देखें)। टाइप लाइब्रेरी को क्लाइंट मार्शलिंग डीएलएल की भूमिका निभाने के लिए, इसलिए यह आपके COM के पैरामीटर के रूप में सही डेटा भेजने के लिए वीबी 6/वीबीए जैसे क्लाइंट सॉफ़्टवेयर की सहायता करता है। आपको यह नहीं भूलना चाहिए कि आपका COM भी एक इंप्रोक सर्वर होगा, एक डीएलएल, पैरामीटर सीधे COM पर नहीं होंगे, लेकिन मार्शल की आवश्यकता होगी। मार्शलिंग के दौरान डेटा की एक प्रति थ्रेड पर बनाई जाएगी जहां आपका COM चलाया जाएगा। यह आपके COM DLL थ्रेड को एक तरफ से सुरक्षित बनाता है और COM COM को वापस करने से पहले आपके COM विधि को कॉल करने वाले थ्रेड को समाप्त होने पर COM क्रैश नहीं होगा।
शायद मार्शलिंग के बारे में मेरी व्याख्या आसान नहीं है, लेकिन यह महत्वपूर्ण है कि टाइप लाइब्रेरी बनाने और पंजीकरण करना न भूलें जो COM के अंदर संसाधन के रूप में सहेजना बेहतर है।
'बाइनरी विनिर्देश' के साथ आपका क्या मतलब है? –
@ टोनी: इसका मतलब है कि COM केवल बाइनरी स्तर पर घटक कैसे संचार करता है - यह बताता है कि घटकों को कैसे विकसित किया जाता है या कोड किस भाषा में लिखा जाता है या क्या "वर्ग पदानुक्रम" है। घटक ऑब्जेक्ट मॉडल देखें: एक तकनीकी अवलोकन @ http://msdn.microsoft.com/en-us/library/ms809980।शुरुआती बनाम देर बाध्यकारी के लिए एएसपीएक्स –
+1। –