घटक वस्तु मॉडल सीखने के लिए सबसे अच्छी जगह [बंद]


13

मुझे अपने वर्तमान प्रोजेक्ट के लिए COM सीखने की आवश्यकता है। मैं एक noob हूँ और मैं COM के लिए अच्छे शुरुआती अंक नहीं पा सका हूँ। मैं MSDN और googling में देख रहा हूं ... मुझे codeproject.com पर कुछ दिलचस्प लेख मिले, लेकिन मैं संतुष्ट नहीं हूं। हम COM का उपयोग क्यों करते हैं? इसका अस्तित्व क्यों है? यह किन स्थानों पर मौजूद है? ..... और इतने पर .. तो, क्या आप मुझे बताएंगे कि मुझे इन सवालों के जवाब कहां मिल सकते हैं?


3
हम COM का उपयोग क्यों करते हैं? ज्यादातर हम कोशिश करते हैं कि नहीं। यह किन स्थानों पर मौजूद है? दर्दनाक विरासत कोडबेस, आम तौर पर।
कार्सन 63000

@ कर्न्स एक्टली मैं एक मॉनिटरिंग सॉफ्टवेयर विकसित कर रहा हूं जहां मुझे "COM" ऑब्जेक्ट्स के मान लाने होंगे। इसलिए नया पाया क्वेस्ट ..
चनी

