1. Ana Sayfa
  2. ASP.Net
  3. .NET Core ve .NET Standard Nedir?

.NET Core ve .NET Standard Nedir?

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 Sistemi Versiyon İşlemci Mimarisi
Windows Client 7 SP1 – 10 x64, x86
Windows Server 2008 R2 SP1 – 2016 x64, x86
Red Hat Enterprise Linux 7.2 x64
Fedora 23 x64
Debian 8.2 x64
Ubuntu 14.04 LTS, 16.04 LTS x64
Linux Mint 17 x64
openSUSE 13.2 x64
Centos 7.1 x64
Oracle Linux 7.1 x64
Mac OS X 10.11, 10.12 x64


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 Standard 1.0 1.1 1.2 1.3 1.4 1.5 1.6 2.0
.NET Core 1.0 vNext
.NET Framework 4.5 4.5.1 4.6 4.6.1 4.6.2 vNext 4.6.1
Mono/Xamarin Platforms vNext
Universal Windows Platform 10.0 vNext
Windows 8.0 8.1
Windows Phone 8.1
Windows Phone Silverlight 8.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ı https://forum.mshowto.org linkini kullanarak ulaşacağınız forum sayfamızda 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, ,


Yorum Yap

Yazar Hakkında

Mert Yeter, lisans eğitimini Yıldız Teknik Üniversitesi Gemi İnşaatı Mühendisliği bölümünde, yüksek lisans eğitimini ise Bahçeşehir Üniversitesi Bilgi Teknolojileri bölümü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. Şu anda da Done'de Cloud Development Manager olarak Azure, .NET Core, SQL Server, Docker vb güncel teknolojiler üzerinde çalışmaktadır.

Yorum Yap