0

.NET Core ve .NET Standard Karşılaştırması. .NET Framework, Resim-1’de göreceğiniz gibi dikey alt kümelerden oluşan bir Framework. Bu dikey alt kümelerin her biri farklı bir ekip tarafından geliştirildiği için aslında birbirinden bağımsız, farklı uygulama modeline, Framework ve Runtime’a sahipti ve her zaman tek bir ünite olarak Deploy edilecek şekilde tasarlanmıştı.

Bu durum aslında belirli bir dikeyde uygulama geliştiriyorsanız herhangi bir problem oluşturmasa da, farklı dikey alt kümeler için geliştirmek istenildiği zaman, kullanılan API’ların farklı alt kümeler için de desteklenmesi gibi bir sorunla karşılaşabiliyorduk.


Resim-1 .Eski Net Mimarisi

Portable Class Libraries (PCL) ve Shared Projects ne güne duruyor diyebilirsiniz ama yine birden fazla proje, Compiler Directive (#if) gibi uğraşmamız gereken kısımlar vardı. Konumuz PCL ve Shared Projects olmadığı için fazla dağılmadan devam edelim.

Cross-platform (yani platform bağımsız) uygulama geliştirmenin yükselişe geçmesiyle birlikte, .NET mimarisinde de köklü bir değişim ihtiyacı doğdu.

.NET Core, Windows, Linux ve MacOS üzerinde çalışabilen (cross-platform), Microsoft ve GitHub üzerinde Community tarafından desteklenen Open Source bir geliştirme platformu. Peki .NET Core hangi bileşenlerden oluşuyor?

  • Type system, Assembly Loading, Garbage Collector, Native Interop ve diğer basit servisleri içeren bir .NET Runtime,
  • Primitive Data tipleri, App Composition tipleri gibi Framework Library’leri
  • SDK gereçleri and Compiler içeren .NET Core SDK.
  • .NET Core uygulamalarını çalıştırmak için gerekli olan ‘Dotnet’ App Host.

 

.NET Framework’ü bir kenara bırakırsak, temelde .NET Core ile Mono Cross-platform olması açısından benzerlik gösterse de aralarında ciddi farklar var:

  • .NET Core, aslında tek bir uygulama modeli içeriyor: Console uygulamaları. ASP.NET Core ve UWP (Windows 10 Universal Windows Platform) .NET Core’un üzerine fonksiyonalitesini genişletecek şekilde inşa ediliyor. Mono ise bir çok .NET Framework uygulama modeli (Windows.forms vb) ile birlikte Xamarin.iOS gibi Xamarin platformunu da destekliyor.
  • Mono geniş bir .NET Framework API desteğine sahip. (bkz http://docs.go-mono.com/?link=root%3a%2fclasslib )
  • Son zamanlarda Mono mobil platformlar üzerine yoğunlaşırken, .NET Core Cloud Workload üzerine yoğunlaşıyor.

 

Peki .NET Core her işletim sistemini destekliyor mu? .NET Core (v1.0) için kullanabileceğiniz işletim sistemleri ile ilgili olarak da Tablo-1‘i inceleyebilirsiniz.

İşletim SistemiVersiyonİşlemci Mimarisi
Windows Client7 SP1 – 10x64, x86
Windows Server2008 R2 SP1 – 2016x64, x86
Red Hat Enterprise Linux7.2x64
Fedora23x64
Debian8.2x64
Ubuntu14.04 LTS, 16.04 LTSx64
Linux Mint17x64
openSUSE13.2x64
Centos7.1x64
Oracle Linux7.1x64
Mac OS X10.11, 10.12x64


Tablo-1: .NET Core desteklenen işletim sistemleri

.NET Core ile birlikte .Net mimarisi içerisinde Resim-2′de
göreceğiniz bir ayrımdan bahsettik. Fakat burada da her bir dikeyin kendine özgü bir base library’e sahip olması tam olarak ortak bir kullanıma olanağı sağlamıyordu. .NET Framework’ten bildiğimiz Base Class Library, .NET Core tarafında .NET Core Library ve Xamarin için ise Mono Class Library şeklinde bir ayrım söz konusu.


Resim-2: .NET Framework, .Net Core ve Xamarin

Buna çözüm de bütün dikeylerin kullanacağı ortak bir Library: .NET Standard. (bkz.Resim-3) .NET Standard’ı bütün .NET platformlarının Implemente etmesi gereken bir API seti olarak tanımlayabiliriz. Böylece bütün .NET Runtime’ların kullanacağı PCL’ler oluşturma şansına sahibiz. Aslında .NET Standard’ı bir PCL olarak düşünebiliriz, ama aralarındaki en büyük fark PCL’ler Microsoft platformlarını desteklerken .NET Standart ise platform bağımsız.

Resim-3: Günümüzde .NET Mimarisi

.NET Runtime’lar farklı .NET Standard versiyonları destekler. Burada dikkat edilmesi gereken kısımın en yüksek .NET Standart versiyonun destekleyen Runtime’ın daha önceki versiyonları da aslında implemente etmesidir. Örnek olarak; .NET Framework 4.6.2, .NET Standard 1.5’i desteklerken, 1.5 öncesinden yer alan bütün .NET Standard API’larını da içerir. Desteklenen versiyon listesini Tablo-2‘den inceleyebilirsiniz.

Platform
.NET Standard1.01.11.21.31.41.51.62.0
.NET Core1.0vNext
.NET Framework4.54.5.14.64.6.14.6.2vNext4.6.1
Mono/Xamarin PlatformsvNext
Universal Windows Platform10.0vNext
Windows8.08.1
Windows Phone8.1
Windows Phone Silverlight8.0

Tablo-2: .NET Standard desteklenen .NET Runtime

Kısaca özetlemek gerekirse .NET Core, .NET Framework’ün yerini alacak bir platform değil. Eğer Cross-platform uygulama geliştirmiyorsanız .NET Core kullanmanıza gerek yok. Şu anda çoğu 3rd Party API’ın da (henüz) .NET Core desteği bulunmadığını da belirtmekte fayda var.

Bu konuyla ilgili sorularınızı  alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.

Referanslar

www.mshowto.org

https://blogs.msdn.microsoft.com/dotnet/2014/12/04/introducing-net-core/

https://github.com/dotnet/core/blob/master/roadmap.md

https://docs.microsoft.com/en-us/dotnet/articles/standard/components

https://docs.microsoft.com/en-us/dotnet/articles/standard/library

https://weblog.west-wind.com/posts/2016/Jun/13/ASPNET-Core-and-NET-Core-Overview

 

TAGs : .NET Core ve .NET Standard, .NET Core ve .NET Standard karsilastirma, .NET Core ve .NET Standard farklari, .NET Core ve .NET Standard nedir, .NET Core ve .NET Standard kod gelistirme, .NET Core ve .NET Standard, .net library, .net altindaki diller


Bu İçeriğe Tepkin Ne Oldu?
  • 4
    harika_
    Harika!!
  • 2
    be_enmedim
    Beğenmedim
  • 0
    _ok_iyi
    Çok iyi
  • 4
    sevdim_
    Sevdim!
  • 0
    bilemedim_
    Bilemedim!
  • 1
    olmad_
    Olmadı!
  • 0
    k_zd_m_
    Kızdım!

Mert Yeter, lisans eğitimini Yıldız Teknik Üniversitesi'nde, yüksek lisans eğitimini ise Bahçeşehir Üniversitesi'nde tamamlamıştır. Yazılım dünyasına üniversitenin ilk yıllarında aldığı QBasic ile başlayan Mert, .NET ve SQL Server gibi Microsoft teknolojileri ile devam etmiş; yüksek lisans tezini ise Linux konusunda yapmıştır. Netaş ve Ziraat Teknoloji gibi sektörün önde gelen firmalarında C#, .NET, SQL Server, Cisco Contact Center ürünleri ve Linux üzerine çalışmış, bir çok firmaya da bu konularda danışmanlık vermiştir.

Yazarın Profili

Bültenimize Katılın

Tıklayın, üyemiz olun ve yeni güncellemelerden haberdar olan ilk kişi siz olun.

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir