İçeriğe geç

.NET Core Nedir? Neden ve Ne Zaman Kullanılmalı?

Microsoft’un yeni nesil cross-platform uygulama geliştirme platformu olan .NET Core üzerinden gelin beraber geçelim. Adını sıkça duyduğumuz .NET Core nedir, .NET framework ile farklılıkları nelerdir, nerede ve ne zaman .NET Core kullanmalıyız gibi konulara da bir bakış atalım.

.NET Core Nedir?

.NET Core, .NET Framework’ün açık kaynak kodlu, platform bağımsız bir yapıya dönüştürülmüş halidir. Açık kaynak kodlu olması sebebiyle GitHub üzerinde oldukça geniş bir topluluk da geliştirilmesine katkı sağlamaktadır.

Özellikle platform bağımsız olma özelliği yazılım dünyasında en çok yankı uyandıran yönü olsa gerek. Artık uygulamaların sadece Windows işletim sistemi üzerinde geliştirilmediği, Linux hatta MacOS işletim sistemlerinde dahi üretilebildiği dönemdeyiz. Bu özellik sayesinde .NET Core ile yazdığımız uygulamaları Windows sunucular dışında, Linux sunucularına da yayına açabiliyoruz.

.NET Framework ve .NET Core arasındaki fark nedir?

.NET Framework geleneksel bir .NET platformudur. Bu platform ile konsol, masaüstü web ve mobil uygulamalar geliştirilebilir. Bu uygulamalar sadece Windows işletim sistemi üzerinde çalışır. Doğrudan .NET Framework kullanarak bir uygulama geliştirdiğimizde Framework Class Library adı verilen, içinde tüm bileşenleri barındıran ağır bir kütüphaneyi de kullanmamız zorunludur.

.NET core ise yeni jenerasyon olan, .NET Standart’ı kullanan bir uygulama platformudur. Geleneksel versiyonun dışında bir çok avantaj sağlar.

Bu avantajlardan biri hafif ve modüler olmasıdır. Bu yapıyla sadece ihtiyaç olan modüller kullanılır, gerekmeyen modüller yüklenmez böylece tüm .NET altyapısının tabiri caizse sırtına yüklenmesine gerek kalmaz.

Platform bağımsız olması sebebiyle tüm işletim sistemlerinde çalışır. Windows, Linux ve hatta MacOS’da bile!

Kullandığı yapı ve esneklik sayesinde yüksek performans sağlar. Günümüzde cloud ortamlarında uygulamaların barındırıldığını düşündüğümüzde gereksiz harcamaları azaltır ve tasarruf sağlar.

Hangi durumlarda .NET Core kullanmak mantıklıdır?

Şimdi gelin bir kaç farklı senaryoyla .NET Core kullanmanın mantıklı olacağı alanlara bakalım.

  • Çoklu platform bir uygulama yapmamız gerekiyor ve bir kaç farklı işletim sistemi üzerinde çalışacaksa.
  • Mikroservis mimarisinde uygulamalar geliştireceksek.
  • Docker containerlar üzerinde uygulama koşturulacaksa.
  • C# ile makine öğrenmesi uygulamaları geliştirmek istediğinizde.
  • Ölçeklenebilir, yüksek performans gerektiren ihtiyaçlarda.
  • Windows, Mac veya Linux’ta çalışan konsol uygulamaları geliştirmek istendiğinde.
  • Aynı projede çeşitli .NET versiyonlarını kullanmamız gerektiğinde.
  • Universal Windows 10 uygulamaları geliştirmek istendiğinde.

.NET Standart Nedir?

.NET Core’un .NET Standardı kullandığını söylemiştik.

Önceki .NET mimarisinde Windows Desktop, Xamarin, ASP.NET vb. gibi platformlarda uygulama geliştirirken kullanılan Framework API’larının farklı .NET platformlarında desteklenmediği oluyordu.

Microsoft, cross-platform anlayışıyla .NET Core’u çıkardığında ise yine aynı şekilde API destek sorunu oldu. Bunun neticesinde yeni bir standart getirerek adına .NET Standart dedi. Aşağıda .NET Standart öncesi ve sonrasındaki mimariyi görebiliriz;

.NET Standart öncesi olan mimari

Aşağıda ise .NET Standart ile her platformun kendine has kullandığı class library’lerin ortaklaştığını görüyoruz.

.NET Standart mimarisi

.NET Standart’ı, diğer .NET platformlarının implemente ettiği bir interface’e benzetebiliriz. Böylece ortak bir kod yapısı oluşacak ve kod paylaşımı çok daha kolay oldu. Github repository’sine buradan ulaşabilirsiniz.

Her .NET Standard sürümü, System.Collections ve System.IO gibi belirli bir API kümesi içerir. Her .NET Standard sürümü, önceki sürümlerin tüm API’lerini ve bazılarının yeni sürümlerini içerir. Bu, .NET Standard’ı geriye dönük olarak uyumlu yapar.

.NET Standard, yüklenen bir şey değildir, kullanabileceğiniz API’lerin resmi bir özelliğidir.

İlk Yorumu Siz Yapın

    Bir cevap yazın

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