1
अगर मुझे सही याद है, COM पर सर्वश्रेष्ठ 3 वेब लेखों में से, 2 MSDN (कुछ पुरानी पत्रिका लेख) पर था और 1 कोडप्रोजेक्ट पर था ... जाहिर है कि सैकड़ों अन्य उपयोगी कुछ हैं, इसलिए यह हैस्टैक में सुई खोजने जैसा है। (और ".com" TLD में केवल साइटों को वापस करने के लिए Google का धन्यवाद जब मैं "COM" ... के लिए खोज
करूंगा

@ Carson63000 सच तो यह दर्द होता है ... अब एक कोने में रोना जाना।
एविक्टाटोस

जवाबों:


18
  • सबसे पहले, COM ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग की तरह है। COM इंटरफ़ेस एक अमूर्त इंटरफ़ेस है।
  • COM का प्रत्येक भाषा के अपने अंतर्निहित OOP पर एक फायदा है कि आप COM कक्षाओं को विभिन्न भाषाओं में लागू कर सकते हैं और / या संकलक के विभिन्न संस्करणों द्वारा संकलित कर सकते हैं, और वे अभी भी अंतर-संचालित करने में सक्षम होंगे। इसे "एप्लिकेशन बाइनरी इंटरफ़ेस" (ABI) कहा जाता है
  • COM संदर्भ गिनती का उपयोग करता है। यह पहली बार में कष्टप्रद हो सकता है, लेकिन जैसे ही आप स्मार्ट पॉइंटर्स के बारे में सीखते हैं, आपका जीवन बहुत आसान हो जाएगा और आप पाएंगे कि संदर्भ गिनती की अवधारणा को समझना बहुत आसान है।
  • COM वर्ग कास्टिंग के एक अजीब तरीके का उपयोग करता है, जिसका नाम "क्वेरी इंटरफ़ेस" है।

IUnogn सीखना पहला कदम है।

एक अच्छा COM इंटरफ़ेस जो शुरुआती अध्ययन के लिए उपयुक्त है वह है IStream इंटरफ़ेस। आप डेटा संग्रहीत करने के कई तरीकों का उपयोग करके IStream इंटरफ़ेस को लागू करके COM का अभ्यास कर सकते हैं।


2012/09/28 जोड़ा गया:

COM तंत्र का आविष्कार होने के बाद, Microsoft के लोगों ने पता लगाया कि ये तंत्र असामान्य प्रोग्रामिंग ट्रिक का दरवाजा खोलते हैं जो रूढ़िवादी OOP नहीं हैं। सबसे निचले स्तर पर, IUnknown.QueryInterfaceसिर्फ एक विधि है; यह कुछ भी कर सकता है। ये ट्रिक्स COM को शिक्षार्थियों से भयभीत करते हैं, क्योंकि वे ओओपी से उधार ली जा सकने वाली मूल तर्क को अमान्य कर सकते हैं।

MSDN पर Microsoft प्रलेखन बहुत समय बिताते हुए कहता है "COM is not ..." या "कोई धारणा नहीं बनाएं" यह बताते हुए कि ये असामान्य ट्रिक आपके कोड को कैसे तोड़ सकते हैं।

COM डिज़ाइनर Liskov प्रतिस्थापन सिद्धांत ( SOLID में "L" ) का उपयोग यह सुनिश्चित करने के लिए करते हैं कि उनके कई इंटरफेस और ट्रिक्स का उपयोग बेसिक OOP तर्क या प्रोग्राम ऑपरेशन को अमान्य न करें।

यदि आपका प्रोजेक्ट इन ट्रिक्स का उपयोग नहीं करता है, तो COM को केवल OOP के दृष्टिकोण से देखना ठीक है। यदि आपका प्रोजेक्ट इन ट्रिक्स का उपयोग करता है, तो आपको COM को स्वयं-संशोधित कोड के रूप में देखना होगा।

(मजाक: हमें एल के साथ इतना समय बिताना था कि हम आम तौर पर चार अन्य सिद्धांतों की उपेक्षा करते हैं।)


9

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

COM सीखते समय याद रखने वाली कोई बात यह है कि उस समय C ++ राजा था और अनुप्रयोगों को dll का उपयोग कहा जाता था। कोई आम ABI नहीं था (जैसा कि @rwong कहते हैं) और COM microsoft solution था।

यह शायद विज़ुअल स्टूडियो के लिए एक्टिव टेम्प्लेट लाइब्रेरी (एटीएल) पर एक नज़र रखने के लायक है जो COM के साथ-साथ उपयोग करना थोड़ा आसान बनाता है।

कुछ किताबें मुझे दिन में उपयोगी लगीं

http://www.amazon.com/Essential-COM-Don-Box/dp/0201634465/ref=sr_1_1?ie=UTF8&qid=1304946825&sr=8-1

http://www.amazon.com/Understanding-ActiveX-OLE-Developers-Technology/dp/1572312165/ref=pd_sim_b_4

hth


7

मैंने मूल रूप से COM से किताब लर्निंग DCOM के बारे में जाना (DCOM सिर्फ COM का विस्तार है, पुस्तक ज्यादातर COM के बारे में है)। यह दस साल से अधिक पुराना है और यदि आप इसे इस्तेमाल करते हैं तो सस्ता होना चाहिए (क्योंकि COM अब बिल्कुल गर्म नहीं है, माइक्रोसॉफ्ट की दुनिया में भी नहीं, भले ही यह अभी भी इंटरोप के लिए उपयोग किया जाता है)।

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

सिस्टम में कुछ विशेषताओं के लिए समर्थन है जो सब कुछ प्रबंधित होने से पहले शांत थे (जैसे कि संदर्भ गिनती और स्व-विवरण (आईडीस्पाच के माध्यम से))।


5

COM एक मानक है जो 90 के दशक में सॉफ्टवेयर के विभिन्न टुकड़ों को एक दूसरे से बात करने की अनुमति देता है। सबसे महत्वपूर्ण द्विआधारी मानक है जो सॉफ़्टवेयर के एक टुकड़े को किसी वस्तु को बनाने या बांधने की अनुमति देता है और फिर उस इंटरफ़ेस में कॉल करता है। यह आपको C ++ में DLL बनाने जैसी चीजों को करने की अनुमति देता है जिसे ASP पृष्ठ (COM ऑब्जेक्ट्स) द्वारा कॉल किया जा सकता है, या डेल्फी में एक नियंत्रण बना सकता है जिसे आप VB संवाद बॉक्स (ActiveX नियंत्रण), या एक्सेल वर्कशीट पर रख सकते हैं। जब आप Word में कोई चित्र पेस्ट करते हैं तो वह COM का भी उपयोग करता है, एक अलग एप्लिकेशन को शब्द में एम्बेड करता है। कम लोकप्रिय DCOM है जिसे दूरस्थ वस्तुओं को कॉल करना है, आमतौर पर ऐसा करने के सरल तरीके हैं।

तो 10 साल पहले Com / ActiveX / DCOM बहुत लोकप्रिय था, VB, VBA, C ++ / ATL, डेल्फी के साथ। Dotnet बहुत सरल है, और C # ने COM और VB आदि के अधिकांश उपयोग को बदल दिया है

फिर भी वहाँ कई COM इंटरफेस मौजूद हैं जो आप एक डॉटनेट एप्लिकेशन या जावा या सी ++ से कॉल करना चाहते हैं। (आप कहते हैं)

यदि आपको COM इंटरफेस को कॉल करने की आवश्यकता है तो VB ऐसा करने का सबसे सरल तरीका है। Dotnet 4.0 C में # डायनामिक कीवर्ड होता है, जो IDispatch इंटरफेस को कॉल करना बहुत आसान बनाता है, जो संभवत: एक शानदार समाधान है जिसे आपको देखना चाहिए।

यदि आपको बहुत विस्तार से जानने की आवश्यकता है, तो आपको वास्तव में C ++ और ATL का उपयोग करने की आवश्यकता है, C APIs को CoCreateInstance की तरह कॉल करें। इससे बचें यदि आप इसके पुराने तकनीक के रूप में कर सकते हैं और बहुत अधिक उपयोग नहीं करते हैं, तो ऊपर की सिफारिशों के साथ रहें।

मुझे यकीन नहीं है कि आप किस निगरानी सॉफ़्टवेयर को देख रहे हैं, लेकिन इसकी संभावना डॉटनेट में System.Management कक्षाओं के माध्यम से उपलब्ध है।


2

निम्नलिखित उपयोगी हो सकते हैं COM सिंहावलोकन:

पहला वीडियो विभिन्न भाषाओं (भाषा-स्वतंत्र) में लिखे गए कोड्स का पुन: उपयोग करने के लिए द्विआधारी घटक बनाने के सामान्य विचार के बारे में बात करता है और विभिन्न मशीनों (प्रक्रियाओं) (स्थान स्वतंत्र / पारदर्शी) में है। इस तकनीक का उपयोग कुछ सॉफ़्टवेयर कंपनियों में उनके सॉफ़्टवेयर को खरीदने के बजाय अन्य सॉफ़्टवेयर (कंपनियों) के साथ एकीकृत करने और उन्हें अपने स्वयं में एम्बेड करने या उनके सिस्टम में खरोंच से कोड लिखने के लिए किया जाता है।

इस तकनीक के तीन अलग-अलग संस्करण हैं (कार्यान्वयन):

OLE / COM / DCOM / ActiveX C ++ डेवलपर्स के लिए (ATL का उपयोग प्रोग्रामर का काम आसान बनाने के लिए किया जाता है)

जावा डेवलपर्स के लिए जावाबीन / आरएमआई / ईजेबी

CORBA / IIOP

बस इसे एक ऐसी तकनीक के रूप में सोचें जो तब आती है जब आपके पास जावा में लिखा आपका सॉफ्टवेयर होता है और आप इसमें एक कार्यक्षमता जोड़ना चाहते हैं जो पहले से ही एक पैकेज में मौजूद होता है लेकिन यह C ++ में लिखा होता है और यहां तक ​​कि शायद अलग मशीन में भी नहीं होता है। आपकी स्थानीय मशीन। आप "नया" कैसे कहते हैं, आप ऑब्जेक्ट्स कैसे बनाते हैं और उनसे कॉल करने के तरीके क्या हैं?

निम्नलिखित पुस्तकें जो मैंने उन लोगों को देखी हैं जो COM कोडिंग करते हैं, उनमें से कोई भी अपनी बुकशेल्व में है:

  • COM और ATL 3.0 के लिए डेवलपर की कार्यशाला

  • अंदर। Com

  • आवश्यक COM

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