NET Framework, Microsoft tarafından geliştirilen, açık İnternet protokolleri ve standartları üzerine kurulmuş komple bir uygulama geliştirme platformudur. Buradaki uygulama kavramının kapsamı çok geniştir. Bir masaüstü uygulamasından tutun, bir web tarayıcı uygulamasına kadar her şey bu platform içinde düşünülmüştür ve desteklenmiştir. Bu uygulamaların birbirleriyle ve geliştirildiği ortam farketmeksizin dünyadaki tüm uygulamalarla iletişimi için kolayca Web Servisleri oluşturulmasına imkan verilmiştir. Bu platform, işletim sisteminden ve donanımdan daha üst seviyede taşınabilir olarak tasarlanmıştır. Microsoft, üzerinde çok çalışılmış, düşünülmüş bir ürün ortaya sunmuştur ve görünen-beklenen o ki, ileride sunacağı tüm ürünler de bu yeni platformu hedef alacaktır. Bu serinin ilk ürünleri Windows Server 2003 ve Visual Studio 2003 satışa sunuldu zaten.
Belki temelinde yatan fikir olarak kimi teknolojilerin klonlandığı iddia edilebilir ki ediliyor da. Lâkin neticeye bakıldığında önümüzde çiçeği burnunda duran .NET :
interneti hedef alan bileşen setiyle,
programcıları özgürleştiren, diller arası etkileşime olanak tanıyan dil bağımsız mimarisiyle,
donanım-bağımsız ara seviye derleme ve güvenli talimat icraatını güvence altına alan çalışma zamanı ortamıyla,
web uygulamalarına getirdiği özgün ve radikal yaklaşımıyla,
zengin ve mükemmel organize edilmiş sınıf kütüphanesi ve dokümantasyonu ile,
sınırları ortadan kaldıran web servisi desteğiyle...
ve daha da sayabileceğimiz bir çok özelliğiyle benzetildiği teknolojileri geride bırakan inkar edilemeyecek seviyede özgün bir platformdur.
Bu platformu nasıl edineceğim? Paralı mı?
.NET platformu için uygulama geliştirmek istiyorsanız, işletim sisteminize .NET çalıştırma ortamını kurmanız gerekiyor. Bu ortamı, Java uygulamalarını çalıştırmak için gerekli olan Java Run-time Environment (JRE) gibi düşünebilirsiniz.
.NET platformu iki ayrı kurulum dosyası halinde, ücretsiz sunuluyor:
- .NET'in çekirdek kurulumu (21 MB) : Bu kurulum ile, bilgisayarınızda bir metin editörü açıp kodunuzu yazıp, gelen derleyiciler ile derleyip uygulamanızı sınayabilirsiniz. Ancak bu kurulum, geliştiriciler için değil, daha çok dağıtım sonrası uygulamanızın çalışacağı sistemler için uygundur. .NET uygulamaları için gerekli çalışma zamanı ortamını, web uygulamalarının sunulabilmesi için gerekli olan Web sunucu (IIS) eklentilerini ve desteklenen temel dillerin derleyicilelerini sunmaktadır. Bir yazılım geliştiricinin bunlardan daha fazlasına ihtiyacı vardır. Hele de uygulama geliştireceği ortamda herhangi bir deneyimi yoksa. Bu nedenle ikinci bir seçenek sunuluyor.
- .NET Framework SDK (134 MB) : SDK yani Software Development Kit, çekirdek kurulumu içereden daha kapsamlı bir kurulumdur. Peki 134 mb lik kurulumda fazladan neler var : Faydalı araçlar, hata ayıklayıcılar, SQL Server'in hafif versiyonu MSDE, hızlıca başlamanızı temin edecek QuickStart Tutorials, örnek uygulamalar ve devâsa dokümantasyon. Organizasyonu ve disiplini göz kamaştıran bir dokümantasyon olduğunu kullanmaya başladıkça çok iyi anlayacaksınız.
Bu iki kurulumu da ücretsiz olarak Microsoft'un sitesinden indirebilirsiniz :
http://msdn.microsoft.com/net/ Hangi işletim sistemlerinde çalışıyor?
Şu anda .NET Framework istemci uygulamaları Windows 98/Me/NT4/2000/XP/Server 2003 işletim sistemlerinde çalışabiliyor.
Ancak sunucu davranışı için Windows 2000 (SP2 ve üstü), Windows XP veya Windows Server 2003 gerekiyor. Windows Server 2003'te .net framework kurulmuş oluyor zaten, ayrıca yüklemenize gerek yok. Bu işletim sistemleri dışında ASP.NET sayfalarını (yani .NET'in tarayıcıları ve mobil cihazları hedef alan web uygulamaları) sunamıyorsunuz. Elbette ki bu sunum, Internet Information Server (IIS) da gerektiriyor.
Teoride .NET Framework her hangi bir işletim sistemine taşınabilir. Ancak taşınacağı işletim sistemine özgü çalışma zamanı ortamının ve sınıf kütüphanesinin yazılması lazım. Şu anda Linux için bu tip bir çalışma sürüyor.
Teoriden kastınız?
Yazacağınız herhangi bir .NET uygulaması ortak bir run-time ortamda çalışacak ve ortak bir kütüphaneyi kullanacaktır. Run-time ortamının teknik adı Common Language Runtime (CLR) dir. CLR, kodunuzun başında duran bir şef gibidir. Yetenekleri ve görevleri çok fazladır ve platformun en önemli bölümüdür. Mesela kodunuzda kaygısızca oluşturduğunuz ve "heap" alanına yığdığınız nesnelerin kullanılmadığı andan itibaren otomatik olarak toplanması CLR'ın görevidir.
.NET uygulamalarının kaynak kodları çalışır hale gelebilmek ve CLR'nin muhatabı olabilmek için iki derleme aşamasından geçmektedir. Desteklenen herhangi bir dille (VB.NET, C#, ..) yazdığınız kaynak kodu, .NET'in çekirdek kurulumu ile gelen, komut satırı derleyicileri kullanarak derlediğinizde ilk aşama gerçekleşmektedir. Derleme sonucunda bir .exe veya bir .dll dosyası oluşsa bile, bu dosyaların yürütülebilmesi için ikinci bir derleme evresine girmeleri gerekir. İlk derlemede kaynak kodunuz, özel adı MSIL (Microsoft Intermediate Language) olan, Assembly (sembolik makine) diline yakın bir dile dönüştürülmektedir. Oluşan .exe ve .dll dosyalar yürütülebilir kodlar yerine ara dil içermektedir. Bu dosyaları çalıştırmak istendiğinde, devreye CLR girecektir. Bu ara dildeki talimatlar, just-in time (JIT) compilation denen ikinci derleme aşamasına girecektir ve doğal makine koduna dönüşecektir. Bu ikinci derleme, uygulamanın çalışacağı yerde olacağından oluşacak doğal kod o ortama özgü olacaktır. Örneğin farklı işlemciler için farklı talimatlar üretilecektir.
Öte yandan uygulamanızı geliştirirken bir çok hazır çağrılara ihtiyacınız olacaktır. .NET, programcının kullanımına hazır bir sınıf kütüphanesi sunmuştur. Bu kütüphane işletim sistemi ile uygulamanız arasında bir köprü görevi yapmaktadır. Siz bir dosyaya yazmak istediğinizde, işletim sisteminin dosya sistemi çağrıları yerine, bu kütüphanedeki hazır sınıfı kullanacaksınız. Yani muhatabınız işletim sisteminden daha üst seviyede duran .NET iskeleti olacaktır. Böylelikle teoride uygulamanızın bağımlı olduğu tek şey .NET Framework'tur ve işletim sisteminden, donanımdan bağımsız hale gelmektedir. Bunun en kısa ifadesi "taşınabilir"liktir.