Adam Ralph gav i sin föreläsning på ett föredömligt sätt klarhet i vad .NET Standard är. Microsoft har lyckats göra .NET-communityn ganska konfunderad om vad det är och handlar om. Att det rör sig om ett nytt ramverk tycks vara ett av de vanligaste misstolkningarna. 

 .NET Standard är ett resultat av den utveckling som skett med .NET Framework. I begynnelsen handlade det ju just om ett enda ramverk men 2007 släppte Microsoft Silverlight, kort beskrivet ett subset av .NET. Då och där uppstod behovet av ett sätt att möjliggöra cross plattform genom .NET-baserad kod. Lösningen blev PCL (Portable Class Libraries). Ett PCL definerar intersektionen (av MS definerade som profiler) av API'er mellan två plattformar som på det sätter möjliggör ett binärt kodutbyte. Perfekt eller hur? Nej! Inte med tanke på hur situationen ser ut idag där .NET är en HELT annan värld än den en gång var. Idag har vi ju ungefär följande delar:

  • .NET Framework
  • .NET Core
  • Xamarin.iOS
  • Xamarin.Android
  • UWP
  • Tizen
  • ... 

Adam uttrycker detta målande i ett antal venndiagram. PCL gick från detta:

FullSizeRender.jpg

Till detta:

FullSizeRender.jpg

Förutom Microsofts galna namngivning av profiler, många profiler blir det. Hur många profiler blir det? Adam har räknat på det och visade ett skämtsamt exempel på en tänkbar utveckling:

FullSizeRender.jpg

 

Portable Class Library är trasigt eller som Adam uttrycker det "PCL is a disaster". Det är iaf detta som .NET Standard är tänkt att laga. I stället för en intersektion av API'er mellan plattformarna är .NET standard istället en mängd utvalda API'er som plattformarna sedan får förhålla sig till för att nå en specifik version av standarden. Som API utvecklare siktar man sedan mot en så låg version som möjligt av ett .NET Standard Class Library för att nå ett bredare stöd av över plattformarna. 

FullSizeRender.jpg

Vid kompilering skapas en netstandard.dll som vid runtime används för att genom type forwarding  peka mot korrekt assembly och typ innehållandes den kod som skall exekveras.

Comment