.Net Native!

    Evet, evet başlığı yanlış okumadınız; .Net Native yayınlandı.

  .Net geliştirmenin artıları oldukça fazla olsa da unutulmaması gereken önemli de bir performans eksiği var. Her ne kadar günümüz modern bilgisayarlarının işlemci kapasiteleri göz önüne alındığında bu çok da problem yaratmasa da bir de boş tarafı var;

  Her geçen gün mobil cihaz pazarı büyümekte ve Windows 8 ile birlikte Microsoft’ta herkes gibi gözünü bu pazara dikmiş durumda. Windows Store uygulamaları ile birlikte platform bağımsız uygulamaları piyasaya sürerek hakimiyet kazanmak istemekte. Öte yandan düşük sistem kaynaklarına sahip, kısa pil ömürlü bu yeni pazarda .Net’in mevcut haliyle rakabette öne geçemeyeceği aşikardı.

   İşte tam da bu noktada Microsoft oldukça stratejik bir haraket yaparak Native kod üretebilmeniz için .Net Native’i yayınladı. .Net Native ile birlikte .Net bizlere C#’ın üretkenliği ile C++’ın performansında uygulama geliştirme şansı sunmakta.

  Alışa geldiğimiz .Net derlemelerinden farklı bir ön derlemeye sahip olan .Net Native bizlere platforma özel ve doğrudan çalıştırılabilir kod üretmekte. Bu noktada durup önemli bir şeyi belirtmek istiyorum; .Net Native aslında sadece performans arttırımı olarak algılanmamalı, aynı zamanda üretken ve tutarlı bir cihaz deneyimi sunmayı hedeflemekte.

  Konuya Windows Store uygulamaları açısından yaklaşacak olursak, derlediğimiz managed kodları her zamanki gibi mağazaya yüklememize rağmen uygulamamız son kullanıcının cihazına yüklenirken tamamen native şekilde derlenmiş olarak yüklenebilecek. İşin ilginç yanı bu haliyle uygulamamızın hiç bir şekilde .Net framework bağımlılığı kalmayacak. Dolayısıyla geliştiriciler olarak hiç bir ek efor sarfetmeden son kullanıcıda performanslı çalışan uygulamalar sahip olacağız.

  .Net Native’deki en önemli hedef .Net uygulamalarının sorunsuz çalışması. Dolayısıyla alışa geldiğimiz tür güvenliği, garbage collection, C# hata yönetim modeli, generic’ler, reflection v.b. özellikleir sorunsuz şekilde kullanmaya devam edebiliriz.

   Öte yandan akılda tutulması gereken önemli bir nokta da .net framework referanslarımızında uygulamamız içerisine derlenerek eklendiğidir. Bu da uygulamamızın boyutunda bir artışa sebep olacaktır. Bu boyut artışı ise temelde NGEN süreçlerinden geçmiş mevcut uygulamalarımızın boyutundan çok da farklı olmayacaktır.

  .Net Native ile ilgili önemli bir noktanında geliştirme ekibinin birincil odak noktasının Windows Store uygulamaları olduğudur. Diğer taraftan altyapının masaüstü uygulamalarında kullanılmasının önende teknik bir engel bulunmuyor. Önümüzdeki .net framework sürümlerinde native derleme aşamasında bu teknoloji rahatlıkla kullanılabilir.

   Tüm bunlarında yanında ister istemez akıllarak gelen önemli bir soru da .Net framework’ün yeni sürümlerinden uygulamaların nasıl etkileneceği. Teknik olarak .Net Native ile derlenen uygulamanın artık .net framework ile doğrudan bir bağlantısı kalmıyor. Dolayısıyla olası bir güvenlik yamasında örneğin bu uygulamaların durumu akıllarda soru işareti bırakıyor. Tabi şimdilik .Net Native’in sadece Windows Store uygulamaları için kullanılabilir olduğunu düşünecek olursak, böylesi bir senaryoda uygulamaların Microsoft tarafından yeniden derlenerek güncellenmesi yeterli olacaktır.

   Bu kadar paylaştıktan sonra, eminim ki .Net Native’i denemek için sabırsızlanıyorsunuz. Kullanmaya başlamak için öncelikle Visual Studio Update 2’yi (şimdilik RC) kurmanız gerekli. Devamında .Net Native sitesinden Microsoft .Net Native Developer Preview’ı indirmelisiniz.

   Kurulum aşamalarını sabırla aştıktan sonra kullanmaya hemen başlayabilirsiniz. Yeni bir Windows Store uygulaması oluşturarak platformunu desteklenen bir mimariye (şimdilik x64 ya da ARM) çekmelisiniz;Platform seçimi

   Sonrasında yapmanız gereken projeye sağ tıklayarak açılan pencerede “Enable for .Net Native” seçeneği ile projenizin Microsoft .Net Native Developer Preview ile derlenmesini sağlamak.

