Bagikan melalui


Gambaran umum Common Language Runtime (CLR)

.NET menyediakan lingkungan runtime yang disebut runtime bahasa umum yang menjalankan kode dan menyediakan layanan yang membuat proses pengembangan lebih mudah.

Pengkompilasi dan alat-alat mengungkapkan fungsi Common Language Runtime dan memungkinkan Anda menulis kode yang mendapat manfaat dari lingkungan eksekusi terkelola. Kode yang Anda kembangkan dengan pengkompilasi bahasa yang menargetkan runtime disebut kode terkelola. Manfaat kode terkelola dari fitur-fitur seperti integrasi lintas bahasa, penanganan pengecualian lintas bahasa, keamanan yang ditingkatkan, dukungan penerapan versi dan penyebaran, model yang disederhanakan untuk interaksi komponen, dan layanan penelusuran kesalahan dan pembuatan profil.

Nota

Kompiler dan alat dapat menghasilkan output yang dapat digunakan Common Language Runtime karena sistem jenis, format metadata, dan lingkungan runtime (sistem eksekusi virtual) semuanya ditentukan oleh standar publik, spesifikasi Infrastruktur Bahasa Umum ECMA. Untuk informasi selengkapnya, lihat ECMA C# dan Spesifikasi Infrastruktur Bahasa Umum.

Untuk mengaktifkan runtime untuk menyediakan layanan ke kode terkelola, pengkompilasi bahasa harus memancarkan metadata yang menjelaskan jenis, anggota, dan referensi dalam kode Anda. Metadata disimpan dengan kode; setiap file runtime bahasa umum yang dapat dimuat portable executable (PE) berisi metadata. Runtime menggunakan metadata untuk menemukan dan memuat kelas, meletakkan instans dalam memori, menyelesaikan pemanggilan metode, menghasilkan kode asli, menerapkan keamanan, dan mengatur batas konteks runtime.

Runtime secara otomatis menangani tata letak objek dan mengelola referensi ke objek, melepaskannya saat tidak lagi digunakan. Objek yang masa pakainya dikelola dengan cara ini disebut data terkelola. Pengumpulan sampah menghilangkan kebocoran memori dan beberapa kesalahan pemrograman umum lainnya. Jika kode Anda dikelola, Anda dapat menggunakan data terkelola, data yang tidak dikelola, atau keduanya di aplikasi .NET Anda. Karena pengompilasi bahasa menyediakan jenisnya sendiri, seperti jenis primitif, Anda mungkin tidak selalu tahu atau perlu mengetahui apakah data Anda dikelola.

Runtime bahasa umum memudahkan untuk merancang komponen dan aplikasi yang objeknya berinteraksi di seluruh bahasa. Objek yang ditulis dalam bahasa yang berbeda dapat berkomunikasi satu sama lain, dan perilakunya dapat diintegrasikan dengan erat. Misalnya, Anda dapat menentukan kelas lalu menggunakan bahasa yang berbeda untuk mendapatkan kelas dari kelas asli Anda atau memanggil metode pada kelas asli. Anda juga dapat meneruskan instans kelas ke metode dari kelas yang ditulis dalam bahasa pemrograman yang berbeda. Integrasi lintas bahasa ini dimungkinkan karena pengkompilasi bahasa dan alat yang menargetkan runtime menggunakan sistem jenis umum yang ditentukan oleh runtime. Mereka mengikuti aturan runtime untuk mendefinisikan jenis baru dan untuk membuat, menggunakan, menyimpan, dan mengikat ke jenis.

Sebagai bagian dari metadata mereka, semua komponen terkelola membawa informasi tentang komponen dan sumber daya yang digunakan dalam pembuatannya. Runtime menggunakan informasi ini untuk memastikan bahwa komponen atau aplikasi Anda memiliki versi yang ditentukan dari semua yang dibutuhkan, sehingga kode Anda cenderung tidak gagal karena ketergantungan yang tidak terpenuhi. Informasi pendaftaran dan data status tidak lagi disimpan di registri, di mana mereka bisa sulit untuk membangun dan memelihara. Sebagai gantinya, informasi tentang jenis yang Anda tentukan dan dependensinya disimpan dengan kode sebagai metadata. Dengan cara ini, tugas replikasi dan penghapusan komponen kurang rumit.

Kompilator dan alat bahasa mengekspos fungsionalitas runtime dengan cara yang dimaksudkan untuk berguna dan intuitif bagi pengembang. Beberapa fitur runtime mungkin lebih terlihat di satu lingkungan daripada di lingkungan lain. Bagaimana Anda mengalami runtime tergantung pada pengkompilasi bahasa atau alat mana yang Anda gunakan. Misalnya, jika Anda adalah pengembang Visual Basic, Anda mungkin melihat bahwa dengan runtime bahasa umum, bahasa Visual Basic memiliki lebih banyak fitur berorientasi objek daripada sebelumnya. Runtime memberikan manfaat berikut:

  • Peningkatan performa.

  • Kemampuan untuk dengan mudah menggunakan komponen yang dikembangkan dalam bahasa lain.

  • Jenis yang dapat diperluas disediakan oleh pustaka kelas.

  • Fitur bahasa seperti pewarisan, antarmuka, dan kelebihan beban untuk pemrograman berorientasi objek.

  • Dukungan untuk utas gratis eksplisit yang memungkinkan pembuatan aplikasi multithreaded dan dapat diskalakan.

  • Dukungan untuk penanganan pengecualian terstruktur.

  • Dukungan untuk atribut kustom.

  • Pengumpulan sampah.

  • Penggunaan delegat alih-alih penunjuk fungsi untuk meningkatkan keamanan tipe dan keamanan. Untuk informasi selengkapnya tentang delegasi, lihat Sistem Tipe Umum.

Versi CLR

Rilis .NET Core dan .NET 5+ memiliki satu versi produk, yaitu, tidak ada versi CLR terpisah. Untuk daftar versi .NET Core, lihat Mengunduh .NET Core.

Namun, nomor versi .NET Framework tidak selalu sesuai dengan nomor versi CLR yang disertakannya. Untuk daftar versi .NET Framework dan versi CLR yang sesuai, lihat versi dan dependensi .NET Framework.

Judul Deskripsi
Proses Pelaksanaan Terkelola Menjelaskan langkah-langkah yang diperlukan untuk memanfaatkan runtime bahasa pemrograman umum.
Manajemen Memori Otomatis Menjelaskan bagaimana pengumpul sampah mengalokasikan dan melepaskan memori.
Gambaran Umum .NET Framework Menjelaskan konsep .NET Framework utama, seperti sistem jenis umum, interoperabilitas lintas bahasa, eksekusi terkelola, domain aplikasi, dan rakitan.
Sistem Tipe Umum Menjelaskan bagaimana jenis dideklarasikan, digunakan, dan dikelola dalam runtime untuk mendukung integrasi lintas bahasa.