.NET Standard Nedir ? Nasıl ve Neden Ortaya Çıktı?

Gökhan ATAN
3 min readApr 25, 2020

--

Merhaba arkadaşlar bu yazımızda .NET Standard’ın ne olduğu, nasıl, neden çıktığını ve .NET platformları arasında ki önemini anlatmaya çalışacağım.

.NET Standard’ın Doğuşu

Öncelikle .NET platformları nelerdir? Bundan bahsetmek istiyorum.

.Net Platforms

Yukarıda ki listede gördüğümüz üzere birbirinden farklı ve güzel bir çok .NET platformu mevcuttur.
Bir çok uygulamayı .NET kullanarak geliştirebiliyoruz.

Peki bu kadar büyük bir yelpazede ki uygulamarın kullandığı ortak kodları nasıl paylaştıracağız?

Öncelikle ortak olması gereken kodlar nedir bir kaç tespit yapalım;

  • Ortak bir Data Access katmanı olabilir. İçerisinde Repository, UnitOfWork gibi patternlerin kendimize göre düzenleyip yazdığımız
    veya ORM (Entity Framework) kullandığımız.
  • Bussines katmanı olabilir. Uygulamanın tüm bussines işlemlerini yazacağımız ortak bir katman.
  • Cross Cutting Concerns ( Logging , Caching ,Security vs.) gibi ihityaçlarımızın ortak bir standart da hazırlayıp kullandığımız.

Bu ihtiyaçları tek bir yerde hazırlayıp kullanmak isteriz. Ama bunları tüm .NET platformlarında kullabilir miyim sorusu akıllara geliyordur.

Evet bunu PCL(Portable Class Library) ve SAP(Shared Asset Project) gibi yöntemlerle yapabiliyorduk.
Bu yöntemler de Compiler Directive(#if) gibi platforma özel kodlar yazıyorduk.
Bu durum karmaşık kod yapısını ve yönetilmesi zor bir hali ortaya çıkarıyordu.

PCL ‘ler de birden çok uygulama arasında paylaşıldığında platform desteği azalmaktaydı.Her PCL profile her platformu destekleyemiyordu.
Bazı platformlarda (Xamarin , UWP gibi) popüler bir nuget projesini bile ekleyemez oluyorduk.

PCL Profile ve desteklediği PCL Platform listesini buradan görebilirsiniz.

Bu problemlerin ışığında Microsoft platformlar arası kod paylaşımına bir standart getirmeye karar verdi ve .NET Standard ‘ı hayatımıza kattı.

.NET Standard Nedir ?

Three Major Flavors of .NET

Yukarıda 3 büyük .NET platformunu görüyoruz. Burada her platform için farklı BCL (Base Class Library) yapmak zorunda kalıyorduk.

Three Major Flavors of .NET with .NET Standard

.NET Standard ile birlikte Unified BCL(Base Class Library) sayesinde ortak kodlarımızı platformlar arasında paylaştırabiliyoruz.
.NET Standard artık tüm platformların implemente etmesi gerektiği bir Interface olarak düşünebiliriz.

Yani içerisinde bir çok API’yi barındıran tüm .NET platformlarını
birleştiren , ileride yeni çıkacak platformlar için de sorun teşkil etmeyecek bir Unified BCL (Base Class Library) olarak düşünebiliriz.

Bugün .NET Standard 2.1 ile 37.118 API kullanılabilir durumda.

Başlıca API’ler ise;

API surface of .NET Standard 2.0

.NET Standard ile her geçen gün artan .NET Framework binary’leri referans alabileceğiz.

Son Olarak ;

.NET Standard için söylenen buradan aldığım bir metaforu paylaşmak istiyorum.

.NET Standard için implemente edilen bir Interface gibi düşünebiliriz demiştim.
.NET Platform’larını da .NET Standard’ı implemente eden concrete classlar olarak düşünebiliriz.

Öncelikle .Net Standard’ı görelim;

.NET Standard Metaphor

Burada incelediğimizde görüyoruz ki, .NET Standard versiyonları lineer bir şekilde gidiyor. Yani bir sonraki versiyon kendinden bir önceki versiyonu implement ediyor ve kendine özgü API’sini de kendi içerisinde belirtiyor.

Şimdi de .NET Framework ve .NET Core kısmını inceliyelim;

Burada da incelediğimiz de .NET Standard 2.0 ‘ın .NET Framework 4.6.1 tarafından tamamen implemente edildiğini , .NET Standard 1.6 ‘nın .NET Core tarafından , .NET Standard 2.0’ın .NET Core 2.0 tarafından implemente edildiğini görüyorsunuz. :)

Bu şekilde anlaşılması daha kolay oldu sanırım :)

Yazım burada sona erdi, umarım faydalı ve anlaşılır bir yazı olmuştur.

Sağlıklı günler dilerim :)

Yardımcı Kaynaklar ;

https://devblogs.microsoft.com/dotnet/introducing-net-standard/
https://github.com/dotnet/standard/blob/master/docs/faq.md
https://docs.microsoft.com/en-us/dotnet/standard/net-standard
https://blogs.msdn.microsoft.com/dotnet/2016/09/26/introducing-net-standard/
https://en.wikipedia.org/wiki/List_of_.NET_libraries_and_frameworks

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

No responses yet

Write a response