Rumah > Artikel > hujung hadapan web > Apakah objek COM javascript
Objek COM merujuk kepada "Objek Model Objek Komponen", iaitu komponen perisian boleh guna semula yang menggunakan spesifikasi COM boleh memastikan objek COM berfungsi dengan baik dan boleh disepadukan dengan mudah ke dalam aplikasi anda; Objek COM biasanya dilaksanakan menggunakan perpustakaan pautan dinamik (DLL); seperti DLL biasa, objek COM mendedahkan beberapa kaedah yang boleh dipanggil oleh aplikasi pengguna untuk menyelesaikan sebarang operasi yang disokong.
Persekitaran pengendalian tutorial ini: sistem Windows 7, versi JavaScript 1.8.5, komputer Dell G3.
Apakah objek COM?
Objek Model Objek Komponen (COM) ialah komponen perisian boleh guna semula yang menggunakan spesifikasi COM. Menggunakan spesifikasi COM memastikan objek COM berfungsi dengan baik dan mudah disepadukan ke dalam aplikasi anda. Malah, COM pada asasnya bersamaan dengan kotak hitam, yang boleh melakukan banyak kerja untuk aplikasi anda.
Objek COM biasanya dilaksanakan menggunakan perpustakaan pautan dinamik (DLL). Seperti DLL biasa, objek COM mendedahkan kaedah yang boleh dipanggil oleh aplikasi anda untuk menyelesaikan sebarang operasi yang disokong. Interaksi antara aplikasi dan objek COM agak seperti interaksi antara aplikasi dan objek C, tetapi terdapat beberapa perbezaan yang jelas antara mereka.
Objek COM melaksanakan pengkapsulan yang tepat. Anda tidak boleh membuat objek dan memanggil kaedah awamnya sewenang-wenangnya. Kaedah awam objek COM dimasukkan ke dalam satu atau lebih kumpulan antara muka. Untuk penggunaan kaedah, anda mesti mencipta objek COM dan mendapatkan antara muka yang sesuai untuk objek COM daripada objek COM. Contohnya: Antara muka IDirect3DCubeTexture8 mengandungi kaedah yang membolehkan anda mengendalikan sumber bingkai kubus. Sebarang kaedah yang bukan milik antara muka ini tidak boleh diakses.
Penciptaan objek COM berbeza daripada penciptaan objek C. Terdapat beberapa cara untuk mencipta objek COM, tetapi semuanya melibatkan teknologi khusus COM. Antara muka pengaturcaraan aplikasi DirectX (API) Microsoft mengandungi pelbagai fungsi pembantu dan kaedah untuk mencipta kebanyakan objek DirectX.
Anda mesti menggunakan teknologi COM_specific untuk mengawal hayat objek COM.
Objek COM tidak perlu dimuatkan secara eksplisit. Objek COM terkandung dalam DLL. Walau bagaimanapun, apabila anda menggunakan objek COM ini, tidak perlu memuatkan DLL secara eksplisit atau memuatkan perpustakaan statik secara eksplisit. Setiap objek COM mempunyai ID pendaftaran unik yang digunakan untuk mencipta objek COM akan memuatkan DLL yang betul secara automatik.
COM ialah spesifikasi binari. Objek COM boleh ditulis dan diakses daripada pelbagai bahasa. Anda tidak perlu mengetahui apa-apa tentang kod sumber objek COM. Contohnya: Aplikasi Microsoft Visual Bisice ditulis dalam C setiap hari menggunakan objek COM > Adalah penting untuk memahami perbezaan antara objek dan antara muka. Kadangkala, nama objek kadangkala dirujuk sebagai nama antara muka utama. Tegasnya, bagaimanapun, kedua-dua syarat ini tidak boleh ditukar ganti.
▲Objek COM boleh mendedahkan sebarang bilangan antara muka. Sebagai contoh: semua objek COM mesti mendedahkan antara muka IUnknown, dan mereka biasanya mendedahkan sekurang-kurangnya satu antara muka tambahan, dan mungkin lebih. Untuk menggunakan kaedah khas ini, anda bukan sahaja perlu mencipta objek COM, tetapi juga mendapatkan penunjuk antara muka yang betul. ▲Banyak objek boleh mendedahkan antara muka yang sama. Antara muka ialah satu set kaedah yang melaksanakan operasi tertentu. Takrifan antara muka menentukan sintaks kaedah dan fungsinya. Sebarang objek COM yang menyokong operasi khas mendedahkan antara muka yang sesuai. Sesetengah antara muka adalah sangat khusus, dan ia hanya didedahkan oleh satu objek. Kebanyakan kes lain didedahkan oleh berbilang objek. Kes yang sangat istimewa ialah antara muka IUnknown mesti didedahkan oleh setiap objek COM.
Ia adalah perkara biasa untuk antara muka mempunyai beberapa generasi. Selalunya, kandungan mereka adalah sama, tetapi butirannya berbeza. Biasanya, objek boleh mendedahkan setiap generasi antara muka. Melakukannya membolehkan atur cara lama untuk terus menggunakan antara muka lama objek, dan atur cara yang lebih baharu untuk memanfaatkan ciri antara muka baharu. Biasanya, keluarga antara muka mempunyai nama yang sama, diikuti dengan integer yang menunjukkan penjanaan. Contohnya: Jika antara muka asal dinamakan IMyInterface, maka dua generasi antara muka seterusnya dinamakan IMyInterface2 dan IMyInterface3. Integer biasanya menggunakan nombor versi directx.
GUIDS
Pengecam unik global (GUIDS) ialah bahagian penting dalam model program COM. Pada prinsip paling asasnya, GUIDS ialah struktur 128-bit. Walau bagaimanapun, GUIDS dicipta dengan cara yang memastikan bahawa tiada dua GUIDS yang sama. COM secara meluas menggunakan GUIDS untuk dua tujuan utama:
1. Untuk mengenal pasti objek COM tertentu secara unik.
2. Untuk menandakan secara unik antara muka COM tertentu.
Nilai pulangan (HRESULT)
Semua kaedah COM mengembalikan nilai 32-bit bernama HRESULT. Untuk kebanyakan kaedah, HRESULT sebenarnya adalah struktur yang mengandungi dua maklumat.
1. Sama ada kaedah ini berjaya atau gagal.
2. Keluarkan maklumat terperinci tentang operasi yang disokong oleh kaedah.
Nilai HRESULT yang dikembalikan oleh beberapa kaedah ditakrifkan dalam Winerror.h. Nilai HRESULT yang dikembalikan oleh kaedah juga boleh menjadi beberapa maklumat khusus pengguna. Nilai ini biasanya disahkan dalam halaman rujukan kaedah.
Hakikat bahawa kaedah memanggil objek COM boleh mengembalikan pelbagai kod yang menunjukkan kejayaan atau kegagalan panggilan bermakna anda mesti berhati-hati untuk menguji nilai pulangannya. Contohnya: Jika nilai pulangan bagi panggilan kaedah ialah
S_OK, ini menunjukkan bahawa panggilan kaedah berjaya Jika nilai pulangan ialah S_FAIL, ini menunjukkan bahawa panggilan kaedah itu juga mungkin mengembalikan yang lain kod yang menunjukkan kejayaan atau kegagalan panggilan. Coretan kod berikut menggambarkan bahawa adalah tidak selamat untuk melakukan ujian mudah sedemikian pada kod. Nilai jam dalam kod ialah nilai pulangan bagi panggilan kaedah:
if( hr == E_FAIL ) { //Handle the failure } else { //Handle the success }
Jika kod ini hanya mengembalikan E_FAIL, coretan kod ini boleh berfungsi dengan baik. Walau bagaimanapun, ini tidak berlaku. Panggilan kaedah ini juga boleh mengembalikan nilai lain, seperti: E_NOTIMPL, E_INVALIDARG Jika kod mengembalikan nilai ini, segmen kod ini tidak memprosesnya dan secara lalai ia akan menunjukkan bahawa program sedang melaksanakan. biasanya, tetapi program sebenar tidak Salah.
Jika anda ingin mengetahui maklumat lebih terperinci tentang panggilan kaedah, anda mesti menguji setiap nilai pulangan yang berkaitan. Walau bagaimanapun, anda mungkin hanya ingin mengetahui sama ada panggilan kaedah berjaya. Cara yang baik untuk anda menguji sama ada panggilan kaedah berjaya ialah dengan menghantar nilai pulangan kaedah kepada dua makro berikut, yang ditakrifkan dalam fail winerror.h.
1. Makro SUCCEEDED mengembalikan TRUE untuk menunjukkan bahawa panggilan berjaya dan mengembalikan FALSE untuk menunjukkan bahawa panggilan gagal.
2. Makro FAILED mengembalikan TRUE untuk menunjukkan bahawa panggilan gagal dan mengembalikan FALSE untuk menunjukkan bahawa panggilan itu berjaya.
Anda boleh menggunakan makro GAGAL untuk mengubah suai segmen kod sebelumnya.
if( FAILED(hr) ) { //Handle the failure. } else { //Handle the success. }
Coretan kod di atas mengendalikan ralat E_NOTIMPL dan E_INVALIDARG.
Walaupun nilai pulangan HRESULT kebanyakan kaedah ialah nilai struktur, terdapat beberapa kaedah di mana nilai pulangan HRESULT ialah nilai integer mudah. Ini menunjukkan bahawa kaedah yang mengembalikan nilai integer sentiasa boleh dipanggil dengan jayanya. Jika anda menghantar nilai pulangan jenis ini kepada makro SUCCESS, makro akan sentiasa mengembalikan TRUE. Contoh biasa ialah: IUnkoown::Kaedah keluaran. Fungsi kaedah ini adalah untuk melepaskan (mengurangkan) kiraan penggunaan objek dan mengembalikan kiraan penggunaan semasa objek. Kiraan penggunaan digunakan untuk mengenal pasti jangka hayat sesuatu objek.
Alamat penuding
Jika anda telah melihat beberapa halaman rujukan untuk kaedah COM, anda mungkin pernah menghadapi situasi seperti berikut:
HRESULT CreateDevice( . . . IDirect3DDevice8 **ppReturnedDeviceInterface )
Secara amnya, mana-mana pembangun C atau C++ biasa dengan penunjuk, dan COM biasanya menggunakan piawaian arah tambahan. Standardnya ialah: dua asterisk (**) diikuti dengan spesifikasi jenis dan nama pembolehubah dengan awalan "pp" biasa. Dalam contoh sebelumnya, parameter ppReturnedDeviceInterface ialah alamat penuding kepada antara muka IDirect3DDevice8.
Tidak seperti c, anda tidak boleh mengakses secara langsung kaedah objek COM Sebaliknya, anda mesti mendapatkan penunjuk ke antara muka yang mendedahkan kaedah. Sintaks untuk memanggil kaedah antara muka objek adalah sama dengan sintaks untuk memanggil kaedah C menggunakan penunjuk. Contohnya: untuk memanggil kaedah IMyTnterface::DoSomething, anda hanya perlu menggunakan sintaks berikut.
IMyInterfance *pMyTface; . . . pMyIface->DoSomething(...) ;
Untuk penunjuk kepada antara muka objek COM, anda tidak boleh terus membuat penunjuk ke antara muka. Anda mesti memanggil satu atau lebih kaedah lain untuk mendapatkan penunjuk ini. Contohnya: kaedah CreateDevice yang dinyatakan sebelum ini.
Untuk mendapatkan penunjuk antara muka melalui kaedah ini, anda perlu mengisytiharkan pembolehubah untuk menunjuk ke antara muka yang anda minta. Hantar alamat pembolehubah ini kepada kaedah CreateDevice Dalam erti kata lain, anda mesti menghantar alamat pembolehubah kepada kaedah ini. Apabila kaedah ini kembali, pembolehubah ini akan menghala ke antara muka yang anda minta dan anda boleh mengakses kaedah antara muka ini melalui penuding ini.
Untuk lebih banyak pengetahuan berkaitan pengaturcaraan, sila lawati: Video Pengaturcaraan! !
Atas ialah kandungan terperinci Apakah objek COM javascript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!