Bagikan melalui


Gambaran Umum Integrasi CLR

Runtime bahasa umum (CLR) adalah jantung .NET Framework Microsoft dan menyediakan lingkungan eksekusi untuk semua kode .NET Framework. Kode yang berjalan dalam CLR disebut sebagai kode terkelola. CLR menyediakan berbagai fungsi dan layanan yang diperlukan untuk eksekusi program, termasuk kompilasi just-in-time (JIT), mengalokasikan dan mengelola memori, menegakkan keamanan jenis, penanganan pengecualian, manajemen utas, dan keamanan. Lihat SDK .NET Framework untuk informasi selengkapnya.

Dengan CLR yang di-host di Microsoft SQL Server (disebut integrasi CLR), Anda dapat menulis prosedur tersimpan, pemicu, fungsi yang ditentukan pengguna, jenis yang ditentukan pengguna, dan agregat yang ditentukan pengguna dalam kode terkelola. Karena kode terkelola dikompilasi ke kode asli sebelum eksekusi, Anda dapat mencapai peningkatan performa yang signifikan dalam beberapa skenario.

Kode terkelola menggunakan Code Access Security (CAS) untuk mencegah rakitan melakukan operasi tertentu. SQL Server menggunakan CAS untuk membantu mengamankan kode terkelola dan mencegah penyusupan sistem operasi atau server database.

Keuntungan dari Integrasi CLR

Transact-SQL dirancang khusus untuk akses dan manipulasi data langsung dalam database. Meskipun Transact-SQL unggul dalam akses dan manajemen data, ini bukan bahasa pemrograman lengkap. Misalnya, Transact-SQL tidak mendukung array, koleksi, untuk setiap perulangan, pergeseran bit, atau kelas. Meskipun beberapa konstruksi ini dapat disimulasikan dalam Transact-SQL, kode terkelola telah mengintegrasikan dukungan untuk konstruksi ini. Bergantung pada skenarionya, fitur-fitur ini dapat memberikan alasan yang menarik untuk menerapkan fungsionalitas database tertentu dalam kode terkelola.

Microsoft Visual Basic .NET dan Microsoft Visual C# menawarkan kemampuan berorientasi objek seperti enkaplasi, pewarisan, dan polimorfisme. Kode terkait sekarang dapat dengan mudah diatur ke dalam kelas dan namespace layanan. Ketika Anda bekerja dengan sejumlah besar kode server, ini memungkinkan Anda untuk lebih mudah mengatur dan memelihara kode Anda.

Kode terkelola lebih cocok daripada Transact-SQL untuk perhitungan dan logika eksekusi yang rumit, dan memiliki dukungan ekstensif untuk banyak tugas kompleks, termasuk penanganan string dan ekspresi reguler. Dengan fungsionalitas yang ditemukan di pustaka .NET Framework, Anda memiliki akses ke ribuan kelas dan rutinitas bawaan. Ini dapat dengan mudah diakses dari prosedur tersimpan, pemicu, atau fungsi yang ditentukan pengguna. Pustaka Kelas Dasar (BCL) mencakup kelas yang menyediakan fungsionalitas untuk manipulasi string, operasi matematika tingkat lanjut, akses file, kriptografi, dan banyak lagi.

Catatan

Meskipun banyak dari kelas ini tersedia untuk digunakan dari dalam kode CLR di SQL Server, kelas yang tidak sesuai untuk penggunaan sisi server (misalnya, kelas windowing), tidak tersedia. Untuk informasi selengkapnya, lihat Pustaka .NET Framework yang didukung.

Salah satu manfaat kode terkelola adalah keamanan jenis, atau jaminan bahwa kode mengakses jenis hanya dengan cara yang terdefinisi dengan baik dan diizinkan. Sebelum kode terkelola dijalankan, CLR memverifikasi bahwa kode aman. Misalnya, kode diperiksa untuk memastikan bahwa tidak ada memori yang dibaca yang sebelumnya belum ditulis. CLR juga dapat membantu memastikan bahwa kode tidak memanipulasi memori yang tidak dikelola.

Integrasi CLR menawarkan potensi peningkatan performa. Untuk informasi, lihat Performa Integrasi CLR.

Memilih Antara Transact-SQL dan Kode Terkelola

Saat menulis prosedur tersimpan, pemicu, dan fungsi yang ditentukan pengguna, satu keputusan yang harus Anda buat adalah apakah akan menggunakan Transact-SQL tradisional, atau bahasa .NET Framework seperti Visual Basic .NET atau Visual C#. Gunakan Transact-SQL ketika kode sebagian besar akan melakukan akses data dengan sedikit atau tanpa logika prosedural. Gunakan kode terkelola untuk fungsi dan prosedur intensif CPU yang menampilkan logika kompleks, atau saat Anda ingin menggunakan BCL .NET Framework.

Memilih Antara Eksekusi di Server dan Eksekusi di Klien

Faktor lain dalam keputusan Anda tentang apakah akan menggunakan Transact-SQL atau kode terkelola adalah di mana Anda ingin kode Anda berada, komputer server atau komputer klien. Transact-SQL dan kode terkelola dapat dijalankan di server. Ini menempatkan kode dan data yang berdekatan, dan memungkinkan Anda untuk memanfaatkan kekuatan pemrosesan server. Di sisi lain, Anda mungkin ingin menghindari penempatan tugas intensif prosesor di server database Anda. Sebagian besar komputer klien saat ini sangat kuat, dan Anda mungkin ingin memanfaatkan daya pemrosesan ini dengan menempatkan kode sebanyak mungkin pada klien. Kode terkelola dapat berjalan di komputer klien, sementara Transact-SQL tidak dapat.

Memilih Antara Prosedur Tersimpan yang Diperluas dan Kode Terkelola

Prosedur tersimpan yang diperluas dapat dibangun untuk melakukan fungsionalitas yang tidak dimungkinkan dengan prosedur tersimpan Transact-SQL. Namun, prosedur tersimpan yang diperluas dapat membahayakan integritas proses SQL Server, sementara kode terkelola yang diverifikasi menjadi jenis aman tidak dapat dilakukan. Selanjutnya, manajemen memori, penjadwalan utas dan serat, dan layanan sinkronisasi lebih terintegrasi secara mendalam antara kode terkelola CLR dan SQL Server. Dengan integrasi CLR, Anda memiliki cara yang lebih aman daripada prosedur tersimpan yang diperluas untuk menulis prosedur tersimpan yang Anda butuhkan untuk melakukan tugas yang tidak dimungkinkan dalam Transact-SQL. Untuk informasi selengkapnya tentang integrasi CLR dan prosedur tersimpan yang diperluas, lihat Performa Integrasi CLR.

Lihat juga

Menginstal .NET Framework
Arsitektur Integrasi CLR
Akses Data dari Objek Database CLR
Memulai Integrasi CLR