.NET'in Windows Platformuna Getirdikleri

Eyl 06, 2013

Microsoft .NET, Windows işletim sisteminde Kernel'le bütünleşik yüzlerce sınıfın yardımıyla nesne tabanlı bir programlama imkanı sağlamaktadır. Örneğin: .NET’in bir bölümü olan GDI+ bir pencereden alınabilecek grafik çıkışlarını sağlayacak bütün nesneleri taşımaktadır.  Güvenlik, doğrudan .NET'le tümleştirilmiş olup kullanıcının işletim sisteminin nasıl bir güvenlik modeline sahip olduğunu bilmesine gerek yoktur. .NET güvenliği, Windows güvenliğinin temellerine dayanmakta olup, kullanıcıların kayıt defteri ve dosya sistemine girişini kendisi düzenler. Bu güvenlik modeli kullanılan işletim sisteminden bağımsızdır ve değişik Windows sürümlerinde çalışmaktadır.

Ayrıca, .NET bileşenleri ve uygulamaları kalıtımsal olarak COM bileşenlerinden ve eski Windows uygulamalarından güvenlidir. Mesela, .NET bileşinleri otomatik olarak kodun değişip değişmediğini kontrol eder. Aynı zamanda uygulamalar bir dijital imza ile imzalanabilir ve “Authenticode” teknolojisi kullanılarak kullanıcıların, uygulamanın yazarını öğrenmeleri sağlanabilmektedir.

.NET <-> COM

İlk bakışta .NET, COM’un yeni bir sürümü gibi görünebilir; fakat .NET bir çok yönden COM’dan daha farklı ve gelişmiştir.

İlk olarak, .NET uygulamaları “assembly” içerir. Her “assembly”  genellikle bir EXE dosyası ya da bir çalışabilir DLL dosyasıdır. Aynı zamanda ek DLL’ler veya .html, .gif gibi diğer çalışamayan dosyaları içerebilir.

.NET uygulama ile ilgili bilgileri kayıt defterinde tutmamaktadır (Buna rağman .NET Framework ile bilgiler hala kayıt defterinde tutulur). Bunun yerine uygulama ve bileşenler ile ilgili bütün bilgiler uygulamanın ana klasöründe yapılandırma dosyalarında tutulur. Bir yapılandırma dosyası, verileri hiyerarşik olarak tutmak için XML kullanır ve bu yapı eski .ini dosyalarından çok daha esnektir. Örneğin: Bu yapılandırma dosyalarında veritabanına bağlanmak için gereken bağlantı yolu olabilir ve bu bağlantı yolu veritabanı ve veritabanının şifresi değiştiğinde kolaylıkla bir yazı editörü ile değiştirilebilir.

.NET aynı zamanda bileşenlerdeki sürüm problemlerini de çözmüştür. .NET bileşenlerinin özel ve paylaşılmış olmak üzere iki çeşidi vardır. Özel bileşenler uygulamanın ana klasöründe (veya onun alt klasörlerinden birinde) saklanır ve diğer uygulamalar tarafından görünmez. Böylece her uygulamanın kendi özel bileşenleri olmuş olur ve farklı uygulamalar bu bileşenlerin farklı sürümlerini kullanabilir; çünkü bunlar değişik dosyalardadır. Bunun tersine, paylaşılmış bileşenler ise bütün .NET uygulamaları tarafından görünebilir ve “global assembly cache”  ismiyle C:\WINNT\ASSEMBLY klasöründe saklanmaktadır. Her bileşen değişik bir dosyada saklanır ve aynı bileşenin değişik sürümleri paylaşılmış olarak bulunabilir. Her uygulamanın bileşeni X.Y şeklinde belirlenir ve bu bileşenin yeni bir sürümü yüklense bile herhangi bir çakışma meydana gelmez. Bu DLL çakışma problemlerini önleyecek bir tedbir olarak gözükmektedir.

.NET Framework’ün kendi sürümünü bile diğer sürümü kaldırmadan yükleyebiliriz. Böylece diğer sürümlerde yapılmış uygulamalarda sorun olmadan çalışmaya devam eder.
.NET sürümlenmesi COM’a göre çok esnektir. Geliştirici veya sistem yöneticisi, bir yapılandırma dosyası yardımı ile bir bileşen ile gelen istekleri onun bir üst sürümü ve daha iyi olan bir bileşen ile karşılıyabilirler. 

COM’dan farklı olarak ayrıca nesneler kendi yaşam sürelerinden sorumlu değildir. COM’da nesneler bağlı olduğu referansları sayar ve bu sayı sıfır olduğunda kendilerini yok etmekteydi. Artık .NET’de buna gerek kalmamıştır. Bunun yerine “garbage collector” nesnelerin bağlı olduğu referansları kontrol etmektedir.

.NET Framework Sınıf Hiyerarşisi

COM’dan farklı olarak .NET Framework miras alma yöntemine dayanır.  .NET Framework’de bütün nesnelerin bir tek kökü vardır, o da System.Object sınıfıdır. Bu sınıf hiyerarşisi kullanıcı arayüzünde, veri erişiminde, İnternet programcılığında, XML uygulamalarında, güvenlikte, makine haberleşmeleri gibi bir çok alanda bize etkili bir programlama esnekliği sağlamaktadır. Çoğu zaman .NET’de program yapmanın anlamı bu sınıfları geliştirmek olmaktadır.

Yaz: Ümit Ülkem Yıldırım