Bagikan melalui


Gambaran Umum Interoperabilitas

Interoperabilitas memungkinkan Anda mempertahankan dan memanfaatkan investasi yang ada dalam kode yang tidak dikelola. Kode yang berjalan di bawah kontrol runtime bahasa umum (CLR) adalah kode terkelola, dan kode yang berjalan di luar CLR adalah kode yang tidak dikelola. KOMPONEN COM, COM+, C++, komponen ActiveX, dan Microsoft Windows API adalah contoh kode yang tidak dikelola.

.NET memungkinkan interoperabilitas dengan kode yang tidak dikelola melalui layanan pemanggilan platform, System.Runtime.InteropServices namespace, interoperabilitas C++, dan interoperabilitas COM (interop COM).

Panggilan Fungsi Platform

Pemanggilan platform adalah layanan yang memungkinkan kode terkelola untuk memanggil fungsi yang tidak dikelola yang diimplementasikan dalam pustaka tautan dinamis (DLL), seperti Microsoft Windows API. Ini menemukan dan memanggil fungsi yang diekspor dan mengatur argumennya (bilangan bulat, string, array, struktur, dan sebagainya) melintasi batas interoperabilitas sesuai kebutuhan.

Untuk informasi selengkapnya, lihat Menggunakan Fungsi DLL Yang Tidak Dikelola dan Cara menggunakan pemanggilan platform untuk memutar file WAV.

Nota

Common Language Runtime (CLR) mengelola akses ke sumber daya sistem. Memanggil kode tidak terkelola yang berada di luar CLR melewati mekanisme keamanan ini, dan karenanya memberikan risiko keamanan. Misalnya, kode yang tidak dikelola mungkin memanggil sumber daya dalam kode yang tidak dikelola secara langsung, melewati mekanisme keamanan CLR. Untuk informasi selengkapnya, lihat Keamanan di .NET.

C++ Interop

Anda dapat menggunakan interop C++, juga dikenal sebagai It Just Works (IJW), untuk membungkus kelas C++ asli. Interop C++ memungkinkan kode yang ditulis dalam C# atau bahasa .NET lain untuk mengaksesnya. Anda menulis kode C++ untuk membungkus komponen DLL atau COM asli. Tidak seperti bahasa .NET lainnya, Visual C++ memiliki dukungan interoperabilitas yang memungkinkan kode terkelola dan tidak terkelola dalam aplikasi yang sama dan bahkan dalam file yang sama. Anda kemudian membangun kode C++ dengan menggunakan sakelar pengkompilasi /clr untuk menghasilkan rakitan terkelola. Terakhir, Anda menambahkan referensi ke assemblies dalam proyek C# Anda dan menggunakan objek yang dibungkus persis seperti Anda menggunakan kelas terkelola lainnya.

Mengekspos Komponen COM ke C#

Anda dapat menggunakan komponen COM dari proyek C#. Langkah-langkah umumnya adalah sebagai berikut:

  1. Temukan komponen COM untuk digunakan dan daftarkan. Gunakan regsvr32.exe untuk mendaftar atau membatalkan pendaftaran COM DLL.
  2. Tambahkan ke proyek referensi ke komponen COM atau pustaka jenis. Ketika Anda menambahkan referensi, Visual Studio menggunakan Tlbimp.exe (Type Library Importer), yang menerima library tipe sebagai input, untuk menghasilkan assembly .NET interop. Rakitan, yang juga disebut pembungkus callable runtime (RCW), berisi kelas dan antarmuka terkelola yang membungkus kelas dan antarmuka COM yang terdapat dalam pustaka tipe. Visual Studio menambahkan referensi ke rakitan yang dihasilkan ke dalam proyek.
  3. Buat instans kelas yang ditentukan dalam RCW. Membuat instans kelas tersebut membuat instans objek COM.
  4. Gunakan objek sama seperti Anda menggunakan objek terkelola lainnya. Ketika objek dikelola ulang oleh proses pengumpulan sampah, instans objek COM juga dilepaskan dari memori.

Untuk informasi selengkapnya, lihat Mengekspos Komponen COM ke .NET Framework.

Mengekspos C# ke COM

Klien COM dapat menggunakan jenis C# yang telah diekspos dengan benar. Langkah-langkah dasar untuk mengekspos jenis C# adalah sebagai berikut:

  1. Tambahkan atribut interop dalam proyek C#. Anda dapat membuat rakitan COM terlihat dengan memodifikasi properti proyek C#. Untuk informasi selengkapnya, lihat Kotak Dialog Informasi Perakitan.
  2. Buat pustaka jenis COM dan daftarkan untuk penggunaan COM. Anda dapat memodifikasi properti proyek C# untuk mendaftarkan rakitan C# secara otomatis untuk interop COM. Visual Studio menggunakan Regasm.exe (Assembly Registration Tool) dengan memanfaatkan sakelar baris perintah /tlb, yang menerima rakitan terkelola sebagai input, untuk menghasilkan pustaka tipe. Pustaka jenis ini menjelaskan public jenis dalam rakitan dan menambahkan entri registri sehingga klien COM dapat membuat kelas terkelola.

Untuk informasi selengkapnya, lihat Mengekspos Komponen .NET Framework ke COM dan Contoh Kelas COM.

Lihat juga