Microsoft .Net Native'in aktif hale getirilmesi

   Microsoft .Net Native Developer Preview’ı aktif hale getirmenizle birlikte arkaplanda sizin adınıza pek çok düzenleme yapılacak. Tüm bu düzenlemelerden gözünüze çarpacak olan ise kuşkusuz projenize eklenen default.rd.xml dosyası olacaktır;

Projeye Runtime Directives (default.rd.xml) dosyası eklenecektir

   .Net assembly’lerinin en önemli özelliklerinden birisi şüphesiz ki kodun yanında meta veriyi de barındırıyor olmasıdır. Bu sayede .Net çalışma zamanı uygulamanız hakkında çok daha fazla bilgiye sahip olabiliyor. İşte bu sebeple meta verilerin kaybolmaması için Microsoft .Net Native bir Çalışma-Zamanı Yönergeleri (Runtime Directives)  dosyasınını kullanmakta. default.rd.xml sayesinde Microsoft .Net Native derleyicisine uygulamanızda hangi verilerin önemli ve saklanması gerektiğini belirtebilirsiniz.

   Varsayılan olarak eklenen default.rd.xml dosyası uygulamanız ve tüm referanslarına ait meta verilerin saklanması için yapılandırılmış durumdadır. Dışarıya açmak istediğiniz meta verileriniz doğrultusunda bu dosyayı özelleştirmeniz mümkün. Unutmayın; bu dosyada dikkatlice değişiklik yapmalısınız, uygulamanızda kullanılan bir meta verinin belirtilmemiş olması durumunda MissingMetadataException hatası alırsınız.

Fatih Boy

Ankara'da yaşayan Fatih, bir kamu kurumunda danışman olarak çalışmaktadır. ALM süreçleri, kurumsal veri yolu sistemleri, kurumsal altyapı ve yazılım geliştirme konularında destek vermektedir. Boş zamanlarında açık kaynak kodlu projeler geliştirmeyi ve bilgisini yazdığı makalelerle paylaşmayı seven Fatih, aynı zamanda Visual C# ve Visual Studio teknolojileri konusundan Microsoft tarafından altı yıl üst üste MVP (En Değerli Profesyonel) ödülüne layık görülmüştür. İş hayatı boyunca masaüstü uygulamaları, web teknolojileri, akıllı istemciler gibi konularda Asp.Net, Php, C#, Java programlama dilleri ve MySql, MsSql ve Oracle gibi veritabanı yönetim yazılımları ile çalışmıştır. İngilizce ve Türkçe olarak yayınlanan makalelerini gerek İngilizce bloğunda, gerekse de Türkçe bloğunda bulabileceğiniz gibi web sitesinden de açık kaynak kodlu geliştirdiği yazılımlarına ulaşabilirsiniz. vCard - Twitter - Facebook - Google+

1 Yorum

  1. Ercan   •  

    Sanırım gecikmiş bir adım, kullanılması ve yaygınlaşması için yeterli olur mu bilemiycem.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir