Microsoft .Net Framework, son birkaç yılda çok olgunlaştı. Optimize etmek ve hızlı, güvenli, daha kararlı ve yüksek performanslı hale getirmek için birçok yeni özellik ve geliştirmeler sunulmuştur. Bu makalede, .Net Framework 4.5.x'teki önemli iyileştirmelerin kuşbakışı bir görünümünü sunmak istiyorum.
Korkunç Bellek Dışı istisnaları
Bu korkunç bir hata ve sizin için bir kabusa dönüşebilir. Yetersiz Bellek istisnaları, yeterli fiziksel belleğiniz takılı olsa bile uygulamanızın kontrol akışını sona erdirebilir. Dalgamı geçiyorsun? Asla! Bunun neden oluşabileceğini ve bu sorunun .Net Framework 4.5'te nasıl ele alındığını açıklayayım.
Yönetilen ortam tarafından oluşturulan nesneler yığın halinde saklanır. Nesnelerin oluşturulması ve kaldırılması nedeniyle belirli bir süre içinde yığın parçalanabilir. Parçalanma, dağınık bellek boşluklarını (boş bellek) ifade eder. Böyle bir durumda, uygulamanız büyük miktarda bellek kullanıyorsa ve çalışma zamanı, kullanılabilir alan olsa bile, gerektiğinde ve gerektiğinde alan tahsis edemeyeceği için, genellikle Bellek Yetersiz istisnalarını gözlemlersiniz.
Kulağa garip geliyor? Eh, bellek boşluklarının toplamı bu istek için yeterli olabilir, ancak bu bellek boşlukları dağınık olduğundan, çalışma zamanı bunları kullanamaz.
Büyük Nesne Yığının talep üzerine sıkıştırılması
Yığını sıkıştırmak ve yığın parçalanmasını ortadan kaldırmak için İsteğe Bağlı Büyük Nesne yığın sıkıştırması yeni sunulmuştur. Sıkıştırma, tüm bu dağınık bellek deliklerinin tek bir bloğa sıkıştırılması anlamına gelir. Bu özellik, Bellek Yetersiz istisna sorunlarını azaltmak için .Net Framework 4.5.1'den (yalnızca isteğe bağlı) kullanılabilir. Bu özelliği etkinleştirmek için, LargeObjectHeapCompactionMode özelliğini ayarlamanız gerekir.
Bu arada, bu özellik iki değerden birine sahip olabilir: Default ve CompactOnce. Birincisi ayarlanmışsa, bir GC döngüsü sırasında büyük nesne yığınının sıkıştırılmasını göz ardı eder. İkincisini kullanırsanız, büyük nesne yığını sonraki döngüde sıkıştırılır.
ADO.Net Bağlantı Dayanıklılığı Desteği
Boşta veya kopmuş bağlantılar kurmak için bağlantı dayanıklılığını uygulamak için artık kod yazmanıza gerek yok. .Net Framework 4.5.1, veri tabanına kopmuş bağlantıları yeniden oluşturmak için bu özellik yerleşik olarak gelir.
İyileştirilmiş başlangıç süresi: Profil optimizasyonu
Profil optimizasyonu, .Net Framework 4.5'te tanıtılan ve uygulama başlatma süresini en aza indiren bir özelliktir. Bu nasıl çalışıyor? Profil, uygulamanın başladığı anda ihtiyaç duyacağı yöntemleri içeren bir dosyadır. Uygulama başladığında, Tam Zamanında Derleyici (JIT), IL kodundan yerel kod oluşturmak için arka planda ve birden çok işlemcide çalışır.
Atık toplama geliştirmeleri: Sunucu GC kullanıma sunuldu
.Net'in yönetilen ortamı, kullanılmayan veya başvurulmayan nesneleri - artık ihtiyaç duyulmayan nesneleri - temizlemek için çöp toplama kullanır. .Net Framework'ün önceki sürümlerinde, GC belleği temizlemekle meşgulken uygulama iş parçacıklarını askıya alıyordu. Bu, uygulamanızın GC'nin çalışmasını bitirmesini beklemesi gerektiğinden, büyük bir performans darboğazıydı.
.Net Framework 4.5 ile bu artık bir sorun değil; sunucu GC, bir arka plan iş parçacığı kullanılarak ikinci nesil nesnelerin temizlenmesini kolaylaştırmak ve bu nedenle, uygulama iş parçacıkları çok daha az sıklıkla askıya alındığı için ana GC iş parçacığı üzerindeki yükü en aza indirmek için yeni tanıtıldı. .Net Framework 4.5 ile, arka planda çöp toplama hem sunucu hem de iş istasyonu GC'de desteklenir. Eşzamanlı çöp toplama da artık desteklenmektedir; adanmış bir iş parçacığı, gerektiğinde çöp toplama işlemini gerçekleştirir.
.Net Framework 4.5.2'de dikkate değer gelişmeler
Microsoft yakın zamanda .Net Framework 4.5.2'yi yayınladı. Sürüm Microsoft tarafından .Net Framework blogunda duyuruldu. İşte bağlantı: //blogs.msdn.com/b/dotnet/archive/2014/05/05/announcing-the-net-framework-4-5-2-release.aspx
Profil oluşturma ve hata ayıklamadaki iyileştirmelerin yanı sıra, .Net Framework 4.5.2'de ASP.Net'te dikkate değer gelişmeler vardır. Artık küçük arka plan görevlerini zaman uyumsuz olarak zamanlamak için HostingEnvironment.QueueBackgroundWorkItem yöntemlerini kullanabilirsiniz. Yanıt başlıklarını ve yanıt kodlarını incelemek ve değiştirmek için HttpResponse.AddOnSendingHeaders ve HttpResponseBase.AddOnSendingHeaders yöntemlerinden yararlanabilirsiniz. Daha fazla okumak için bu MSDN makalesine başvurabilirsiniz: //msdn.microsoft.com/en-us/library/ms171868%28v=vs.110%29.aspx
Sırada ne var?
Microsoft, geçen Kasım ayında .Net Framework 4.6'nın bir önizleme sürümünü yayınladı. NET Framework 4.6'nın bir kopyasını buradan indirebilirsiniz: //www.microsoft.com/en-us/download/details.aspx?id=44928
Yazılım devi, Ocak 2016'dan sonra .Net Framework sürümleri 4.x - 4.5.1 için desteğini iptal edeceğini de duyurdu. Bununla ilgili daha fazla bilgiyi buradan okuyun: //blogs.msdn.com/b/dotnet/archive/2014/08 /07/moving-to-the-net-framework-4-5-2.aspx