.NET CLR, herhangi bir .NET programlama dilinde yazılmış kodu yöneten ve yürüten bir çalışma ortamıdır. CLR, .NET çerçevesinin sanal makine bileşenidir. Bu dilin derleyicisi, .NET uyumlu diller kullanılarak geliştirilen uygulamaların kaynak kodunu, CLR'nin MSIL adı verilen ara diline, yani Microsoft ara dil koduna derler. Bu kod platformdan bağımsızdır. Java'daki bayt koduyla karşılaştırılabilir. Meta veriler ayrıca derleme ve MSIL kodu sırasında oluşturulur ve Manifest dosyası olarak bilinen bir dosyada saklanır. Bu meta veriler genellikle CLR'nin MSIL kodunu yürütmek için ihtiyaç duyduğu üyeler ve türlerle ilgilidir. CLR'nin tam zamanında derleyici bileşeni, MSIL kodunu makinenin yerel koduna dönüştürür. Bu kod platforma bağlıdır. CLR belleği, iş parçacıklarını, istisnaları, kod yürütmeyi, kod güvenliğini, doğrulamayı ve derlemeyi yönetir.
c'deki ascii tablosu
Aşağıdaki şekil kaynak kodunun yerel koda dönüştürülmesini göstermektedir.
Yukarıdaki şekil kodu, CPU'nun çalıştırabileceği yerel koda dönüştürür.
CLR'nin ana bileşenleri şunlardır:
- Ortak tip sistemi
- Ortak dil belirtimi
- Çöp toplayıcı
- Tam Zamanında Derleyici
- Meta Veriler ve Montajlar
1. Ortak tip sistemi:
CTS, çalışma zamanında veri türlerinin bildirilmesi, kullanılması ve yönetilmesi için yönergeler sağlar. Diller arası iletişim sunar. Örneğin, VB.NET bir tamsayı veri türüne sahiptir ve C#, tamsayıları yönetmek için bir int veri türüne sahiptir. Derlemeden sonra Int32 her iki veri türü tarafından da kullanılır. Dolayısıyla CTS, yönetilen kodu kullanarak veri türlerini sağlar. Ortak bir tür sistemi, dilden bağımsız kod yazmaya yardımcı olur.
İki Tür kategorisi sağlar.
2. Ortak Dil Belirtimi (CLS):
Ortak Dil Belirtimi (CLS), NET destekli tüm dillerin uyması gereken bir dizi kural içerir. Ortak kurallar, dil entegrasyonunun uygulanmasını kolaylaştırır ve diller arası miras ve hata ayıklamaya yardımcı olur. NET Framework tarafından desteklenen her dilin kendi sözdizimi kuralları vardır. Ancak CLS, NET dilleri kullanılarak geliştirilen uygulamalar arasında birlikte çalışabilirliği sağlar.
3. Çöp Toplama:
Çöp Toplayıcı, CLR'nin otomatik bellek yöneticisi olarak çalışan bir bileşenidir. Belleği ihtiyaca göre otomatik olarak tahsis ederek belleğin yönetilmesine yardımcı olur. Yığın belleğini nesnelere ayırır. Nesneler kullanılmadığında, onlara ayrılan belleği gelecekte kullanmak üzere geri alır. Ayrıca bir nesnenin başka bir nesnenin içeriğini kullanmasına izin vermeyerek nesnelerin güvenliğini sağlar.
4. Tam Zamanında (JIT) Derleyicisi:
JIT Derleyicisi CLR'nin önemli bir bileşenidir. MSIL kodunu yerel koda (yani makineye özgü kod) dönüştürür. .NET programı açık veya örtülü olarak derlenir. Geliştirici veya programcı, programı açık derlemede derlemek için belirli bir derleyiciyi çağırır. Örtülü derlemede program iki kez derlenir. Kaynak kodu, ilk derleme işlemi sırasında Microsoft Intermediate Language'e (MSIL) derlenir. MSIL kodu, ikinci derleme işleminde yerel koda dönüştürülür. Bu işleme JIT derlemesi denir. Üç tür JIT derleyicisi vardır: Pre, Econo ve Normal. Pre JIT Derleyicisi, yürütmeden önce MSIL kodunun tamamını yerel koda derler. Econo JIT Derleyicisi, MSIL kodunun yalnızca yürütme sırasında gerekli olan kısımlarını derler ve artık gerekli olmayan kısımları kaldırır. Normal JIT Derleyicisi ayrıca MSIL kodunun yalnızca yürütme sırasında gereken kısımlarını derler ancak bunları ileride kullanmak üzere önbelleğe yerleştirir. Zaten kullanılmış olan parçalar önbelleğe yerleştirildiğinden yeniden derlenmesini gerektirmez.
5. Meta veriler:
Meta Veriler, MSIL koduyla birlikte bir CLR Taşınabilir Yürütülebilir dosyasında (PE) veya bellekte saklanan, program hakkında ikili bir bilgidir. MSIL'in yürütülmesi sırasında, sınıfların ve ilgili sınıfların doğru yorumlanması için meta veriler de belleğe yüklenir. Kodda kullanılan bilgiler. Dolayısıyla meta veriler, kodun dilden bağımsız bir şekilde uygulanmasına veya dille birlikte çalışabilirliğin sağlanmasına yardımcı olur.
6. Meclisler:
Montaj, fiziksel kod gruplandırmanın temel birimidir. Derleme bildirimi, meta veriler, MSIL kodu ve görüntü dosyaları gibi bir dizi kaynaktan oluşur. Aynı zamanda temel bir dağıtım birimi, sürüm kontrolü, yeniden kullanım, güvenlik izinleri vb. olarak da kabul edilir.
.NET CLR İşlevleri
Aşağıda CLR'nin işlevleri verilmiştir.
- Programı yerel koda dönüştürür.
- İstisnaları Yönetir
- Tip güvenliği sağlar
- Bellek yönetimi
- Güvenlik sağlar
- Geliştirilmiş performans
- Dilden bağımsız
- Platform bağımsız
- Çöp toplama
- Nesne yönelimli programlar için miras, arayüzler ve aşırı yükleme gibi dil özellikleri sağlar.
CLR ile çalışan koda yönetilen kod, CLR dışında kalan koda ise yönetilmeyen kod adı verilir. CLR ayrıca hem yönetilen hem de yönetilmeyen kodların birlikte çalışmasına olanak tanıyan bir Birlikte Çalışabilirlik katmanı sağlar.
1. Yönetilen kod:
.NET çerçevesinde yazılan herhangi bir dil, yönetilen koddur. Yönetilen kod, belleği yöneterek, güvenliği yöneterek, diller arası hata ayıklamaya izin vererek vb. uygulamalarınızla ilgilenen CLR'yi kullanır. Yönetilen kod süreci şekilde gösterilmektedir:
2. Yönetilmeyen kod:
.NET çerçevesi dışında geliştirilen kod, yönetilmeyen kod olarak bilinir. CLR'nin kontrolü altında çalışmayan uygulamalara yönetilmeyen uygulamalar denir. İşletim sisteminin düşük düzeyli erişim işlevleri gibi bu tür uygulamaları yazmak için C++ gibi belirli diller kullanılabilir. VB, ASP ve COM ile arka planda uyumluluk, yönetilmeyen kod örnekleridir. Bu kod sarmalayıcı sınıfların yardımıyla yürütülür. Yönetilmeyen kod süreci aşağıda gösterilmiştir:
.NET CLR Sürümleri
CLR daha iyi performans sağlamak için zaman zaman kendini günceller.
.NET sürümü | CLR sürümü |
---|---|
1.0 | 1.0 |
1.1 | 1.1 |
2.0 | 2.0 |
3.0 | 2.0 |
3.5 | 2.0 |
4 | 4 |
4.5 | 4 |
4.6 | 4 |
4.6 | 4 |
.NET CLR Yapısı
Ortak Dil Çalışma Zamanının bileşen yapısı aşağıdadır.
Temel Sınıf Kitaplığı Desteği
.NET uygulamasına yönelik sınıfları destekleyen bir sınıf kütüphanesidir.
Konu Desteği
Çok iş parçacıklı uygulamanın paralel yürütülmesini yönetir.
COM Sıralayıcısı
COM nesneleri ile uygulama arasındaki iletişimi sağlar.
Güvenlik Motoru
Güvenlik kısıtlamalarını zorlar.
Hata Ayıklama Motoru
Farklı türdeki uygulamalarda hata ayıklamanıza olanak tanır.
Tip Denetleyicisi
Uygulamada kullanılan türleri kontrol eder ve bunların CLR tarafından sağlanan standartlarla eşleştiğini doğrular.
Kod Yöneticisi
Yürütme çalışma zamanında kodu yönetir.
Çöp toplayıcı
Kullanılmayan belleği serbest bırakır ve onu yeni bir uygulamaya ayırır.
İstisna İşleyicisi
Uygulama hatasını önlemek için çalışma zamanında istisnayı işler.
Sınıf Yükleyici
Çalışma zamanında tüm sınıfları yüklemek için kullanılır.