DotNet Nedir ve Temel Kavramlar

13 Ocak 2011 Perşembe

Microsoftun çıkardığı ve programcıya, dil ve platform bağımsızlığını sağlayan mimaridir. Burda kodlar önce MSIL dediğimiz ara koda, sonra Windows da CLR, Linux de Mono dediğimiz işlemcinin anlayacağı dile çevirir. Burda ilk derlemeden sonra MSIL e cevrildiği için tüm kodlar dilin önemi ortadan kalkar, Ayrıca CLR ve MONO projesi sayesinde de işlemci ve işletim sistemi farklılığı sorunu ortadan kaldırılmaya çalışılsada Mono projesinin yeterli ilgili görmeyişi bu sorunu hala devam ettirmektedir.

.NET ile birlikte programcının hizmetine sunulan 3400'den fazla sınıf, modern anlamda çok güzel bir geliştirme ortamı sunuyor. Bu sayede programlamları daha hızlı bir şekilde geliştirme imkanına sahip bulunuyoruz. .NET kullanarak yazdığımız ASP.NET, Windows Forms veya mobil cihazlar için geliştirdiğimiz bir uygulamayı birinden diğerine dönüştürmek işi çok kolay bir şekilde yapılabiliniyor. Bu sayede aynı anda hem windows hem de web uygulamaları geliştirmek çok hoşunuza gidecektir.

 

Peki bunca hoş özellikleri bize sağlayan .NET alt yapısında program yazarken hangi dili veya dilleri kullanmak zorundayız? Bu konuda Microsoft çok radikal bir karar alarak gelecek için hazırlanmış yeni alt yapıda Common Language Runtime (CLR) ile uyumlu her .NET dilini kullanmamıza olanak sağlıyor. .NET ile gelen SDK'da C#,VB.NET ve Js.NET kullanarak program yazabiliyoruz. Diğer taraftan 30'un üzerinde programlama diliyle .NET uygulaması geliştirebilirsiniz.

CLR denen şey tam olarak nedir? .NET altyapısında programların çalışmasını kontrol eden ve işletim sistemi ile programımız arasında yer alan arabirimdir. Normalde yazdığımız programlar derlenirken makine diline çevrilirdi ve program bu şekilde işletim sistemi ile direkt bağlantı kurarak çalışırdı. Fakat platform bağımsız bir geliştirme ve yürütme ortamı istiyorsanız ne olacak? İşte tam bu anda CLR devreye girer ve .NET programlarını farklı platformlarda makineye ve işletim sistemine göre programımızı çalıştırır. Normalde bir Windows, Linux veya MACOS kurulu sistemler aynı programın kodunu çalıştıramazlar. Bu platformlar için programın ayrı ayrı yazılıp, onlara göre hazırlanmış derleyicilerde derlenmesi gerekir. Dünyada çok sayıda yaygın platform olduğunu düşünürsek, bunların herbiri için ayrı ayrı derleme işlemini tek bir işletim sisteminde yapmamız imkansız gibidir. Bu durumda çözüm , ortak bir aradil kullanmak ve herbir platform için bu aradile çevrilmiş programın kodunu çalıştıracak  altyapıları hazırlamaktır.

Şimdi şu soruya sıra geldi: "İyi de .NET hangi aradili kullanıyor?" Sorumuzun cevabı MSIL(Microsoft intermediate Language) .NET platfomunda hangi dili kullanırsak kullanalım yazdığımız programın kodu direkt olarak makine diline değil de MSIL'e çevrilir. Bu sadece programı çalıştırdığımız sistemde kurulu olan CLR çalışma anında MSIL kodlarını çevirerek programımızı çalıştırır, çalışma anında derleme işlemini ise JIT derleyicileri (Just in Time compilers) üstlenir. NET ile Microsoft, Microsoft Intermediate Language (MSIL) standardını tanımlayarak tüm programlama dilleri ve derleyici firmaları tarafından kaynak kodun standart bir Ara Kod'a çevrimini sağlayacak alt yapıyı kurmuş oldu.

Derleyicinin en kısa tanımı "Kaynak kodu (Source Code) makine koduna (Machine Code) çeviren uygulama" olarak yapılabilir. Kaynak kod, belirli bir bilgisayar dilinin kurallarına uyularak yazılan koddur. Makine kodu, belirli donanım(lar) tarafından çalıştırılabilen komutların (Instructions) bulunduğu yapıdır. Örneğin Intel veya Risc (Reduced Instruction Set Computer) tabanlı işlemciler.

Hangi derleyici olursa olsun, derleyici teknolojisinin geldiği son noktada tüm derleyiciler kaynak kodun makine koduna çevrimi aşamasında aşağıdaki adımları izlerler.

 

Aşama

Açıklama

 

Lexical Analiz

Kaynak kod şekilsel olarak analiz edilir. Örneğin anlatımlar sabitler, tamsayılar, belirleyiciler (Identifiers) şeklinde parçalanır.

 

Syntax Analiz

