Common Language Runtime (CLR)

CLR kullanan geliştiriciler özel bir programlama dili kullanmaz. C# veya VB.NET gibi desteklenen çeşitli dillerle programı yazarlar. Daha sonra derleme zamanında (compile time), bir .NET derleyicisi bu kodu alıp CIL koduna dönüştürür. Daha sonra çalışma zamanında (runtime) CLR’ın just-in-time (tam zamanında) derleyicisi CIL kodunu işletim sistemine uygun koda (native code) dönüştürür. Buna alternatif olarak CIL kodu ayrı bir basamakta önceden planlanmış çalışma zamanı şeklinde ana koda (native code) dönüştürülebilir. Bu dönüşüm Ana İmaj Üreticisi (Native Image Generator – NGEN) tarafından yapılabilir. Bu metodu kullanmak sonraki çalışmalarda CIL kodunu ana koda dönüştürme işlemini atlar ve program daha hızlı çalışır. Diğer CLI uygulamaları Windows dışı işletim sistemleri üzerinde çalıştırılsa da Microsoft’un uygulamaları sadece Microsoft Windows işletim sistemleri üzerinde çalışır. Tüm konuyu özetlemek istersek, CLR sayesinde desteklenen dillerde bir program yazarız. Daha sonra bu programı derleme zamanı derleyicisiyle CIL koduna yada diğer adıyla bitkoduna dönüştürürüz. Bu sayede her işletim sisteminde çalışabilecek bir kod elde etmiş oluruz. Daha sonra yazdığımız programı hangi işletim sistemi üzerinde çalıştırmak istiyorsak çalışma zamanı derleyicisiyle derler programı çalıştırırız.

CLR’ın yanında, en az onun kadar kullanışlı bir diğer ek öğe SQLCLR yada SQL CLR’dır. SQLCLR mantık olarak CLR gibi çalışır. Burada ki tek fark kodu SQL içine gömebilmektir. Saklı yordamları (stored procedure) kullanarak SQL Server üzerinde bir program çalıştırabiliriz. Örneğin bir saklı yordam içinde bir sorgu yazdık. O yıl çok kar elde ettik ve yeterince iyi çalışanları daha da gayretlendirmek için maaşlarına zam yaptık. Ayrıca bu mutlu haberi onlarla paylaşmak istiyoruz. Sorguda sonunda ilgili çalışanların telefon numaraları dönüyor. Bu yazdığımız saklı yordam içine SMS programını gömerek sorgu sonunda dönen telefon numaralarına SMS atıyoruz.  

Yorum Gönderin

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir