Gambaran umum Runtime Bahasa Umum (CLR)

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

Pengkompilasi dan alat mengekspos fungsionalitas runtime bahasa umum dan memungkinkan Anda menulis kode yang mendapat manfaat dari lingkungan eksekusi terkelola. Kode yang Anda kembangkan dengan pengpmpilasi bahasa yang menargetkan runtime disebut kode terkelola. Manfaat kode terkelola dari fitur seperti integrasi lintas bahasa, penanganan pengecualian lintas bahasa, keamanan yang ditingkatkan, dukungan pembuatan versi dan penyebaran, model yang disederhanakan untuk interaksi komponen, dan layanan debugging dan pembuatan profil.

Catatan

Pengkompilasi dan alat dapat menghasilkan output yang dapat digunakan runtime bahasa umum karena sistem jenis, format metadata, dan lingkungan run-time (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 agar menyediakan layanan ke kode terkelola, pengompilasi bahasa harus memancarkan metadata yang menjelaskan jenis, anggota, dan referensi dalam kode Anda. Metadata disimpan dengan kode; setiap file portabel runtime bahasa umum yang dapat dieksekusi dan dapat dimuat berisi metadata. Runtime menggunakan metadata untuk menemukan dan memuat kelas, meletakkan instans dalam memori, menyelesaikan pemanggilan metode, menghasilkan kode asli, menegakkan keamanan, dan menetapkan batas konteks run-time.

Runtime secara otomatis menangani tata letak objek dan mengelola referensi ke objek, melepaskannya saat tidak lagi digunakan. Objek yang masa hidupnya 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, tidak terkelola, atau terkelola dan tidak terkelola 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 perancangan komponen dan aplikasi yang objeknya berinteraksi lintas bahasa. Objek yang ditulis dalam bahasa yang berbeda dapat berkomunikasi satu sama lain, dan perilaku mereka dapat diintegrasikan dengan erat. Misalnya, Anda dapat menentukan kelas dan kemudian 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 kelas yang ditulis dalam bahasa 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 menentukan jenis baru dan untuk membuat, menggunakan, bertahan, dan mengikat ke jenis.

Sebagai bagian dari metadata mereka, semua komponen yang dikelola membawa informasi tentang komponen dan sumber daya yang mereka bangun. Runtime menggunakan informasi ini untuk memastikan bahwa komponen atau aplikasi Anda memiliki versi yang ditentukan dari semua yang dibutuhkan, yang membuat kode Anda cenderung tidak rusak karena beberapa 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.

Pengompilasi dan alat bahasa mengekspos fungsionalitas runtime dengan cara yang dimaksudkan agar berguna dan intuitif bagi pengembang. Beberapa fitur runtime mungkin lebih terlihat di satu lingkungan daripada di lingkungan lain. Bagaimana Anda mengalami runtime tergantung pada pengompilasi bahasa atau alat 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 yang disediakan oleh perpustakaan kelas.

  • Fitur bahasa seperti warisan, 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 delegasi alih-alih penunjuk fungsi untuk peningkatan keselamatan dan keamanan tipe. Untuk informasi selengkapnya tentang delegasi, lihat Sistem Jenis 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 Unduh .NET Core.

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

Judul Deskripsi
Proses Eksekusi Terkelola Menjelaskan langkah-langkah yang diperlukan untuk memanfaatkan runtime bahasa 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 Jenis Umum Menjelaskan bagaimana jenis dideklarasikan, digunakan, dan dikelola dalam runtime untuk mendukung integrasi lintas bahasa.