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.
Şimdilik 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.
.NET Core ASP.NET ASP.NET Core
“ASP.NET Core 1.0 ve ASP.NET’in Geleceği” hakkında 11 yorum	
Gencebay dedi ki:	
24 Şubat 2016, 09:21	
Merhaba;
ASP.NET Core ile MVC 6 uygulaması geliştirmenin sadece AR-GE ile kısıtlandırılmasının nedenini anlayamadım! Tüm kaynak kodlarının Github da olduğu bir framework ü source gösterip tüm süreci gözlemleyebilir, hataları yakalayabilir ve bir talep (pull-request, issue) ile düzeltilmesini sağlayabilirsiniz! Go-Live lisansı ile production için de tercih edildiği özellikle vurgulanmaktadır!
Birde güzel yazınıza şu linkteki bilgileri de ilave edebiliriz
http://gencebaydemir.com/asp-net-5-ozellikleri-ve-mvc-6/
Cevapla
ugur dedi ki:	
24 Şubat 2016, 16:02	
Log4Net, AutoMapper vb. bir proje için Github’da bulunup henüz release olmaması kullanmamak için çok büyük bir engel teşkil etmeyebilir. En kötü ihtimalle loglarınızı sağlıklı atamazsınız veya mapping’lerde başınız ağrır, gider AutoMapper yerine sorunu giderecek başka bir bileşen bulursunuz. Ancak burada bir framework’ten, uygulamanın çalışacağı runtime’dan, JIT derleyicisinden… bahsediyoruz. Yarın bu bahsi geçen bileşenlerden birinde önemli bir bug, güvenlik açığı vs. sorun çıktığında başınız ağrıyabilir. Microsoft gibi firmaların dahi bu tip sorunlara fix geçmesi bazen günler haftalar alabiliyorken, nasılsa Github’da kodlar var bir şekilde hallederiz demek biraz maceraperest olmak gibi geliyor bana.
Dediğimi yineliyorum; hobi amaçlı veya kişisel projelerde kullanılabilir, ama ben olsam kurumsal bir projede veya çok fazla kullanıcısı olan bir sitede ASP.NET Core’u kararlı bir sürümü çıkana kadar kullanmam. Hatta bir adım öteye gideyim, kurumsal projelerde Entity Framework, Log4Net vb. açık kaynaklı projelerin dahi release olmamış versiyonlarının kullanılmasını tavsiye etmem.
Cevapla
Serkan dedi ki:	
24 Şubat 2016, 14:18	
Hocam bari sen bu kadar basit bir yazı yazma. Yazı içerisinde ne bir inceleme ne bir görüş ne bir örnek var. Basın bülteni gibi bir şey olmuş.
Cevapla
Mehmet dedi ki:	
2 Ağustos 2016, 15:25	
Gayet açıklayıcı güzel bir yazı olmuş. Elinize sağlık demek daha doğru mu olur sanki
Cevapla
Muammer dedi ki:	
26 Şubat 2016, 09:38	
Gayet açıklayıcı bir yazı olmuş. İşin ABC sini gayet net açıklamışsınız hocam. Teknik detayları ve araştırmaları bu bilgiler ışığında yapmak anlamlı olacaktır.
Cevapla
Agit YILDIZ dedi ki:	
5 Mart 2016, 12:09	
Hocam ben oldukça faydalı buldum. Emeğinize teşekkür ederim. Yazıyı basit bulanlardan çok daha ciddi bir yazı yazmalarını en kısa sürede bekliyoruz :))
Cevapla
ünal dedi ki:	
16 Mart 2016, 11:24	
Bilgilendirmeler için teşekkür ederiz. Faydalı bir yazı olmuş.
Cevapla
Sinan BOZKUŞ dedi ki:	
21 Mart 2016, 15:01	
Güzel bir yazı olmuş, teşekkürler.
Cevapla
İsmail dedi ki:	
25 Nisan 2016, 13:51	
1.0 versiyon bir ürün için “giriş seviyesi bir yazı” olarak nitelendirmek tamamen karalama çabası diye düşünüyorum. Elbette oldukça basit ve yüzeysel olacak. kaldı ki yazının içinde de geçiyor şuan Asp.net in yanında oldukça basit ve yeni..
Yıkıcı değil yapıcı olabilmek dileğiyle başarılı makalelerinizin devamı dileklerimle..
Cevapla
Hasan dedi ki:	
9 Mayıs 2016, 09:00	
Güzel ve Faydalı bir yazı olmuş Teşekkürler.
Cevapla
ismail dedi ki:	
25 Mayıs 2016, 10:11	
Kafa karışıklığını giderecek bir yazı olmuş, devamını bekler teşekkür ederim.
Cevapla
Bir Cevap Yazın Cevabı iptal et
E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir
Yorum
İsim *
E-posta *
İnternet sitesi
Yazı dolaşımı
9. Yazılım Teknolojileri Semineri
ASP.NET Core – Genel Yapı Hakkında Bazı Notlar: Application Pipeline, Middleware, Services, Host Yapısı