Programmering

Hvad er nyt i Microsoft .NET 5

Microsofts kandidat til anden udgivelse af .NET 5 ankom 13. oktober og bragte fusionen af ​​.NET Framework og .NET Core et skridt nærmere færdiggørelsen. Den nye samlede .NET-platform skal være almindelig tilgængelig 10. november 2020.

Microsoft beskriver Release Candidate 2 som en næsten endelig udgivelse og den sidste af to RC'er. En første RC blev offentliggjort den 13. september. .NET 5.0-frigivelseskandidaten kan downloades fra dotnet.microsoft.com.

Højtstående mål for .NET 5 inkluderer levering af en samlet .NET SDK-oplevelse med et enkelt BCL (base class-bibliotek) på tværs af alle. NET 5-applikationer og med support til både native og webapplikationer på tværs af flere operativsystemer. Et enkelt .NET 5-indbygget applikationsprojekt understøtter mål som Windows, Microsoft Duo (Android) og Apple iOS ved hjælp af indfødte kontroller på disse platforme.

Yderligere mål for .NET 5 inkluderer support til opbygning af højtydende skyapplikationer, hurtigere algoritmer i BCL, bedre support til containere i løbetiden og support til HTTP3. .NET 5.0 inkluderer understøttelse af det binære WebAssembly-format via Mono runtime og .NET-biblioteker. Et sæt af annullerede referencetypeannoteringer er også vist.

.NET 5 lover også at give udviklere mulighed for automatisk at finde latente bugs i kode. Andre nye funktioner inkluderer Halvt type, et binært flydende punkt, der optager 16 bits, og samlingstrimning, som trimmer ubrugte enheder for at reducere størrelsen på applikationer. Tilpasset beskæring er også fremhævet. Nyt mønstermatch i C # 9 dækker relationelle, logiske og enkle typemønstre. ClickOnce-implementeringsmuligheden understøttes nu til .NET 5.0 Windows-apps og .NET Core 3.1-apps.

Den nye .NET-platform lover også præstationsforbedringer. En bulletin vedrørende Preview 7, der ankom 21. juli, anerkender omkring 250 præstationsorienterede pullanmodninger i .NET 5 og bemærker, at der er en behagelig overraskelse for dem, der har fulgt .NET Core-ydeevne.

Andre tilføjelser og forbedringer, der er bemærket i .NET 5 Preview 7 bulletin:

  • Den nye System.text.json JSON API giver mulighed for at ignorere standardværdier for værditypeegenskaber ved serialisering, hvilket er nyttigt til at reducere serialisering og ledningsomkostninger. Dette er en brudende forandring. Også tilføjet til System.text.json er evnen til at håndtere cirkulære referencer, når de serialiseres, idet API-form nu forventes at være endelig.
  • Affaldssamling afslører nu detaljerede data om den seneste indsamling ved hjælp af GetGCMemoryInfo metode, som returnerer en GCMemoryInfo struct. GCMemoryInfo serverer information om maskin- og bunhukommelse og den seneste samling eller den seneste samling af den type GC, der er angivet - kortvarig, fuld blokering eller baggrund. De mest sandsynlige anvendelsestilfælde til denne API er logning / overvågning eller for at angive en belastningsafbalancering, at en maskine skal tages ud af rotation for at anmode om en fuldstændig GC. En anden GC-ændring blev i mellemtiden foretaget for at udskyde den dyre reset-hukommelsesfunktion til situationer med lav hukommelse.
  • Ryujit, forsamlingskodegeneratoren til .NET, opnår forbedringer lige fra at muliggøre fjernelse af nogle grænsekontroller til forbedring af halen duplikering og forbedringer til fjernelse af overflødige nul inits. I Ryujit er også ARM64-hardware-iboende egenskaber og API-optimering.

.NET 5 Preview 6, udgivet 25. juni, fjernede indbygget support til WinRT (Windows Runtime), en samling af API'er til opbygning af Universal Windows Platform-applikationer. Dette er en brudende forandring; .NET Core 3.x-apps, der bruger WinRT, skal kompileres igen. .NET- og Windows-teamene har arbejdet på at ændre den måde, WinRT fungerer på med Windows, og erstattet WinRT-understøttelse med C # / WinRT-værktøjskæden i .NET 5. C # / WinRT er et NuGet-pakket værktøjssæt, der tilbyder WinRT-projektionssupport til C #.

Andre ændringer i .NET 5 Preview 6:

  • .NET 5 Preview 6 SDK inkluderer understøttelse af Windows-formularer på Windows ARM64-enheder. Arbejdet fortsætter med at tilføje support til Windows Presentation Foundation på Windows ARM64.
  • Forbedringer af RyuJIT-kodekvalitet dækker strukturhåndtering og optimering for at fjerne overflødige nul initialiseringer. Der er også gjort fremskridt inden for ARM64-hardware-iboende optimering samt med at forbedre genereret kode til ARM64 med reduceret kodestørrelse.
  • Platforms supportplaner er blevet opdateret.

