Artikel top billede

(Foto: Computerworld)

Nu er .NET-platformen på vej til den store forening

Det er snart slut med flere runtime-udgaver af programmeringsplatformen .NET. Med den nye .NET 5 har Microsoft gjort livet nemmere for udviklere ved at forene det oprindelige .NET Framework med det nyere .NET Core.

Af Michell Cronberg, Alt om Data

Denne artikel er oprindeligt bragt på Alt om Data. Computerworld overtog i november 2022 Alt om Data. Du kan læse mere om overtagelsen her.

10. november 2020 blev en mærkedag i udviklingsplatformen .NETs historie. Her kunne Microsoft langt om længe frigive den helt nyeste version af platformen, .NET 5. Releasen er godt nok uden de store revolutionerende nyheder i de enkelte komponenter, men det er alligevel en stor begivenhed.

Der er nemlig tale om en ret stor ændring af hele .NET-økosystemet, som tidligere har bestået af flere forskellige runtimes med forskelligt formål. Det gamle oprindelige .NET Framework til Windows blev født i 2003, men for nogle år siden blev .NET Core også frigivet, således at der kunne afvikles applikationer på både Windows, Linux og Mac. Til den mobile platform benyttes et tredje framework kaldet Xamarin/Mono. 

Med .NET 5 bliver det første store spadestik taget til en sammensmeltning af de forskellige runtimes. Her kombineres .NET Framework med .NET Core, således at der benyttes samme grundlæggende komponenter. I senere versioner af .NET følger de resterende frameworks, så det kan ende med én udgave af .NET.

Hele ideen med disse ændringer er, at udviklere fremover vil kunne tage udgangspunkt i et samlet framework til udvikling og afvikling af applikationer relateret til desktop, web, mobile, cloud, gaming, IoT (internet of things) og AI (artificial intelligence, kunstig intelligens).

Opdateringer af komponenter

Ud over den overordnede sammensmeltning er der en del opdateringer og tilføjelser til interne komponenter i frameworket. Således er det blevet nemmere at skabe eksekverbare filer til alle platforme, hvor runtime er inkluderet, samt generere mere kompakte containerfiler.

Der er kommet support til Windows ARM64 og Apache Spark, og komponenter som garbage collector (GC) og JIT-compiler er opdateret med bedre performance til følge.

Det nu samlede .NET-klassebibliotek (Base Class Library) er også optimeret, herunder blandt andet JSON-serialisering og funktioner relateret til regulære udtryk, og mange interne metoder er nu endelig tilrettet for at supportere nullable reference types, som blev introduceret i version 8 af programmeringssproget C#.

Transformering af applikationer

Transformeringen af desktop-applikationstyperne WinForm, WPF (Windows Presentation Foundation) og UWP (Universal Windows Platform) til den nye platform er mere komplet. Til gengæld er designene til Visual Studio 2019 muligvis ikke helt færdiggjorte ved frigivelsen af .NET 5 (dette er skrevet før releasen). Selvom .NET 5 er cross-platform kan WinForm, WPF og UWP stadig kun afvikles på Windows.

I web-relaterede applikationstyper er der ikke de store nyheder i MVC eller Razor Pages bortset fra support for HTTP/3, men Microsofts nye Blazor-teknologi (se faktaboks) baseret på webassembly er blevet opdateret. Her er det især udskiftning af det tidligere benyttede Mono-klassebibliotek med det nye fælles klassebibliotek, som er interessant – både set ud fra performance og når det handler om genbrug af kode.

Ordknuser

.NET

En runtime, som gør det muligt at afvikle forskellige typer af applikationer udviklet med blandt andet C# på computere, mobile enheder, internetforbundne enheder, internet osv. 

.NET SDK

SDK (Software Development Kit) gør det muligt at udvikle, fejlfinde og distribuere applikationer udviklet med blandt andet C#.

C# og F#

Programmeringssprog, som kan benyttes på .NET-platformen.

Farvel til Web Forms og WFC

En ting er opdateringer og tilføjelser, men det er også interessant at se på, hvad der bliver efterladt på perronen – og her er både kendte, men også for nogle lidt bekymrende nyheder. 

Det kommer sikkert ikke som den store overraskelse for webudviklere, at Microsofts gamle ASP.NET Web Form-teknologi nu endelig officielt må lade livet. Den bliver tilbage på .NET Framework 4.7, så nu er det ved at være tid til at konvertere de gamle applikationer. Microsoft anbefaler konvertering til Blazor, men der er lidt blandede meninger blandt udviklere omkring Blazor som teknologi.

