.NET Framework Bileşenleri



.NET Framework,çok dağıtık (Highly-distributed),bileşen yönelimli uygulamaların geliştirilmesini ve yürütülmesini destekleyen bir ortam tanımlar..NET Framework,farklılık gösteren bilgisayar dillerinin birlikte çalışmasını mümkün kılar ve Windows platformu için güvenlik,taşınabirlilik(program açısından) ve ortak bir programlama modeli sağlar..NET Framework C# ile ilişkisi bakımından çok önemli iki unsuru tanımlar.

COMMON LANGUAGE RUNTIME ( CLR - Ortak Dil Çalışma Zamanı )

Bu programınızın çalışmasını idare eden sistemdir.Diğer avantajlarının yanısıra CLR,.NET Framework'ün programların taşınabilirliğini mümkün kılan,karışık dilde programlamayı destekleyen ve güvenliği sağlayan bir parçasıdır.

CLR,.NET kodunun çalıştırılmasını yani yürütülmesini idare eder.CLR şu şekilde çalışır;Bir C# programını derlediğinizde,derleyiciden elde edilen çıktı çalıştırılabilir bir kod değildir.Bilakis bu Microsoft Intermediate Languae (MSIL) denilen özel bir tipte sözde kod (pseudocode)içeren bir dosyadır.

CLI,CTS VE CLS Nedir?

Farklı programlama dilleriyle yazılan programların yeniden düzenlenmeksizin değişik ortamlarda çalışması için bazı temel şartlara uymaları gerekmektedir.Microsoft,HP ve İntel ortaklıgı tarafından belirlenmiş bu standartlar,bilgi teknolojileri standartları konusunda uzman olan "ECMA"kurumunun imzasıyla yayınlanmıştır..NET ortamı üzerinde çalışacak dillerin standartları,ECMA tarafından,Ortak dil yapısı - CLI ( Common Language Infrastructure)olarak belgelenmiştir.

CLI Şunları amaçlar ;

* Standart Dil Tanımlamaları (Common Language Specification - CLS )
* Dillerin desteklediği ortak veri türü yapısı (Common Type System - CTS)
* Bileşen yapısının nasıl destekleneceği (Component Structure)
* İstisnai durumların nasıl yöneticileği

Programlama dillerinin standartları (CLI) aşağıdaki bölümleri içerir

* Ortak Tür Sistemi (Common Type System - CTS)
* Ortak Dİl özellikleri (Common Language Specification - CLS)
* Sanal Çalıştırma Sistem (Virtual Execution System (VES)-CLR)
* Üst-Veri (Metadata)


ORTAK TÜR SİSTEMİ - CTS (Common Type System)

.NET Framework çatısı altında çalışacak dillerin uyması gereken tür tanımlama standartlarıdır.Hangi veri türünü kullanacağı ve bu türlerin bellekte kaç byte yer işgal edeceği CTS'nin belirlediği bir standartıdır.CTS'nin temel veri türü System.Object sınıfıdır.

ORTAK DİL ÖZELLİKLERİ - CLS (Common Language Specification)

CTS'nin bir alt kümesi olan ve Framework'ün asıl kurallarını içeren CLS,MSIL kodunu üretecek derleyici ve bu derleyicinin oluşturduğu kütüphanelerin standartları olarak tanımlanır.

SANAL ÇALIŞMA ORTAMI - VES/CLR (Virtual Execution System)

Javadaki Java sanal makinaya eşdeğer olan VES,CLI standartlarına göre yazılmış Portable Executable(PE)dosyaları yüklemek ve çalıştırmakla sorumlu çalışma ortamıdır.

YÖNETİLEN (Managed)ve YÖNETİLEMEYEN (Unmaged) KOD NEDİR?

CLS 'ye uygun olarak geliştirilebilen,yani CLR tarafından yürütülebilen ve denetlenebilen kod yönetilen kod (managed kod)olarak isimlendirilir.Yönetilen kod CLR uyumlu koddur.Yönetilemeyen kod (unmanaged code)ise .NET dışında yazılmış kodlar olup CLR tarafından yönetilemeyen kodlardır.CLR,bu iki koduda çalıştırır ancak asıl yeteneklerini yönetilen kodda gösterir.

