11, Nis 2023
C# Nedir, .Net Framework Nedir? Farkları Nelerdir?

2002 de versiyon 1.0 ile başlayan serüvenlerinde 2012 yılına gelene kadar, yani  versiyonu yayınlanana kadar her ikisi de aynı sürüm numaralarına sahipti ancak bu yıl ile birlikte  ile yoluna devam ederken,  tarafında versiyonlar 4.5 diye devam etti. Artık bu saatten sonra belki de kafaların karışmasına sebep olan iki ayrı versiyon vardı elimizde. Ancak bu kafa karışıklığının asıl sebebi bu iki kavramın zaten aynı şey olduğunu düşünmemiz olabilir. Peki bu ikisi de ayrı ayrı ne anlamına geliyor?

Öncelikle .Net Framework dediğimiz kavramdan başlayalım.

Bu kavram aslında geniş bir yapıyı içinde barındırıyor. Şöyle ki;  dediğimiz şey en temelde Windows üzerindeki işletilebilen dosya uzantısı olan .dll’e sahip olan dosyalar bütünü diyebiliriz. Bu dosyalar içerisinde hem ’e ait işletilebilir kodlar var hem de Windows işletim sistemine (daha sonra Linux ve Mac işletim sistemleri de eklendi) ait hizmetleri kullanmamızı sağlayan kodlar mevcut.  sadece bununla da kalmıyor içerisinde CLR  dediğimiz uygulamalarımızın çalışmasını sağlayan da ortak bir yapıyı da barındırıyor.

Peki bu birimin .Net içerisinde olması bizi neden ilgilendiriyor?

.Net içerisindeki bu CLR olmadan biz  dilini kullanarak uygulamalarımızı çalıştıramıyoruz. Evet duydunuz  için bir “DİL” ifadesini kullandım. Birazdan detaylara değineceğiz. CLR ortak bir yapı olduğu için  CLR’a çevrilmiş bir bunu destekleyen herhangi bir işletim sistemi tarafından çalıştırılabilir. O zaman buradan anladığımız şu, bir işletim sistemi üzerinde CLR varsa ve bu CLR da çalıştırılabilecek bir varsa bu herhangi bir işletim sistemi tarafından çalıştırılabilir. Evet doğru anlamışız 🙂

Şimdi tarafına geri dönelim. Framework için ne demiştik? İçerisinde hem işletim sistemi API lerini kullanabilen hem de kendine özgü fonksiyonları olan ve bize bunları sunabilen, dll lerden oluşmuş, içerisinde CLR’ı da barındıran bir yapı (Çok güzel tabir oldu!).

Dolayısı ile  her versiyon güncellemesi aldığında, hem işletim sistemleri tarafında değişmiş olan servisleri geliştiriyor hem de kendi içerisinde bize sunmuş olduğu özellikleri değiştiriyor. Bazılarında performans çalışmaları yapılırken belki bazı özellikler ise komple kaldırılıyor. Bu sebeple ’ün en güncel halini kullanmak her zaman avantajımıza olacaktır. Peki diyelim ki biz ’ün bu özelliklerini kullanmak istiyoruz. Bu durumda ne yapmamız gerekiyor derseniz de o zaman bu hizmetlere ulaşmamızı sağlayacak bir programlama diline ihtiyacımız var.

 bir programlama dilidir. Hem de çok geniş hizmetler sunan bir programlama dilidir.  hizmetlerine ulaşmamızı sağlayan bir dildir ayrıca. Hatta öyle ki zaten ’e kolay ulaşalım diye geliştirilmiştir. Peki ’ü aradan çıkartıp doğrudan CLR kullanarak bir uygulamayı çalıştırmak mümkün müdür sizce? Cevabımız evet. çünkü daha önce de bahsettiğim gibi bu yapı ortak bir yapı. CLR destekleyen başka bir programlama dili kullanarak o işletim sistemi üzerinde o uygulamayı çalıştırabiliriz. Hangi dillerin CLR’ı desteklediğinin listesine de şuradan ulaşabilirsiniz.

CSharp’a geri dönelim. Peki programlama dili ise bu dilin versiyonlarında neler değişiyor? Bunu iki kategoriye ayıralım;

  1.  güncellemeleri,  içerisindeki güncellemeleri kullanmak üzere geliştiriliyor. Yani  içerisine bir özellik eklendiğinde  da bu özelliği kullanabilmek için kendini geliştirmeli. Örneğin yakın bir dönemde NET7 versiyonu yayınlanacak ve içerisinde bir çok özelliği barındıracak. Bu yeni özellikleri kullanabilmek için  tarafında da bir güncelleme yapılması gerekiyor ki o da  versiyonu olacak. NET7 nin tüm özelliklerini C#11 ile kullanabileceğiz.
  2. CSharp’ın bir dil olması sebebiyle kendi içerisinde de bazı özellikleri barındırdığını söyleyebiliriz. Bu özellikler bizim  yani kod yazma stilimizi de değiştirebiliyor. Örneğin; versiyonlarında bir  yaratmak istediğimizde kodumuz şöyle olmalı;

Ancak daha sonra  dili içerisindeki geliştirmeler sebebiyle “Compiler”, yani kodumuzun derlenmesini sağlayan mekanizma da gelişti ve artık kod yazım stilimizi doğru şekilde değiştirerek aynı sonucu elde edebiliyoruz. Mesela  versiyonunda artık şu şekilde de tanımlama yapabiliyoruz.

Bu ve bunun gibi geliştirmeler ise ’e erişmek için kullanmış olduğumuz programlama dilleri tarafında, yani buradaki örneğimizdeki gibi  dili içerisinde yapılıyor.

Bu yazımızda  ve  gibi kavramları ayrı ayrı ele alarak neden ikisinin ayrı şeyler olduğunu ve dolayısıyla da neden farklı versiyonlara sahip olduklarına değindik.

Başka bir yazıda görüşmek üzere 🙂

 

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir