Lisensi dan IClassFactory2

Antarmuka IClassFactory pada objek kelas menyediakan mekanisme pembuatan objek dasar COM. Menggunakan IClassFactory, server dapat mengontrol pembuatan objek berdasarkan komputer. Implementasi metode IClassFactory::CreateInstance dapat mengizinkan atau melarang pembuatan objek berdasarkan keberadaan lisensi mesin. Lisensi mesin adalah bagian dari informasi yang terpisah dari aplikasi yang ada di komputer untuk menunjukkan bahwa perangkat lunak diinstal dari sumber yang valid, seperti disk penginstalan vendor. Jika lisensi komputer tidak ada, server dapat melarang pembuatan objek. Lisensi mesin mencegah pembajakan jika pengguna mencoba menyalin perangkat lunak dari satu komputer ke komputer lain, karena informasi lisensi tidak disalin dengan perangkat lunak dan mesin yang menerima salinan tidak dilisensikan.

Namun, dalam industri perangkat lunak komponen, vendor membutuhkan tingkat kontrol yang lebih baik atas lisensi. Selain kontrol lisensi mesin, vendor perlu mengizinkan beberapa klien untuk membuat objek komponen sambil menolak kemampuan yang sama kepada klien lain. Ini mengharuskan aplikasi klien mendapatkan kunci lisensi dari komponen saat aplikasi klien masih dalam pengembangan. Aplikasi klien menggunakan kunci lisensi pada waktu proses untuk membuat objek pada komputer yang tidak berlisensi.

Misalnya, jika vendor menyediakan pustaka kontrol kepada pengembang, pengembang yang membeli pustaka akan memiliki lisensi mesin lengkap, yang memungkinkan objek dibuat pada mesin pengembangan. Pengembang kemudian dapat membangun aplikasi klien pada mesin berlisensi yang menggabungkan satu atau beberapa kontrol. Ketika aplikasi klien yang dihasilkan dijalankan pada komputer lain, kontrol yang digunakan dalam aplikasi klien harus dibuat pada komputer lain bahkan jika mesin tersebut tidak memiliki lisensi mesin untuk kontrol dari vendor asli.

Antarmuka IClassFactory2 menyediakan tingkat kontrol ini. Untuk mengizinkan lisensi berbasis kunci untuk komponen tertentu, Anda menerapkan IClassFactory2 pada objek pabrik kelas untuk komponen tersebut. IClassFactory2berasal dari IClassFactory, jadi dengan menerapkan IClassFactory2, objek pabrik kelas memenuhi persyaratan COM dasar.

Untuk menggabungkan komponen berlisensi ke dalam aplikasi klien Anda, gunakan metode berikut di IClassFactory2:

  • Metode GetLicInfo mengisi struktur LICINFO dengan informasi yang menjelaskan perilaku lisensi pabrik kelas. Misalnya, pabrik kelas dapat menyediakan kunci lisensi untuk lisensi run-time jika anggota fRunTimeKeyAvail adalah TRUE.
  • Metode RequestLicKey menyediakan kunci lisensi untuk komponen. Lisensi mesin harus tersedia ketika klien memanggil metode ini.
  • Metode CreateInstanceLic membuat instans komponen berlisensi jika parameter kunci lisensi (BSTRĂ‚ bstrKey) valid.

Catatan

Dalam informasi jenisnya, komponen menggunakan atribut yang dilisensikan untuk menandai kolase yang mendukung lisensi melalui IClassFactory2.

 

Pertama, Anda memerlukan alat pengembangan terpisah yang juga merupakan klien komponen berlisensi. Tujuan dari alat ini adalah untuk mendapatkan kunci lisensi run-time dan menyimpannya di aplikasi klien Anda. Alat ini hanya berjalan pada mesin yang memiliki lisensi mesin untuk komponen. Alat ini memanggil metode GetLicInfo dan RequestLicKey untuk mendapatkan kunci lisensi run-time lalu menyimpan kunci lisensi di aplikasi klien Anda. Misalnya, alat pengembangan dapat membuat file header (.h) yang berisi kunci lisensi BSTR, dan kemudian Anda akan menyertakan file .h tersebut dalam aplikasi klien Anda.

Untuk membuat instans komponen dalam aplikasi klien Anda, pertama-tama coba buat objek langsung dengan IClassFactory::CreateInstance. Jika CreateInstance berhasil, komputer kedua dilisensikan untuk komponen dan objek dapat dibuat sesering mungkin. Jika CreateInstancegagal dengan kode pengembalian CLASS_E_NOTLICENSED, satu-satunya cara untuk membuat objek adalah dengan meneruskan kunci run-time ke metode CreateInstanceLic . CreateInstanceLic memverifikasi kunci dan membuat objek jika kunci valid.

Dengan cara ini, aplikasi yang dibangun dengan komponen (seperti kontrol) dapat berjalan pada komputer yang tidak memiliki lisensi lain—hanya aplikasi klien yang berisi lisensi run-time yang diizinkan untuk membuat objek komponen yang dimaksud.

Antarmuka IClassFactory2 mendukung fleksibilitas dalam skema lisensi. Misalnya, implementor server dapat mengenkripsi kunci lisensi dalam komponen untuk keamanan tambahan. Pelaksana server juga dapat mengaktifkan atau menonaktifkan tingkat fungsionalitas dalam objek mereka dengan menyediakan kunci lisensi yang berbeda untuk fungsi yang berbeda. Misalnya, satu kunci mungkin memungkinkan tingkat fungsionalitas dasar sementara yang lain memungkinkan fungsionalitas dasar dan tingkat lanjut, dan sebagainya.

Tanggung Jawab Server COM