संक्षेप में COM (घटक वस्तु मॉडल) क्या है? [बन्द है]


89

ऐसा लगता है कि COM ऑब्जेक्ट सामान्य उपयोग की वस्तुएँ हैं जो OS द्वारा शासित होती हैं। ऑब्जेक्ट एक सख्त इंटरफ़ेस का अनुसरण करते हैं और आपको जानकारी निर्धारित करने के लिए ऑब्जेक्ट को क्वेरी करने की अनुमति देते हैं। क्या यह COM वस्तुएं हैं?

c++  com 

जवाबों:


111

COM एक तंत्र है जो ऑब्जेक्ट्स (या बल्कि घटकों) के पुन: उपयोग की अनुमति देता है, प्रोग्रामर द्वारा उपयोग की जाने वाली भाषाओं से स्वतंत्र रूप से जो घटक को लागू करता है और प्रोग्रामर जो इसका उपयोग करता है, और स्वतंत्र रूप से घटक क्लाइंट के कार्यक्रम में लागू किया गया था या नहीं मशीन (या नेटवर्क) पर कहीं और।

मोटे तौर पर, प्रत्येक COM घटक एक या अधिक इंटरफेस का कार्यान्वयन प्रदान करता है। इंटरफ़ेस इंटरफेस भाषा (IDL) का उपयोग करके उन इंटरफेस को भाषा-तटस्थ तरीके से परिभाषित किया जाता है । एक उदाहरण के रूप में, COM, IUnogn में मूलभूत इंटरफेस में से एक को इस तरह परिभाषित किया गया है:

interface IUnknown
{
   virtual HRESULT QueryInterface(REFIID riid, void **ppvObject) = 0;
   virtual ULONG AddRef(void) = 0;
   virtual ULONG Release(void) = 0;
};

यह छोटा इंटरफ़ेस COM में मौलिक है, क्योंकि प्रत्येक COM घटक को इसे लागू करना होगा। यह COM मशीनरी के दो महत्वपूर्ण पहलुओं को परिभाषित करता है:

  • QueryInterfaceएक ज्ञात इंटरफ़ेस के लिए कार्यान्वयन प्राप्त करने के लिए कॉलिंग कोड की अनुमति देता है। COM में, इंटरफेस GUID द्वारा संदर्भित हैं (इंटरफ़ेस पहचानकर्ता, IID के रूप में भी जाना जाता है)। यदि कोई ऑब्जेक्ट कई इंटरफेस को लागू करता है, तो क्लाइंट कोड को उन इंटरफ़ेसों में से प्रत्येक का संदर्भ मिलता है। यह एक प्रकार के कास्टिंग ऑपरेटर के रूप में कार्य करता है, यदि आप करेंगे।
  • AddRef()और Release()COM वस्तुओं के लिए स्मृति प्रबंधन तंत्र को लागू करें। जैसा कि उनके नाम से पता चलता है, सबसे आम मॉडल संदर्भ गणना तंत्र है, जहां एक उदाहरण को नष्ट कर दिया जाता है क्योंकि अंतिम ग्राहक ने इसके संदर्भ को जारी किया है।

सभी COM घटक स्थापना पर सिस्टम के साथ पंजीकृत हैं। यदि एक प्रोग्रामर एक निश्चित घटक का उपयोग करना चाहता है, तो उसे निम्न की आवश्यकता है:

  • सुनिश्चित करें कि घटक एक उपलब्ध स्थान पर स्थापित है। अधिकांश समय यह चल रहे एप्लिकेशन के सिस्टम पर होता है, लेकिन COM + भी दूरस्थ कंप्यूटर पर घटकों को मौजूद करने की अनुमति देता है।
  • दिए गए घटक के GUID को जानें। इस GUID के साथ, क्लाइंट तब सिस्टम को घटक को तत्काल करने के लिए कह सकता है (C में, ऐसा करने के लिए फ़ंक्शन कहा जाता है CoCreateInstance())। आप के तहत रजिस्ट्री में देख सकते हैं HKEY_CLASSES_ROOT\CLSID: प्रत्येक GUID में (सबसे शायद) एक COM घटक या इंटरफ़ेस के लिए एक पहचानकर्ता है, और उस कुंजी के नीचे प्रविष्टियां सिस्टम को बताती हैं कि इसे कैसे संस्थापित किया जाना चाहिए।

COM मशीनरी बेहद जटिल है। उदाहरण के लिए, C में COM घटकों को लागू करने या उपयोग करने के लिए एक भयावह राशि की आवश्यकता होती है, लेकिन विजुअल बेसिक जैसी उच्च-स्तरीय भाषाओं ने COM घटकों के कार्यान्वयन और उपयोग को आसान बनाने के लिए बहुत कुछ किया है। लाभ हालांकि बहुत वास्तविक हैं। विजुअल बेसिक में एक एप्लिकेशन को लिखना, कहना संभव बनाता है, लेकिन अभी भी C या C ++ में COM ऑब्जेक्ट के रूप में प्रदर्शन-महत्वपूर्ण एल्गोरिदम को लागू करना है, जिसका उपयोग सीधे VB कोड से किया जा सकता है। सिस्टम मार्शलिंग पद्धति-कॉल तर्कों का ध्यान रखता है, उन्हें थ्रेड्स, प्रक्रियाओं और नेटवर्क कनेक्शन के माध्यम से आवश्यकतानुसार पारित करना ताकि क्लाइंट कोड को एक सामान्य वस्तु का उपयोग करने का आभास हो।

विंडोज के कई मूलभूत हिस्से COM पर आधारित हैं। उदाहरण के लिए, विंडोज एक्सप्लोरर (फाइल मैनेजर) मूल रूप से एक खाली शेल है। यह पेड़ के पदानुक्रमों को नेविगेट करने और प्रदर्शित करने के लिए COM इंटरफेसेस के एक समूह को परिभाषित करता है, और सभी कोड जो वास्तव में "मेरा कंप्यूटर" प्रदर्शित करते हैं, ड्राइव, फ़ोल्डर और फाइलें COM घटकों के एक सेट के रूप में हैं जो उन इंटरफेस को लागू करते हैं।

.NET के आगमन के साथ, COM धीरे-धीरे अप्रचलित हो रहा है।


10
अंतिम पंक्ति के लिए स्रोत?
शाद

32

COM एक ऐसा तंत्र है, जो लोगों को बायनेरिज़ को वितरित करने की अनुमति देने के लिए विकसित किया गया था, जिसका पुन: उपयोग किया जा सकता है, भले ही कॉलर किसी अन्य विक्रेता के C ++ कंपाइलर या (अंततः) एक अलग भाषा का उपयोग कर रहा हो।

यदि आप COM का एक अच्छा परिचय चाहते हैं, तो डॉन बॉक्स द्वारा आवश्यक COM पढ़ें ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.