Bir önceki yazımda .NET Core ve .NET Framework’ün arasındaki farkı ve .NET Core’un ortaya çıkışındaki amaçtan bahsetmeye çalışmıştım. Bu sefer biraz daha ayrıntılara girip, .NET Core ve hatta ASP.NET 5 ile haşır neşir olmaya başlayanların büyük bir ihtimal karşılaştığı dnvm, dnu ve dnx kavramlarından bahsetmeye çalışacağım.

net2015Yeni nesil .NET uygulamalarının çalışmaları için gerekli olan bu araçların hala gelişmekte olduğunu özellikle belirtmek isterim. Önceki isimleri ile; KLR,KVM,KRE olarak ilk başta çıktığında, tam oturmamış ve problemleri olan bu araçlar, artık biraz daha stabil ve yeni nesil .NET uygulamalarının temelini oluşturuyor. Açıkcası tamamen olgunlaştıklarında, bazı kavramların tamamen soyutlanacağını ve kolaylaşacağını düşünüyorum.

DNX

DNX, yeni nesil .NET uygulamalarının çalışmasını sağlayan “runtime” bileşeni diyebiliriz. Common Language Runtime’ı yükleyen ve onun çalışmasını sağlayan temel bileşen. Kendi içinde çalışma şekli olarak iki farklı yöntemi var. Bir tanesi .NET Core için, CoreCLR’ın çalışması için, diğeri de normal .NET Framework’ün yani .NET CLR’ın çalışması için. DNX bu iki ayrımı kendi içinte yönetip, bizden bu ayrımı soyutluyor. Kısacası yeni nesil .NET uygulamalarının kalbi.

dnx

DNVM

Yeni nesil .NET uygulamaları önceden duyurulduğu gibi artık daha yalın ve bağımsız. System.IO ve System.Console bileşenleri artık kendi versiyonları ile ayrı ayrı uygulamalarınızda çalışabiliyor. Yani System.IO’nun 1.0.0 versiyonu ile System.Console’un 2.0.0 versiyonunu, kendi uygulamamız içinde, bu ayrımı yaparak kullanabileceğiz. Bu durum, DNX içindeki bileşenlerin versiyonlarının yönetilmesi gerekliliğini ortaya çıkarıyor. .NET Version Manager(dnvm) da bu yönetimi sağlayan temel araç.

dnvmİstediğimiz DNX’i DNVM ile yükleyip, gerektiğini güncellemek bu araç ile yapabileceğimiz bir şey.

DNU

Yeni nesil .NET uygulamaları, hem geliştirme yöntemleri hem de proje şablonları açısından oldukça yalınlaşıyor. project.json isimli proje tanım dosyaları ile uygulamanızın runtime(DNX)’da nasıl çalışacağını json formatında belirtebiliyorsunuz. DNU bu aşamada bu proje dosyalarının DNX tarafından yorumlanmasını sağlıyor. Proje dosyanızda belirtilen, referansların getirilmesi, projenizin “build” edilmesini hatta projenizin nuget paketine dönüştürülmesini bu araç sağlıyor.

Bütün bu araçlar, open-source olarak GitHub’da mevcut tabii ki. Gelişme süreçlerini oradan çok yakın bir şekilde takip edip, gelişme süreçlerine dahil de olabilirsiniz.