MISIL (Microsoft Intermediate Language) NE İŞE YARAR?

CLR Uyumlu farklı dillerle aynı çatı altında uygulam geliştirebilir.Bu entegrasyonun en mantıklı açıklaması,bu dillerin kendi derleyicileriyle derlendikten sonra aynı kodu üretiyor olmasıdır.Üretilen kod,dil ve ortamdan bağımsız ve ara dil olarak adlandırılan NSIL kodudur.IL ve CIL olarakda bilinen MSIL .NET ortamında herhangi bir dille geliştirilmiş kodların derleme sonrası o dilin derleyici tarafından dönüştükleri ara dildir.

Dil derleyicileri tarafından üretilen MSIL kodu ,program ilk kez çalıştırıldığında CLR tarafından CPU'nun anlayacağı doğal koda dönüştürülür.CLR söz konusu MSIL kodunu bir JIT (just in time / anında derleme)derleyici sayesinde makinenin çalıştıracağı şekle dönüştürülür.

Framework Sınıf Kütüphanesi FCL-(Framework Class Library)

Framework Sınıf kütüphanesi,.NET Framework altında çalışacak programlama dillerinin kullanacağı kütüphaneler topluluğudur.

FCL,uygulamaları hızlı geliştirmeyi,geliştirme sürecini optimize etmeyi ve pratik bir şekilde sisteme erişmeyi sağlayan sınıflar,arayüzler,temsilciler ve türler içerir.Framework Sınıf Kütüphanesi BCL (Base Class Library )olarakda adlandırılır.

Üst-Veri (Metadata) Nedir?

.Net ortamında bir dosya geliştirdiğimizde ilgili derleyici tarafından EXE veya DLL dosyasının içeriğine,dosya kimlik bilgileri,kullanılan türler,öznitelikler,referans verilmiş bütünleşik kodlar,güvenlik tanımlamaları ve diğer dosya nitelikleri tablo olarak eklenir.CLR ve JIT praogramı yürütürken programın içerisindeki öğeler hakkında bilgi veren bu veri tablosunu kullanırlar.Dosya hakkında bilgi veren beyanname niteliğindeki bu veri tablosuna üst-veri(metadata)denir.





YAZAR NOTU :


.NET ortamının en önemli unsuru ve temel yapıtaşı CLR (Common Language Runtime) teknolojisidir.

Yeni çalıştırma ortamı olan CLR,.NET ortamında uygulama çalıştıran ,güvenli kılan ve yöneten motor gibidir.CLR işletim sistemi iel .NET uyygulamaları arasında katman olarak çalışır.Uygulamanızın içerisindeki nesnelerin yönetimini,kod güvenliğini,bellek yönetimini,hata ayıklama ve bir çok işlem Framework'un bu motoru tarafından yürütülür.

CLR'ın getirilerinden ilki dinamik kütüphane dosyalarındaki (DLL-Dynamic Link Library) uyarlama problemlerini gidermesidir.Bildiğiniz gibi önceki uygulamalarda DLL dosyaları paylaşımlı olarak kullanabiliyorlardı.Uygulamalardan biri,DLL'in yeni sürümüne ihtiyaç duyduğunda zaman yeni sürümlü DLL,eski DLL'in yerine işletim sistemine kayıt edilirdi.Bu da asıl uygulama dışındaki diğer uygulamalar için sorun olmaktaydı.Şöyle ki,ilk olarak,yeni sürümlü DLL dosyalarındaki değişiklikler,eski sürümü kullanan diğer uygulamaları bozabiliyordu.

İkinci olarak uygulamalar,yeni sürümlü DLL dosyasındaki yeni nesnele,eski uygulamanın çalıştırılması esnasında gereksiz yere belleğe yükleniyordu.Yazılım tarihinde DLL Cehennemi (DLL HELL)olarak bilinen bu sorunu CLR,aynı DLL'in farklı sürümlerinin işletim sisteminde çalışmasına olanak sağlayarak çözmüştür.