Kaynak kod cümle yapısı bazında kontrol edilir. Örneğin anlatımlar operatörler bazında parçalanır.

 

Semantic Analiz

Kaynak kod mantıksal olarak kontrol edilir. Örneğin bir dizi (Array) ile bir tamsayının toplanması bu aşamaya kadar geçerli bir işlemken, bu aşamadan sonra geçersiz sayılır.

 

Ara (Intermediate) Kod Oluşturma

Gerek şekilsel, gerek cümlesel, gerek mantıksal olarak kontrol edilen kaynak kod ara bir dile çevrilir. Çevrilen bu dilin yapısı derleyici üreticisinin belirlediği yapıdadır.

 

Kod Optimizasyonu

Ara dile çevrilen kodun optimizasyonu yapılır. Bu aşama derleyici kalitesinin etkili olduğu bir aşamadır.

 

Kod Oluşturma

Optimize edilmiş ve hata bağımsız kaynak kod hedef dile (Örneğin makine diline) çevrilir.


Bugüne kadar her derleyici firması tarafından ilgili derleyici firmasına özgü oluşturulan Ara Kod'un standart bir yapıya kavuşturulması için bazı çalışmalar yapıldıysa da programlama dillerinin ve kullanılan tiplerin birbirinden çok farklı olması sebebiyle başarı sağlanamamıştı.

.NET ile temel olarak iki büyük hedef başarılmış oldu. Birincisi, birbirinden farklı programlama dilleri kullanarak tip uyuşmazlığı gibi problemlerin olmadığı bir zeminde standart ara kodun oluşturulması, ikincisi, standart yapıda olan ara kodun optimizasyonunun ve hedef dile çevriminin tek noktadan yapılabilmesi.

Bütün bu işlemlerin sağladığı olanaklar ise; Daha güvenli işletim sistemi, dil bağımsızlığı, donanım bağımsızlığı olarak özetlenebilir.

 Framework Kavramı
“Framework” kavramının karşılık gelebileceği bir sürü anlam olduğundan, söz edilen konunun “Yazılım Çatısı(Software Framework)” olduğunu bilmeniz gerekmektedir. “Yazılım Çatısı(Software Framework)” kavramı tam olarak : “Yazılım sistemleri ya da alt sistemleri için tekrar kullanılabilir bir alt yapı tasarımı” anlamına gelmektedir. “Framework” geliştirmenin amacı ise tekrar kullanılabilir ve genişletilebilir bir alt yapı üzerinde tüm teknolojileri çalıştırabilmektir. “Framework”ler böyle bir zorunluluk olmamasına rağmen genellikle “Nesne Yönelimli Programlama” mantığıyla geliştirilmiştirler ve yazılımcılara uygulamalarını geliştirirken yardımcı olan yapılardır. Aynı zamanda geliştirilen “Framework“ler API(Application Programming Interface) adı verilen işletim sisteminin kullandığı nesnelere kolayca erişimi sağlayan yapılar arasındadırlar. Dünyada bu amaçlara hizmet etmek için geliştirilmiş bir sürü ”Framework” bulunmaktadır:

Dotnet ile ilgili Temel Kavramlar

Microsoft .NET Windows sistemler üzerinde yapılan programlama mantığını radikal olarak değiştiren özellikler ve yapılar içermektedir. Bu değişimin temel bazı yapı taşları ve teknolojiler aşağıda açıklanmıştır.

 

Kavram / Teknoloji

Açıklama

 

Common Language Infrastructure (CLI)

European Computer Manufacturer's Association tarafından belirlenen programlama dillerinin ortaklaşalığı standardı.

Bu standart aşağıdaki alanları içermektedir.

-
Common Type System (CTS): Tiplerin ve nesnelerin farklı programlama dilleri tarafından paylaşımını sağlayan standart.

- Common Language Specification (CLS): Derleyicilerin ürettikleri kütüphanelerin yapısını belirten standart.

- Metadata: CLI uyumlu derleyiciler için assembly'ler içinde bulunan modüllerin kendilerini anlatmaları zorunludur. Modüller içerisinde bulunan metadata kullanılan tipleri vr özelliklerini içeren bilgidir.

- Common Intermediate Language (CIL): .NET derleyicileri tarafından üretilen, yüksek seviyeli, donanım bağımsız ara dil. Daha fazla bilgi için .NET Nedir ?  klavuzuna başvurunuz.

- Virtual Execution System (VES): CIL'in derlemesini sağlayan sistem.

 

Common Language Runtime (CLR)

Microsoft tarafından geliştirilen ve tasarlanan CLI.

 

.NET Framework Class Library

Geniş ve zengin sınıflara sahip nesne tabanlı kütüphane.

 

ADO.NET

.NET veri giriş standardı.

 

XML Web Hizmetleri

XML (Extended Markup Language) kullanılarak farklı sistemler tarafından veri alışverişinin standart protokollerle yapılmasını sağlayan sistem.


 



Adınız
Mail
Web Siteniz
Yorumunuz