.NET 5 Preview 5, udgivet 10. juni, indeholder følgende nye funktioner:

  • RyuJIT JIT-compileren har en hurtigere, bærbar implementering af tailcall-hjælpere. JIT beder runtime om hjælp, når den indser, at den har brug for en hjælper til at udføre et tailcall. Også for RyuJIT har der været fortsatte fremskridt med implementeringen af ​​hardwareintern ARM64-hardware. Andre forbedringer i RyuJIT involverer bedre hastighed i en sag, der påvirkede kompilering af regulært udtryk og forbedret Intel-arkitekturydelse.
  • Eksport til oprindelige binære filer med opkald til .NET-kode er blevet aktiveret. Byggestenen til denne funktion er vært for API-understøttelse af UnManagedCallersOnlyAttribute. Det oprindelige eksportprojekt muliggør eksponering af tilpassede oprindelige eksport. Det kræver ikke en højere interop-teknologi som COM og er på tværs af platforme.
  • DirectoryServices.Protokol support udvides til Linux og MacOS.
  • Alpine 3.12 Linux-distributionen understøttes nu.

.NET 5.0-frigivelseskandidaten kan downloades fra dot.net.microsoft.com.

.NET 5 Preview 4, udgivet den 19. maj, introducerede følgende nye muligheder:

  • C # 9 og F # 5 sprogstøtte.
  • Forbedret ydeevne for tailcalls brugt af F #.
  • Forbedret ydelse af ToUpperInvariant, string.ToLowerInvariantog relaterede mønstre.
  • Forbedret HTTP 1.1 og HTTP 2 ydeevne.
  • En forbedret opkaldstællingsmekanisme.
  • Dynamisk udvidelse af den interne generiske ordbog for at eliminere præstationsklipper ramt af generisk kode.
  • En fastgjort bunke for at reducere bunfragmentering.
  • Enkelte filapplikationer baseret på en ny enkelt filudgivelsestype, der udfører et program fra en enkelt binær.

Forbedringer i .NET 5 preview 3, afsløret 23. april, inkluderer følgende:

  • BitArray-klassen til styring af en række bitværdier blev opdateret til at omfatte en hardware-accelereret implementering af ARM64 ved hjælp af ARM64-iboende egenskaber. Forbedringer af BitArray-ydeevne er betydelige, sagde Microsoft. Derudover blev On Stack-udskiftning (OSR) i CLR implementeret for at tillade kode, der udføres af aktuelt kørende metoder, at blive ændret midt i metodeudførelsen, mens disse metoder er aktive "på stack." Denne evne til at forbedre ydeevneegenskaber ved trinvis kompilering er nu en eksperimentel opt-in-funktion på x64. En anden forbedring for RyuJIT forbedrer kodekvaliteten for structs som argumenter i "tail call" position opkald. RyuJIT forventes også at tilbyde bedre ydeevne for generiske stoffer.
  • Tilføjelsen af ​​understøttelse til bevarelse af referencer blev føjet til System.Txt.Json, hvilket muliggør håndtering af referencesløjfe til JSON-serialisering. Også uforanderlige klasser og strukturer understøttes nu til JsonSerializer. Nulværdihåndtering understøttes nu.
  • .NET SDK refererer nu automatisk til NETFramework.ReferenceAssemblies NuGet-pakken, der får en .NET Framework-målramme i en projektfil. Denne ændring muliggør opbygning af .NET Framework-projekter på en maskine uden en .NET Framework-målretningspakke installeret. Denne forbedring er specifik for målretningspakker og tager ikke højde for andre mulige projektafhængigheder.

Specifikke forbedringer i .NET 5 preview 2, udgivet 2. april, inkluderet:

  • Der er foretaget en række ændringer i RyuJIT for at forbedre kvaliteten af ​​den genererede maskinkode, herunder dobbelt nul initialisering elimineres mere aggressivt og ugyldige boksoptimeringer påberåbt tidligere.
  • Serveraffaldsindsamling på forskellige tråde kan nu arbejde-stjæle, mens du markerer gen0 / 1-objekter, der holdes live af ældre generations objekter. Arbejde, der stjæler på tværs af tråde, forkorter kortvarige GC-pauser i scenarier, hvor nogle GC-tråde tog meget længere tid at markere end andre. Derudover er en del af funktionen Pinned Object Heap (POH) implementeret, den del, der er intern til affaldssamling, for at tillade samleren at administrere fastgjorte objekter separat. Dette undgår de negative virkninger af fastgjorte objekter på generationsbunke.

Preview 1, der blev udgivet 16. marts, indeholdt forbedringer af ydeevne med regelmæssige udtryk samt forbedringer af kodekvaliteten i RyuJIT.

På grund af en produktionsudgivelse i november 2020 er .NET 5 indstillet til at omfatte:

  • ASP.NET Core, en open source-ramme til webapplikationer.
  • Entity Framework Core dataadgangsteknologi.
  • WinForms.
  • WPF (Windows Presentation Foundation).
  • Xamarin-mobilapp-enhedsmodel.
  • ML.NET.

Microsoft sagde, at .NET 5 vil give en enkelt, samlet platform til opbygning af enhver form for applikation. Virksomheden dirigerer halvdelen af ​​trafikken til sin .NET-webstedstrafik til en .NET 5-version som en testcase ved hjælp af Azure load-balancing.

Microsoft anbefaler, at udviklere bygger nye applikationer med .NET Core 3.1 og derefter migrerer dem til. NET 5. Virksomheden bemærkede, at. NET Framework-applikationer kan være tilbage på. NET Framework, som forbliver understøttet, så længe Windows selv understøttes.