ASP.NET Core 1.0 ve ASP.NET’in Geleceği
Microsoft’un açık kaynak vizyonuyla ilgili geçmişte Devnot’ta birkaç yazı yayınlamıştık. 2014 yılı itibariyle Microsoft’un uygulama geliştirme platformu olan .NET Framework’ün önemli bir dönüşümüne şahit oluyoruz. Açık kaynak olmayan ve resmi sürüm olarak sadece Windows işletim sistemlerinde çalışan .NET Framework’ün çekirdek sürümü .NET Core‘un hem açık kaynak olacağı hem de platformdan bağımsız şekilde çalışacağı duyurulmuştu. Geçmişte Mono isimli bir proje ile resmi olmasa da .NET Framework’ün Linux sistemlerde çalışması sağlanmıştı.
Microsoft’un bu hamlesiyle artık resmi olarak açık kaynak kodlu ve platformdan bağımsız çekirdek versiyon bir .NET Framework dağıtımı hayatımızda olacak. Yani .NET Core ile Linux ve MacOS işletim sistemlerinde uygulama geliştirebilecek ve uygulamalarınızı çalıştırabileceksiniz.
ASP.NET Core yakın zamana kadar ASP.NET 5 ismiyle anılıyordu. Geçtiğimiz haftalarda yayınlanan resmi bir yazı ile artık ASP.NET 5 yerine ASP.NET Core olarak isimlendirileceği belirtildi.
Geçen zaman içinde .NET Core gelişimini tamamlama noktasına geldi. Bilhassa bu platform üzerine inşa edilen ve web uygulamaları geliştirmek için kullanılacak ASP.NET Core için önemli çalışmalar yapıldığını söyleyebiliriz. Öyleki Microsoft, Linux ve MacOS kullanıcılarının bu ortama ısınmaları ve kolayca adapte olmaları için Visual Studio Code isimli kod editörünü geçtiğimiz aylarda duyurmuştu. Microsoft’un açıkladığı yol haritasına göre .NET Core ve ASP.NET Core’un 2016 yılı içerisinde RTM ve resmi sürümler olarak yayınlanması bekleniyor. (Kaynak-1, Kaynak-2)
Tabii ki bu yenilikler ve gelişmeler biz yazılımcıların aklına ASP.NET Core nasıl bir yapı sunuyor, neler getiriyor, neleri götürüyor, ASP.NET Core klasik ASP.NET’in devamı mı yoksa farklı bir sürümü mü… gibi birçok soruyu da getiriyor. Kısaca değinelim…
Yazının geri kalan kısmında .NET Framework üzerinde çalışan ASP.NET’i “klasik ASP.NET” olarak adlandıracağım. Microsoft literatüründe böyle bir tanım var mı bilmiyorum, yanlış bir atıf olur mu, sanmıyorum ama karşılaştırmalar net anlaşılsın diye bu ifadeyi kullanacağım.
ASP.NET Core ve .NET Core Yazılım Geliştiricilere Nasıl Bir Yapı Sunuyor?
.NET Core’un temel amacı ASP.NET Core ile web uygulamaları geliştirilmesini sağlamak(en azından şimdilik). Zira .NET Core ile sadece web uygulamaları ve konsol(console) uygulamaları geliştirebilecek. Yani Windows Forms, Windows Service, WPF vb. uygulamaları bu ortamda şimdilik geliştiremiyoruz.
.NET Core için .NET Framework’ün basitleştirilmiş çekirdek versiyonu. .NET Core, CoreFX adındaki sınıf kütüphanesinden oluşmakta ve CoreCLR adındaki runtime üzerinde çalışmaktadır. Managed bir ortama sahip olduğunu, JIT derleyicisinin ve Garbage Collector(GC)’un aynen muhafaza edildiğini söylemekte fayda var. CoreFX System.IO, System.Collections gibi birçok System.* ve Microsoft.* bileşenlerini içermektedir. Detaylar için CoreFX Github repo‘sunu inceleyebilirsiniz.
Çekirdek bir .NET Framework versiyonu olduğu için daha önceden .NET Framework 4, 4.5 gibi sürümlerde uygulama geliştirenler kullandıkları bazı kütüphaneleri .NET Core’da bulamayabilir. .NET Core’un NuGet üzerinden dağıtımının yapılacağını da vurgulamakta fayda var, zira bazı System.* kütüphanelerini de yine NuGet’ten indirerek projelerinizde kullanabiliyorsunuz.
ASP.NET Core proje yapısının klasik ASP.NET projelerinden önemli farklılıkları var. web.config yerine JSON uzantılı farklı bir ayar dosyasının bulunması, Global.asax dosyasının olmaması, onun yerine benzer yapıda bir Startup dosyasının bulunması, uygulamanın başlangıçta en yalın halde çalışması ve sizin kullanılacak bileşenleri(statik dosya, directory browsing, debug modda çalışma… gibi) tek tek kayıt ederek kullanabilmeniz göze çarpan ilk farklılıklar.
Son olarak .NET Core’da desteklenmeyenleri belirtelim. Şimdilik sadece C# dili ile geliştirme yapabiliyoruz, yani VB.NET vb. .NET dillerini kullanamıyoruz. ASP.NET Core ile MVC ve Web API uygulaması geliştirebiliyoruz, WebForms şu an için desteklenmiyor.
ASP.NET Core, ASP.NET 4.5’in Devamı mı?
Hayır değil. ASP.NET Core, .NET Core üzerinde çalışıyor. .NET Core ise .NET Framework’teki temel kütüphanelerden oluşturulan ve farklı platformlar için daha sade hale getirilmiş bir .NET dağıtımı. Dolayısıyla ASP.NET Core ile klasik ASP.NET’in benzer kütüphaneleri kullanmasına rağmen farklı çatılar olduğunu söylemeliyiz. ASP.NET Core, klasik ASP.NET uygulamalarının devamı niteliğinde değil, klasik ASP.NET .NET Framework üzerinde ilerlemeye devam edecek.
Klasik ASP.NET Ne Olacak?
Microsoft’un ana geliştirme ortamı hâlâ .NET Framework, dolayısıyla ASP.NET’in gelişimine kaldığı yerden devam etmesini bekliyoruz. Klasik ASP.NET bitecek, devam etmeyecek, daha ilerlemez… gibi söylemler şu an gerçeklikten baya uzak. Scott Hanselman’ın “ASP.NET 5 is dead – Introducing ASP.NET Core 1.0 and .NET Core 1.0″ başlıklı yazısı klasik ASP.NET’in sonu geldi diye yorumlayanlar olabiliyor, o yazıda söylenen ASP.NET 5 aslında ASP.NET Core’un önceki adı. Özetle klasik ASP.NET durduğu yerde durmakta, ASP.NET Core kadar ivmeli olmasa da gelişimine devam edecek.
Hangisini Seçmeli: Klasik ASP.NET vs. ASP.NET Core
Şu an aktif olarak ASP.NET 4.6 versiyonu kullanılan klasik ASP.NET, .NET Framework üzerinde çalıştığı için daha donanımlı, stabil ve kullanışlı. Dolayısıyla teknik donanımı ve yapılabilir şeyleri düşündüğümüz zaman klasik ASP.NET açık ara önde. Güçlü ve oturmuş yapısının yanında ASP.NET Core karşısında en önemli eksileri ise sadece Windows platformlarda çalışması ve performansı. Performans konusunu alt paragrafta detaylandıracağım.
ASP.NET Core’un şu aşamada klasik ASP.NET’ten daha donanımlı veya kullanışlı olmak gibi bir iddiası yok. Microsoft’un yakın vadedeki amaçlarından biri Core versiyonunu daha genişletmek ve klasik ASP.NET kıvamına getirebilmek. ASP.NET Core’un en önemli avantajı platformdan bağımsız olması ve artık Linux sunucularda dahi çalıştırılacak olması. .NET Core ile .NET Framework’ü sadeleştiren ve yeniden ele alan Microsoft takımının en çok odaklandığı noktalardan biri performans. Şu linkten yapılan test sonuçlarının detaylarını görebilirsiniz. Bilhassa Kestrel web sunucusu üzerinde çok dikkat çekici sonuçlar var. Hatta birkaç gün önce saniyede 1.15 milyon request’in üzerine çıktıklarını şu blog postuyla duyurup kutlamıştılar. Özetle ASP.NET Core’un gerek Linux gerekse Windows platformlarda klasik ASP.NET’e göre ciddi bir performans artışı olduğunu söylemeliyiz.
Şu aşamada ASP.NET Core sadece ar-ge amaçlı seçilmeli, zira henüz kararlı bir sürümü hatta RTM sürümü dahi olmayan bir yapı üzerine uygulama geliştirmek biraz riskli. Release olduğunda ise artık gönül rahatlığıyla kullanılabilir, hatta geliştireceğiniz uygulama MVC veya Web API tarzında bir uygulama olacaksa ilk tercihiniz olmalı. Klasik ASP.NET’e göre sağlayacağı performans farkının yanında uygulamalarınızı Linux bir sunucu üzerinde host ederek sunucu maliyetlerinizi düşürebilirsiniz. Sunucularınız Windows ise ve Windows plarformlarında çalışıyorsanız klasik ASP.NET sizin için daha iyi bir tercih olacaktır, ama göz ucuyla ASP.NET Core’u incelemeye ve gelişmeleri takip etmeye şimdiden başlayın.
ASP.NET 5 Neden ASP.NET Core Oldu?
Aslında bir üstte bahsettiğimiz konu bu sorunun kısmen açıklaması niteliğinde. Mevcut ASP.NET versiyonları, .NET Framework versiyonları ile birlikte anılıyordu, ASP.NET 4, ASP.NET 4.5, ASP.NET 4.6… gibi. .NET Core üzerinde çalışacak ASP.NET versiyonuna ise ASP.NET 5 denilmesi kafa karışıklığına yol açıyordu, 5 versiyonlaması doğal olarak 4.5’in devamı algısı oluşturuyordu. Hatta “5 > 4.5, demek ki ASP.NET 5 önceki sürümlerin daha da gelişmişi…” durumunu akla getiriyordu.
Halbuki .NET Core, .NET Framework’ün devamı değil, sadeleştirilmiş bir yan ürünü. Bu noktada kafa karışıklığını gidermek adına isimlendirme değişikliğine gidildi ve bir ay kadar öncesinde bütün kaynaklarda ASP.NET 5 olarak geçen sürüm adı ASP.NET Core olarak değiştirildi.
Mevcutta bir çok ASP.NET 5 blog yazısı bulunduğu için kısa vadede kafalar yine karışmaya devam edecek, ama orta ve uzun vadede kafa karışıklıklarını ortadan kaldıracak bir isim değişikliği oldu bu.
Biz yazılımcılar yazdığımız metotlara isim bulmakta zorlanırken anlaşılan o ki Microsoft’taki ürün yöneticileri ve mimarlar da ürünlerini isimlendirmekte oldukça zorlanıyorlar.
11 Comments
Halil İbrahim Kalkan
22 Şubat 2016 at 23:41Güzel bir yazı, teşekkürler.
Murat
23 Şubat 2016 at 11:48Elinize sağlık, oldukça detaylı bir yazı olmuş.
Ömer Şanlıer
24 Şubat 2016 at 08:38Hocam son zamanlarda Asp.net tarafında yaşananların güzel bir özeti olmuş.Teşekkürler.
Adem
24 Şubat 2016 at 10:45Gayet açıklayıcı, güzel bir paylaşım olmuş, teşekkürler.
Berat Çarşı
26 Şubat 2016 at 01:14Elinize sağlık güzel özetlemişsiniz.
Birde xamarin ekibiyle birlikte Microsoft’un mobil tarafındaki geleceğini yazabilirseniz şahane olur.
Mesut
4 Mayıs 2016 at 14:21Elinize sağlık Uğur hocam anlaşılır güzel bir makale olmuş.
SoftWarEngineer
30 Temmuz 2016 at 19:40Çok güzel bir özet olmuş hocam.
Visual Studio 2015 MVC öğrenmek için araştırdığımda .net Core karşıma çıktı ve şu anda bize hitap etmediğini anlamış oldum. Teşekkürler.
Murat
30 Ekim 2016 at 12:50Nodejs den çalmışta çalmış. Ancak kendi hantal yapısını süslemekten başka birşey değil microsoftun .net üzerindeki asp.net core versiyonu.
linux ve mac üzerinde mono çalışıyor, değişen bişi yok yani.
Ama yapının çoğu nodejs den çalınmış.
A.Burak
9 Şubat 2017 at 13:25Teşekkürler.
Mustafa Akgün
13 Temmuz 2017 at 14:43Elinize emeğinize sağlık. – .Net Core ile ilgili kafalarda soru işaretleri oluşturan temel noktalara değinmişsiniz.
muhammed
10 Ağustos 2017 at 15:43hocam çok kısa bir şey sey sormak istiyorum . eskiden bildiğimiz asp web form vardı o uygulamalar artık asp core olarak değiştimi yani artık asp web forms dıye bi olay kalmadı doğrumu