Saya perlu belajar COM untuk proyek saya saat ini. Saya seorang noob dan saya belum dapat menemukan titik awal yang baik untuk COM. Saya telah mencari di MSDN dan googling ... Saya menemukan beberapa artikel menarik di codeproject.com, tetapi saya tidak puas. Mengapa kami menggunakan COM? Kenapa itu ada? Di tempat apa itu ada? ..... dan seterusnya .. Jadi, tolong beri tahu saya di mana saya dapat menemukan jawaban untuk pertanyaan-pertanyaan ini?
13
Jawaban:
Mempelajari IUnknown adalah langkah pertama.
Antarmuka COM yang baik yang cocok untuk studi pemula adalah antarmuka IStream. Anda dapat berlatih COM dengan mengimplementasikan antarmuka IStream menggunakan banyak cara menyimpan data.
Ditambahkan 2012/09/28:
Setelah mekanisme COM ditemukan, orang-orang di Microsoft menemukan bahwa mekanisme ini membuka pintu bagi trik pemrograman yang tidak biasa yang bukan OOP ortodoks. Pada level terendah,
IUnknown.QueryInterface
hanyalah sebuah metode; itu bisa melakukan apa saja. Trik ini membuat COM mengintimidasi peserta didik, karena mereka dapat membatalkan penalaran dasar yang dapat dipinjam dari OOP.Dokumentasi Microsoft di MSDN menghabiskan banyak waktu dengan mengatakan "COM bukan ..." atau "Jangan berasumsi" untuk menjelaskan bagaimana trik yang tidak biasa ini dapat memecahkan kode Anda.
Desainer COM menggunakan Prinsip Pengganti Liskov ("L" dalam SOLID ) untuk memastikan beberapa antarmuka dan penggunaan trik mereka tidak membatalkan penalaran OOP dasar atau operasi program.
Jika proyek Anda tidak menggunakan trik ini, tidak masalah untuk melihat COM hanya dari sudut pandang OOP. Jika proyek Anda menggunakan trik-trik ini, Anda perlu melihat COM sebagai kode pengubah sendiri.
sumber
Alasan utama COM adalah untuk menyediakan antarmuka komunikasi berorientasi objek antara aplikasi dan aplikasi lain dan lain-lain yang dapat hidup dalam ruang memori yang berbeda, dan antara objek yang mungkin memiliki representasi objek internal yang berbeda.
Sesuatu yang perlu diingat ketika belajar COM adalah bahwa pada saat C ++ adalah raja dan aplikasi yang disebut dll menggunakan C. Tidak ada ABI umum (seperti @rwong mengatakan) dan COM adalah solusi microsoft.
Mungkin patut untuk melihat Active Template Library (ATL) untuk studio visual yang membuatnya sedikit lebih mudah untuk menggunakan COM juga.
Beberapa buku yang saya temukan berguna pada hari itu
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
sumber
Saya awalnya belajar tentang COM dari buku Learning DCOM (DCOM hanyalah perpanjangan dari COM, buku ini kebanyakan tentang COM). Sudah lebih dari sepuluh tahun dan harus murah jika Anda menggunakannya (karena COM tidak lagi panas, bahkan di dunia Microsoft, meskipun masih digunakan untuk interop).
Alasan utama keberadaan COM adalah untuk memfasilitasi pengembangan berbasis komponen, yang pada dasarnya berarti bahwa alih-alih menautkan pustaka saat Anda menyusun kode, Anda mereferensikan antarmuka (deskripsi tentang bagaimana berkomunikasi dengan komponen eksternal) dan menggunakan beberapa implementasi dari itu ketika Anda menyebarkan. Ini mendasari sebagian besar teknologi Microsoft sendiri.
Sistem ini memiliki dukungan untuk beberapa fitur yang keren sebelum semuanya dikelola (seperti penghitungan referensi dan deskripsi-diri (melalui IDispatch)).
sumber
COM adalah standar yang dibuat pada tahun 90-an untuk memungkinkan perangkat lunak yang berbeda untuk berbicara satu sama lain. Yang paling penting adalah standar biner yang memungkinkan satu perangkat lunak membuat atau mengikat ke objek dan kemudian memanggil ke antarmuka itu. Ini memungkinkan Anda untuk melakukan hal-hal seperti membuat DLL dalam C ++ yang dapat dipanggil oleh halaman ASP (Objek COM), atau membuat kontrol dalam Delphi yang dapat Anda tempatkan ke kotak dialog VB (kontrol ActiveX), atau lembar kerja Excel. Ketika Anda menempelkan gambar ke Word itu menggunakan COM juga, menanamkan aplikasi terpisah ke dalam kata. Yang kurang populer adalah DCOM yang memanggil objek jarak jauh, biasanya ada cara yang lebih sederhana untuk melakukan ini.
Jadi Com / ActiveX / DCOM sangat populer 10 tahun yang lalu dengan VB, VBA, C ++ / ATL, Delphi. Dotnet jauh lebih sederhana dan C # telah menggantikan sebagian besar penggunaan COM dan VB dll
Masih ada banyak antarmuka COM di sana yang ada yang mungkin ingin Anda panggil dari aplikasi dotnet atau Java atau C ++. (Kamu tidak bilang)
Jika Anda perlu memanggil antarmuka COM, VB adalah cara paling sederhana untuk melakukan ini. Di Dotnet 4.0 C # memiliki kata kunci dinamis yang membuatnya lebih mudah untuk memanggil antarmuka IDispatch, yang mungkin merupakan solusi hebat yang harus Anda perhatikan.
Jika Anda perlu mengetahui banyak detail, Anda benar-benar perlu menggunakan C ++ dan ATL, hubungi C API seperti CoCreateInstance. Hindari ini jika Anda bisa menggunakan teknologi lama dan tidak banyak menggunakan, tetap dengan rekomendasi di atas.
Saya tidak yakin perangkat lunak pemantauan apa yang Anda lihat tetapi kemungkinan akan tersedia melalui kelas System.Management di dotnet.
sumber
Berikut ini adalah gambaran umum COM yang berguna:
http://www.youtube.com/watch?v=-uodiz25YNE
http://progtutorials.tripod.com/COM.htm
Video pertama berbicara tentang ide umum membuat Komponen Biner untuk menggunakan kembali kode yang ditulis dalam bahasa yang berbeda (bahasa-independen) dan berada di mesin yang berbeda (proses) (lokasi independen / transparan). Teknologi ini digunakan di beberapa Perusahaan Perangkat Lunak untuk berintegrasi dengan perangkat lunak lain (perusahaan) alih-alih membeli perangkat lunak mereka dan menanamkannya ke dalam perangkat mereka sendiri atau menulis kode dari awal di sistem mereka.
Teknologi ini memiliki tiga versi berbeda (implementtaions):
OLE / COM / DCOM / ActiveX untuk pengembang C ++ (ATL digunakan untuk membuat pekerjaan programmer lebih mudah)
JavaBeans / RMI / EJB untuk pengembang Java
CORBA / IIOP
Anggap saja sebagai teknologi yang berguna ketika Anda memiliki perangkat lunak Anda ditulis dalam Java dan Anda ingin menambahkan fungsionalitas untuk itu yang sudah ada dalam paket tetapi ditulis dalam C ++ dan bahkan mungkin terletak di mesin yang berbeda bukan di mesin lokal Anda. Bagaimana Anda memanggil "baru", bagaimana Anda membuat objek dan memanggil metode dari mereka?
Buku-buku berikut yang saya lihat orang-orang yang melakukan pengkodean COM memiliki salah satu dari mereka di rak buku mereka:
Workshop Pengembang untuk COM dan ATL 3.0
Di dalam Com
COM penting
sumber