Nogle er meget glade for den meget effektive og hurtige udviklingsproces, mens andre er lidt bange for, at Blazor som teknologi er for ny og måske især for abstraheret i forhold til mere gennemprøvede og  gennemskuelige applikationstyper som MVC eller SPA baseret på JavaScript frameworks som Angular, Vue eller lignende.

Mere overraskende er det måske, at WCF (Windows Communication Foundation) og WF (Windows Workflow Foundation) også må lide den kranke skæbne at blive droppet ligesom Web Forms. Især WCF kan blive et problem, fordi mange udviklere sikkert havde håbet at kunne konvertere applikationer til den nye generation af .NET.

Microsoft anbefaler, at WCF konverteres til gRPC (se faktaboks) og WF til et open source-projekt kaldet CoreWF fra UIPath. 

Måske farvel til VB.NET

VB.NET (Visual Basic.NET) har i mange år levet et liv på kanten, og nu er programmeringssproget rykket endnu tættere på at blive forladt. Umiddelbart bliver det en del af .NET 5, men Microsoft har understreget, at det er slut med opdateringer til sproget. Hvis det ikke følger med udviklingen i C# og F#, er det jo i praksis en dødsdom, og det betyder, at sproget ikke længere bør blive benyttet til at udvikle nye applikationer. 

Videreudvikling af VB.NET har i mange år været en religiøs, politisk og økonomisk problemstilling for Microsoft, men nu tyder det altså på, at man har taget beslutningen. Det vil dog ikke være første gang, at Microsoft lader VB.NET overleve efter pres fra brugerne – så vi må se, hvad der sker. 

Situationen for C# 9 og F# 5

C# opdateres til version 9 uden de helt store ændringer. De fleste ændringer er mindre optimeringer af syntaks – eksempelvis flere nye måder at foretage patterns matching. Der er dog en feature relateret til immutable datatyper som mange C#-udviklere sikkert hurtigt vil tage til sig.

Det er tilføjelsen af et nyt record-kodeord, som kan bruges til at lade kompileren autogenere en klasse med immutable medlemmer. Det bliver uden tvivl en feature, som kommer til at spare meget tid i udviklingen af simple immutable dataklasser.

F# opdateres til version 5, men ligesom med C# 9 er det uden de store revolutionerende nyheder. Der er blandt andet fundet plads til string interpolation (kendt fra C#), en ny nameof-funktion som eksempelvis kan bruges til validering af argumenter til funktioner eller log, samt mindre opdateringer og tilføjelser.

Samtidig med frigivelsen af .NET 5 har Microsoft forpligtet sig til at frigive en ny .NET hvert år i november.

Således er udviklingen af .NET 6 (november 2021) allerede godt i gang, og her forventes også de mobile platforme at blive sammensmeltet med den nye platform. Du kan selv følge med på GitHub (https://github.com/dotnet).

Den nye runtime og tilhørende SDK kan hentes på https://dotnet.microsoft.com/download, og Visual Studio 2019 og extensions i Visual Studio Code vil automatisk blive opdateret efter lanceringen af .NET 5.

Nye begreber i .NET-verdenen

Hvad er Blazor?

Blazor er Microsofts nye webteknologi og et alternativ til det traditionelle JavaScript SPA-framework.

Teknologien findes i to versioner – en server- og en klientbaseret version. Den serverbaserede version er baseret på afvikling af kode på serveren og en websocket-kommunikation (SignalR) mellem klient og server. Den klientbaserede version er baseret på afvikling af IL-kode direkte i browseren ved hjælp af en specialversion af .NET Runtime kompileret til WebAssembly.

WebAssembly (WASM) er en W3C-standard og er implementeret i alle nye browsere. Begge versioner giver mulighed for at udvikle SPA-applikationer i C# eller F# uden at have kendskab til JavaScript.

Hvad er gRPC?

gRPC er et universelt open source-RPC-framework (Remote Procedure Call) – oprindelig udviklet af Google. Det er en del af Cloud Native Computing Foundation, som igen er en del af Linux Foundation.

Platformen er baseret på en fælles syntaks til definering af interface, autogenerering af skabelonkode til både server og klient i mange forskellige programmeringssprog (herunder C#) og indbygget support for blandt andet log, sikkerhed, load balancing samt kommunikation over HTTP/2.

Dette framework bruges især ved udvikling af microservices, ved ekstern kommunikation i mobile applikationer samt i webudvikling.